05-device-point-layer-trigger-and-lifecycle.md 7.5 KB

设备点位图层的触发、生命周期与「关联设备不上图」的裁决

Type: grilling Status: resolved Labels: wayfinder:grilling Blocked by: None

进度:100%

本票的讨论与取舍已由维护者确认;resolved 表示决策完成,不表示设备图层或模式矩阵已经实现。设备级坐标契约仍由票 09 推进,视觉、拾取与重叠设备分别留给票 06、07、10、11。

下一步:本票结论已由 /to-spec 固化为同一张 map 的14 号关联监测设备图层规格;现有 spec.md 继续属于票 03,未覆盖。后续实施须接入 deviceCodes、取得后端设备坐标与校验契约或采用已定清单降级,并在接线时更新旧源码注释。全图模式矩阵的其余图层由票 13 另行裁决。

Question

需求②希望在选中监测点后展示该点下所有关联监测设备的位置,与已关闭实现票 10 的“关联设备不作为独立地图标记重复渲染”及其当时的结构性保证冲突。本票裁决默认摘要标记与选中态关联设备图层的边界、触发和生命周期,并确保分页、快照、图例和计数不混用。

Answer

目标与边界

  • 用关联监测设备图层命名选中监测点后出现的独立临时显示层;它不是新的“设备点位”业务对象。默认地图摘要仍是监测点与未关联设备的分页序列,关联监测设备不写入该序列,也不改未关联设备已有的独立十字标记和直接打开设备详情的行为。“关联设备不上图”只约束默认摘要标记计划,不禁止选中后临时显示。
  • 地图标记或监测点台账卡片选中同一个监测点,均自动启动镜头定位与关联设备加载,二者并行;不增加“展开设备”操作,也不等镜头停稳才显示可上图设备。设备标记拥有独立的 deviceCode 与所属 pointCode 拾取身份,不冒充监测点标记。具体形状、尺寸、贴地与重叠点选择由票 06/10/11 裁决。
  • 本票只定该图层随一级模式变化的规则。总体概览、运行监测显示所选监测点全部可上图关联设备;基础设施隐藏该图层;预警处置只显示设备自身状态为 ALARM/WARNING 的关联设备,不借监测点聚合状态推断。设施、事件等其余图层的全图模式矩阵由票 13 裁决,不能把本票说成已实现整张图。

风险与数据前提

  • map-snapshot 的点位 deviceCodes 能列出该点关联设备(含离线、不受摘要分页影响),但当前前端适配器尚未读取;点位详情设备卡片还没有设备级坐标与校验,票 09 负责推进后端契约。后端未给设备坐标时保留清单并如实标“位置待确认/不可用”,不能以监测点坐标冒充设备位置,也不能人工偏移。只有后端设备级 coordinateValidation.renderable === true 且坐标可用时才可上图。
  • 地图快照的 snapshotAt 只锁同一次地图分页;点位详情请求不携它、也可能复用缓存。因此采用尽力展示并明确提示“设备位置可能与当前快照不同”,不宣称跨端点同版。关联总数以当前快照该点去重后的 deviceCodes 为准;清单尚未到达或缺失时显示“待确认”,不拿详情统计或卡片数冒充总数。若快照是 [A,B]、详情是 [B,C]:B 正常展示,C 卡片标“与当前快照不一致,不能上图”,A 以编码占位并标“设备详情待确认”;设备图层只考虑 A、B,同时提示跨端点数据不同步。无法确认设备归属时不上图。
  • 现网历史只读记录为 7 个监测点、2 个点带设备、共 3 条有效关联,没有保留逐点原始行,不能推成单点设备台数上限;10/50/200 等仅为性能推断。默认显示所有坐标准入有效且属于当前模式的关联设备,不静默截成前 N 台或只画异常(预警处置的模式筛选除外)。真规模超预算后的聚合与“还有更多”由票 11 决定,被聚合或未实际绘制的设备不得虚报为逐台已上图。

触发、生命周期与选项取舍

  • 选择选中态临时图层,不采用“永远不上图”或“关联设备全局常驻”。关闭详情立即收图层但不回退镜头;从监测点 A 换成 B 立即撤下 A、只加载 B,丢弃 A 的迟到结果。同一 snapshotAt 翻下一页只增加摘要对象,不重建当前设备图层,也不把关联设备计入摘要分页数量。
  • 手动刷新、快照失效后重启或全局筛选重载时,保留选中身份与详情,先撤下旧设备;新快照中找到该点后重新取设备。第一页没找到不等于点不存在:后台沿同一快照逐页查找,直至找到或完整结束;地图仍渐进显示。查找失败保留“待确认”并允许重试,完整结束仍无该点才关闭详情;不能仅凭摘要合并态最近 2000 个对象的保留护栏判其不存在。台账先选到尚未加载进地图的点时也先定位并开详情,设备图层待当前快照核对后再展开;完整加载确认不在当前筛选范围时关闭详情并说明原因。
  • 一级模式切换只调整图层可见性与选择态,Cesium Viewer 常驻,不因此换地图快照。三个分项之间互切清空选择并收图层;总体概览与任一分项互切保留选择身份,但目标模式不显示所选点时暂停详情及设备图层,切回总览且该点仍在当前范围时恢复,相机不回退。这是 ADR 0005“切换页面保留选中”的显式一级模式例外;状态刷新和 WebSocket 更新的原有保留规则继续有效。

图例、计数和后续记录

  • 默认摘要的八行点位状态/未关联设备图例、data-map-markers* 与“点位标记”数,后续仅统计当前模式实际可见的摘要标记,不计关联设备。关联监测设备另设图例,只统计当前模式实际已绘制的设备;设备状态视觉规则由票 07/10 决定,不将监测点六态词表直接当作设备状态。
  • 当前快照确认的关联设备按互斥原因分成模式隐藏、实际已上图、后端明确无地图位置、位置/状态/绘制待确认或失败,合计解释去重的关联总数。坐标契约缺失、加载中、请求失败和引擎绘制失败均不可算成“已上图”或“明确无位置”。预警处置里设备状态未知时暂不上图,归“待确认/失败”,不猜成正常、报警或“因模式隐藏”;无效坐标设备保留在清单并给明确原因。原始设备清单完整保留,即使模式只画其中一部分。
  • 已关闭的实现票 10与点位图例票 09已补记未来语义,不追认当时已交付关联设备图层;ADR 0005已同步模式切换例外。detailFlow.js 与 MapCanvas.vue 中绝对化的“地图对象永远只来自摘要”等注释,在后续设备图层接线时按本票同步修改;当前代码尚无该图层,不提前写成已实现。跨图层模式矩阵由同 map 票 13 留存。