10-point-device-marker-spec.md 13 KB

10: 监测点与监测设备位置符号规格

Type: spec Status: ready-for-agent Label: ready-for-agent Blocked by: 05 Category: spec

本规格固化监测点与监测设备位置符号映射的讨论结论,作为同一张蓝湖正式素材替换地图的子规格单。100% 仅表示规格交付,不表示正式素材、合成计划层或锚点改造已经实现。

Problem Statement

驾驶舱当前的地图位置符号是内联 SVG 几何形状(八种通用图形 + 十字),只能表达「点位状态」与「设备状态」两个维度。设计交付要求的是带徽标观感的位置符号(水滴形母版 + 行业/设备类型图标),同时既有已锁纪律要求状态不能只靠颜色区分。

如果直接把彩色成品切图接上来,会同时打破两条既有约束:色值只在 tokens.css 声明一份(成品色与现有语义色实测无一相同),以及监测点恒大于设备的尺寸层级。而水滴母版自带尖端,其视觉语义是「指向地面上的这个点」,与现有中心锚定的实现冲突——若不同步改,尖端会悬在真实坐标上方。

此外,「无设备的监测点」(后端状态 EMPTY)与「未关联设备」是两个不同业务对象,当前分别使用空心方块与十字,需要在新素材体系里各自找到不混淆的表达。

Solution

正式位置符号采用双层水滴徽标体系:

  • 外层母版承载状态色,由运行时按状态注入;内层图标承载行业/设备类型。状态区分继续由形状与文字标签承载,颜色不是唯一线索。
  • 只使用纯白平面剪影母版(实心版与镂空版),其余彩色成品不作为状态色来源,色值仍唯一来自 tokens.css。
  • 母版为实心版时用于监测点与关联监测设备,镂空版用于无设备的监测点与未关联设备;「无设备的监测点」不使用内层图标。
  • 内层图标保留可识别性但降饱和降亮度,避免与状态色争夺注意力。
  • 锚点改为尖端锚定,水滴尖端落在真实地理坐标点;尺寸基准改为宽度,保持「监测点恒大于设备」。
  • 监测点标记新增报警态扩散环特效(补裁既有未决项),受特效开关门控。

User Stories

  1. 作为值班人员,我想让地图上的位置符号是正式设计素材,以便大屏观感符合交付标准。
  2. 作为值班人员,我想从符号外形与文字读出监测点状态,以便即使色觉受限也能判断状态。
  3. 作为值班人员,我想从符号内层图标看出该对象所属行业,以便快速理解这是燃气还是供水点位。
  4. 作为值班人员,我想从符号内层图标看出设备类型,以便不展开详情也能分辨设备种类。
  5. 作为值班人员,我想监测点比监测设备更大,以便在密排场景下仍能分辨对象层级。
  6. 作为值班人员,我想尺寸层级在任何缩放倍率下都不反转,以便镜头拉近拉远不会误导层级判断。
  7. 作为值班人员,我想水滴尖端精确指向地面上的真实坐标,以便点击定位与面板锚定的位置可信。
  8. 作为值班人员,我想未关联设备在视觉上区别于已关联设备,以便知道这台设备没有归属点位。
  9. 作为值班人员,我想未关联设备仍然显示它自己的设备状态,以便不会把「无归属」误读成「无状态」。
  10. 作为值班人员,我想无设备的监测点在视觉上区别于离线点位,以便区分「这个点位没有设备」与「设备离线」。
  11. 作为值班人员,我想无设备的监测点不显示任何设备图标,以便不会被误读成「这里有一台设备」。
  12. 作为值班人员,我想内层图标降低饱和度与亮度,以便它不会与状态色争夺注意力。
  13. 作为值班人员,我想报警点位的标记出现扩散环,以便最高优先级状态在密排点位中最先被看到。
  14. 作为值班人员,我想预警与工单点位标记保持静态,以便视觉预算集中在报警上。
  15. 作为值班人员,我想特效可以被配置关闭,以便生产环境不会被动画压满屏。
  16. 作为值班人员,我想关闭特效后状态仍可读,以便降噪不会牺牲状态表达。
  17. 作为值班人员,我想特效随雾气衰减而不穿透,以便远景特效不会浮在雾上方。
  18. 作为值班人员,我想图例中的形状与地图标记一致,以便对照图例时不会出现两套说法。
  19. 作为值班人员,我想详情卡片使用与地图标记相同的状态语义,以便面板与地图不出现分裂。
  20. 作为值班人员,我想重叠设备的聚合符号带计数,以便知道这一处有几台设备。
  21. 作为值班人员,我想选中态仍显示外环与引线,以便资产替换没有改变我已熟悉的交互。
  22. 作为值班人员,我想悬停或选中设备时看到名称为主、编码为辅,以便核对具体设备。
  23. 作为值班人员,我想点击标记时的定位仍然准确,以便尖端锚定没有破坏既有定位体验。
  24. 作为值班人员,我想面板锚定跟随仍然贴合可见标记,以便详情窗不会指向错误位置。
  25. 作为值班人员,我想点位数量很多时标记仍然可辨,以便县域级视图不会被图形糊成一片。
  26. 作为维护者,我想正式素材通过统一语义入口消费,以便替换素材不必改动地图绘制与图例两处。
  27. 作为维护者,我想母版与内层图标都被资产清单登记,以便追溯每件素材的来源与状态。
  28. 作为维护者,我想尺寸基准从边长改为宽度,以便横向占位与既有断言面保持对齐。
  29. 作为维护者,我想锚点偏移作为素材属性登记,以便多个消费方从同一处读取而不各自目测。
  30. 作为维护者,我想既有按中心锚定建立的断言被同步更新,以便不会留下「改完还是绿的」假象。
  31. 作为维护者,我想无设备点位与未关联设备的既有视觉口径被就地修订,以便不留两套并存说法。
  32. 作为维护者,我想降饱和降亮度的具体参数由实现与走查校准,以便观感有真实依据而不是凭空设定。
  33. 作为验收人员,我想从外部可观察行为验证符号、尺寸、锚点与降级,以便不依赖内部实现细节。
  34. 作为验收人员,我想确认临时几何形状没有被当作最终视觉验收通过,以便正式素材替换不被跳过。
  35. 作为验收人员,我想确认内层图标在真机大屏上可辨,以便双层结构不会因为图标过小而失去意义。

Implementation Decisions

  • 新增位置符号合成计划层作为唯一新接缝:输入对象种类、状态、行业或设备类型与修饰(未关联、无设备、选中、聚合),输出完整合成计划。所有消费方不再自行拼装母版、内层图标、尺寸与锚点。
  • 合成计划输出包含:外层母版选型、内层图标选型与是否使用、尺寸、锚点偏移、内层图标几何、着色策略与降饱和标记。
  • 母版与内层图标的归属:监测点与关联监测设备使用实心母版;无设备的监测点与未关联设备使用镂空母版。无设备的监测点不使用内层图标。未关联设备使用其行业图标。
  • 着色分界:色相为运行时状态色,仍只由 tokens.css 声明一份并经服务层读取后注入;母版自带明度与发光结构。其余彩色成品母版不作为状态色来源。
  • 尺寸基准改为宽度:监测点宽 18、设备宽 14;高度按母版实测比例换算(约 22.6 与 17.6)。「监测点恒大于设备」的关系在所有允许的相机距离与配置范围内成立。
  • 锚点改为尖端锚定:水滴尖端落在真实地理坐标点。锚点偏移作为素材属性登记,与尺寸基准一并由合成计划层产出,供地图标记、设备符号与聚合符号同源读取。
  • 内层图标几何:直径约为母版圆形区域的 60%,圆心对齐圆帽中心而非画布几何中心,留一圈底色作分隔。
  • 行业与设备类型图标保留可识别性但降饱和降亮度;降饱和只作用于饱和度与亮度,不改变状态语义。
  • 监测点级特效:仅报警态出现扩散环,预警与工单等其余状态保持静态;受既有特效配置门控,沿用「随雾衰减、不穿雾」的既有裁定。设备级特效契约不变。
  • 监测点级特效不设数量降级,但实现必须实测同屏监测点规模并保留可调阈值入口;若实测发现同时报警点位规模过大,回讨论票补裁阈值。
  • 交互态(选中外环、引线、压暗弱化、聚合展开)继续由既有渲染层叠加实现,不索取交互态切图;交互态视觉只作参数依据。
  • 图例与详情继续使用轻量渲染,只要求形状语义与色键与地图标记同源,不直接渲染带辉光的重素材。
  • 聚合与重叠符号使用同一份母版加程序绘制的计数徽标,不单独索取聚合素材。
  • 标签沿用既有规则:名称为主、编码为辅、不显示经纬度、默认不显示长文本;资产替换只改标记图形。
  • 既有已锁口径的就地修订:无设备的监测点不再使用空心方块几何形状;未关联设备不再使用十字标记;尺寸层级与定位锚点的具体数值口径被取代。层级关系、拾取身份、状态语义、选中反馈与面板联动契约不变。
  • 母版与内层图标均需作为资产清单条目登记来源、状态与回退关系,通过统一语义入口消费,不在组件或引擎中散落物理路径。

Testing Decisions

  • 好测试只断言外部可观察行为:给定对象种类、状态与修饰,合成计划产出确定的母版、内层图标、尺寸与锚点;不测试内部函数调用顺序或私有字段。
  • 纯逻辑测试覆盖:实心与镂空的归属正确;无设备的监测点不使用内层图标;未关联设备使用行业图标;任何允许缩放下监测点尺寸恒大于设备;宽度基准换算出的高度符合母版比例;锚点比例与内层图标帽心对齐、直径比例确定;着色策略与降饱和标记确定。
  • 资产解析测试覆盖:母版与内层图标经统一语义入口解析,未登记素材走既定回退,不出现散落物理路径。
  • 宿主观测测试覆盖:外部读数可观察合成结果的母版种类、内层图标、锚点偏移与降饱和标记,从而无需读取渲染内部状态。
  • 真实页面走查覆盖:尖端落在真实坐标点;尺寸层级不随缩放反转;图例形状与地图标记一致;无设备的监测点与未关联设备确实走镂空路径且彼此可辨;报警态扩散环确实在动而预警与工单保持静态(动画证据需取自跨帧变化或真实帧差,不采用两份数据互比的恒真断言);关闭特效后状态仍可读。
  • 锚点口径迁移是硬要求:既有按中心锚定建立的投影与走查断言必须同步更新,并需以对抗方式确认更新后的断言确实能失败,避免留下「改完仍是绿的」假象。
  • 复用既有先例:点位状态与图例的纯逻辑断言、设备资产的合成与降级断言、设备图层的宿主观测读数、以及真实鼠标点选与相机定位走查。规格阶段只写验收契约,不运行构建、开发服务器或浏览器调试。

Out of Scope

  • 真三维设备模型的制作、采购、授权与接入;本规格只覆盖二维位置符号。
  • 蓝湖画板逐项盘点、字体授权与回退、视觉 token 映射、资产清单与版本策略;分别由对应规格票负责。
  • 城市体块、地形、影像与三维瓦片。
  • 点位状态与设备状态的词表本身、状态筛选、拾取身份、定位数值、聚合与重叠策略、面板锚定契约的重新定义。
  • 未知状态与降级的既有语义;本规格只替换视觉承载。
  • 生产部署、对象存储采购与具体性能数字的固定。

Further Notes

  • 本规格的唯一决策来源是讨论票 05 的 ## Answer;决策票 07 的监测点级特效未决项已在该票补裁。
  • 三处既有已锁口径已在原票就地修订,本规格不重复其原值,避免出现两套并存说法。
  • 降饱和降亮度的具体参数属观感问题,由实现与人工走查校准,但不得降到看不出状态。
  • 内层图标在真机大屏上的可辨性需走查确认;若不可辨,回讨论票补裁尺寸或图标简化方案。
  • 当前项目规则要求修改代码后不得自动运行构建或调试命令;实现阶段需由用户明确要求后再执行验证。