map.md 8.3 KB

驾驶舱真实后端数据接线(决策地图)

Status: open Labels: wayfinder:map

本 effort 先产出跨前后端真实数据接线所需的决策,再为已收口的决策创建前端/后端执行票。地图不直接修改后端代码;后端执行票需在后端仓库、负责人和权限明确后开启。

Destination

为 /cockpit 四个只读一级模式建立一条可验收的真实数据接线路线:报警—工单闭环读模型 → 地图摘要 + 运行监测 → 基础设施 → 预警处置 → 总体概览。报警—工单阶段由外部业务系统执行工单流程,驾驶舱只读取并实时呈现真实报警、工单关系和状态,不提供任何写操作。

目的地达成的判据:后端契约与真实适配器已提交并通过测试,前端 real 生命周期与 mock 同构,真实联调基线(提交版本、环境、认证、只读数据源)已锁定,筛选/分页/快照/推送/空态/失败态语义通过验证,并完成真人团队的真实设备报警闭环验收;real 失败不回退 mock。

Notes

  • Domain:城市生命线 Web 驾驶舱。术语以 CONTEXT.md 为准;监测点、监测设备、地图摘要、快照、异常点不可混用。
  • 复用现有事实台账:后端契约缺口待办 及其 后端契约缺口交付包。后端 Gogs 真实数据接线(程序级)作为上位来源,但不作为唯一笼统执行票;后续按切片拆分粒度明确的后端票,并注明承接关系。
  • 已确认推进顺序:报警—工单闭环读模型 → 地图摘要 + 运行监测 → 基础设施 → 预警处置 → 总体概览。
  • 首阶段由外部业务系统完成工单流程,驾驶舱只读消费报警、工单、设备和监测点关系;后端拆为工单状态与处置率读模型、报警/工单回联读模型、实时同步三票,前端另建对应迁移/接线/实时消费票。
  • 已确认运行策略:默认 mock;real 必须由部署配置显式开启;真实请求失败只影响对应分区,不回退 mock,也不牵连其它分区。
  • 已确认业务口径:处置率 = 状态 5(已结案)工单数 / 状态 0–6 工单数,状态 7(取消)排除;数据库 create_time → Java createTime → API createdAt → 前端“数据时间”;maintainer、district、ownership_unit 各自保持字段语义,历史“责任区域”不属于本次目的地。
  • “异常”允许按监测点、监测设备/指标分别统计各自异常集合;预警处置地图的“异常点”仍只由设备 WARNING/ALARM 回联决定,不因统计总称扩大可见范围。
  • 驾驶舱鉴权范围已修订为只读 REST /api/cockpit/v1/** 与 WS /ws/deviceStatus 不鉴权;后端其他路径与未来写接口不受此变更影响。权威记录见旧鉴权决策与 ADR 0005,票 25 承接后端执行证据。
  • 技能:grilling、domain-modeling、research;决策票逐张处理,决策完成后再创建执行票。
  • 本地 tracker 仅支持 Markdown 的 Blocked by: 依赖表达,没有独立原生建边接口;本图按 tracker 规则落依赖并在建图后校验数量。

任务清单

Decisions so far

  • 01: 报警—工单闭环读模型与 Gogs 票拆分边界 — 首阶段只读消费外部业务系统的报警/工单真实关系与状态;后端拆为工单状态与处置率、报警/工单读模型回联、实时同步三票,前端另建三票;真人团队的真实设备报警闭环是阶段总收口。
  • 02: 地图摘要状态筛选与未关联设备语义 — 行业/范围/类型=设备级匹配、点位 OR 归并;状态筛选对监测点按聚合六态、对未关联设备按设备状态词表各自匹配;「无关联设备」桶=只看该类对象;pointStatus 多值(含 UNKNOWN/UNASSOCIATED);顶部状态栏=全局组合筛选入口(八桶 OR,计数为全局未筛全集);饼图共用同一份分布;坐标汇总按筛选后口径;移除加载下一页、自动分批加载,右上角留 🔄 手动刷新;刷新时机=筛选变化/新鲜度 tick/WS 增量。

Not yet specified

  • 首批真实接线完成后,基础设施四个面板各自需要哪些真实适配器、district/ownership_unit 的筛选与展示边界,以及井盖(MANHOLE)跨端是否已可用。
  • 预警处置的事件读模型、设备异常回联、时间线展示与处置率聚合在真实后端中的切片拆分和数据稀疏降级。
  • 总体概览缺失的前端面板实现、聚合端点与其对基础设施/运行监测/预警处置的复用关系。
  • 后端真实数据库快照中坐标校验、设备—监测点关联稀疏和空数据的最终演示样本。

Out of scope

  • 登录、权限管理、工单处置等写操作。
  • 将历史“责任区域”验收文字复活为本次字段,或用 district、industry、maintainer 冒充责任区域。
  • 用前端本地过滤替代后端 map-snapshot 的状态筛选;不得把未加载分页的数据静默删掉。
  • 失败时静默回退 mock,或把 mock 走查结果当成真实后端联调证据。
  • 重写既有 mock 面板、模式词典、地图/相机决策和已关闭的前端实现票。
  • 移动端、写操作业务、UE5、Docker、国产化认证及非驾驶舱领域。

Current status

02/6 决策票已解决。 首阶段(报警—工单闭环读模型)与地图摘要状态筛选已收口;驾驶舱只读 REST/WS 免鉴权范围已落地(未提交,待票 05 登记基线复验)。下一步可按 frontier 处理 03、04、06;05 仍依赖 04。

2026-09-28 追加(免鉴权已落地,未提交):免鉴权范围已按 ADR 0005 修订实现——后端(E:\pipe-ner-server 工作树):SecurityConfig 放行 GET /api/cockpit/v1/**、24 个 cockpit 控制器移除方法级认证、WS 协议注释与手册对齐"cockpitSubscribe 直订无需 authenticate"(authenticate 帧保留给管理端工单推送);新增 CockpitAnonymousAccessSecurityConfigTest 等回归。前端(本仓库):cockpitApi 不再发送 Authorization,runtimeSocket open 后直接 cockpitSubscribe(无 authenticate 帧)、token 链路下线,mock/文档/验证脚本同步。验证:前端 t15 43/43、t04、t08 通过;后端改动未跑 Maven,且前后端均未提交——票 05 的联调基线只需补提交哈希/环境/数据快照,但免鉴权的真实 HTTP/WS 复验(无凭据 200、WS 直订)须在部署后进行。落地明细见 票 25 第十五轮。

后端最新基线(2026-09-28):E:\pipe-ner-server 的 HEAD=origin/master=355a8af。后端手册记录本机 127.0.0.1:8301 已完成认证 HTTP/WS 主要验收:401/400、同一 snapshotAt 多页稳定、点位详情与设备详情链路、主要只读端点和 cockpitSubscribe 均有证据;目标部署 192.168.110.30:8301 仍不可达,因此地图目的地的“真实联调完成”尚未达成。

票 25 已同步为本图入口和历史契约台账,最新事实见 25: 后端契约缺口待办 与 交接包。下一步处理 02、03、04、06,明确地图状态筛选、数据时间、real 生命周期和跨模式业务语义;05 仍依赖 04;不把本机 HTTP 证据或未提交工作树直接当作目标部署完成。