48-untitled.md 3.6 KB

前端执行票 —— 一张图正下方居中持久显示管线颜色图例

Label: ready-for-agent Category: frontend-execution

来源

维护者 2026-10-15 在票 46 收口时新增反馈第 3 条(原话): 「添加对应管线颜色的图例在一张图正下方居中持久显示:● 燃气 ● 供水 ● 污水 ● 雨水 ● 窨井(用颜色区分)」

范围

  1. 位置与形态:在中央「一张图」正下方、水平居中新增一条管线颜色图例,持久显示 (不随模式切换/筛选/悬停消失;与一张图顶部既有的状态图例是两条不同的东西,不合并、不互相替换)。
  2. 颜色必须与地图管线同源:色值取自 domain/pipeVisual.js 的 PIPE_PALETTE (燃气 #ff3b52 / 供水 #168bff / 污水 #29e36c / 雨水 #00e5ff / 窨井 #b36bff), 经 pipeColorKey(row) 决定某条管线落哪个桶。不在图例里另抄一份十六进制 —— 抄了就有两处真相,改色时地图与图例必然漂移(本仓反复付过学费的那类缺陷)。
  3. 词条:维护者点名五个(燃气/供水/污水/雨水/窨井)。PIPE_PALETTE 实际另有两桶 DRAINAGE_UNKNOWN「排水(雨污等级未识别)」与 UNKNOWN「未分类」,色值 #aab7c4, 地图上真的会画出这两种颜色(管网 network_level 缺失或脏值时)。 → 实施时按「图例必须覆盖地图实际会画出的颜色」这条判据决定是否一并列出, 并把结论写进票面;若要省略,必须同时给出"用户看到灰线却查不到含义"的处置办法, 不得静默丢掉。
  4. 不只有颜色:延续票 06/09 的立场(色盲、打印、灰度大屏仍要读得出), 每个色块同时带文字;建议带该桶的管线条数(真实计数,缺失不补 0)。
  5. 窄屏/低精度形态:图例不得遮挡管线本体,不得撑破画布;换行居中而不是横向溢出。

非目标

  • 不改后端契约、不新增写操作。
  • 不改管线颜色口径本身(PIPE_PALETTE/pipeColorKey 的判定逻辑不在本票范围)。
  • 不动一张图顶部的状态图例与状态筛选入口(决策 02 冻结的全局组合筛选入口,必须常驻可点)。
  • 不做图例点击筛选(本票只是"颜色 → 含义"的读数;要筛选另立票)。

验收

  • 零依赖逻辑闸门:图例行的色值与 PIPE_PALETTE 逐字节同源(断言取的是同一对象,不是复制值); 词条覆盖 pipeColorKey 的全部可能返回值;计数缺失时不画 0。
  • 浏览器走查(需维护者明确授权后执行):五个色块出现在一张图正下方居中、持久显示; 切模式/筛选/悬停不消失;色块颜色与地图上对应管线一致。
  • 按 AGENTS.md,不自动运行 build/dev/走查。

关联

  • 单源:domain/pipeVisual.js(PIPE_PALETTE / pipeColorKey); 消费侧参考:services/cesiumPipeLayer.js(visualColor() 就是拿它上色)。
  • 落点候选:CockpitShell.vue 的 cockpit-shell__map 底部带(既有 cockpit-shell__map-summary 底部摘要条与之共存,需避让或并入,实施时定)。
  • 上游:票 24(设施点位与管线真实几何图层接线)、票 32(管线构件 glTF 与 network_level 分色)。

进度

Status: ready-for-agent Type: task Blocked by: Labels: ready-for-agent, frontend-execution, wayfinder:task

Comments

Answer