2026-09-17.md 4.1 KB

2026-09-17:供水首页工作台 #58 四项修正收尾(前端呈现 + 后端实时报警根因)

目标

关闭 T05R / Gogs #58「供水首页工作台四项修正」的最后一段:按用户人工验收反馈,修复实时报警状态、全域态势地图铺满、B 区卡片比例、列表滚动四项问题,并补齐后端实时报警取数根因。

结论与变更

前端(E:\city-life-line)

  • f275f1f(#58 主交付):移除 A/B/C 子标题占位;实时报警按展示状态分流(待审核→报警审核,已转工单→设备维修派单);全域态势改用公共 GIS 画布 GisMapCanvas;工单进展跳转改到设备维修派单(带 keyword)。
  • d5a044e(验收反馈第一轮):normalizeRealtimeAlarmRows 增加展示状态兜底;B 区改用 workbench-grid--equal 三卡等宽;.compact-list 增加 max-height:360px; overflow-y:auto;取数上限从 6/7/8 提到 20。
  • fb03a30(验收反馈第二轮):兜底判定顺序与后端 resolveDisplayStatus 对齐 —— 在办工单优先,其次才是报警已处理/误报解除,避免把「已转工单」误判为「已解除」而从实时列表丢弃。

后端(E:\pipe-ner-server)

  • 72017c3(#58 根因修复):WaterSupplyAlarmServiceImpl.getRealtimeAlarmList() 去掉 .eq(AlarmData::getAlarmStatus, 0) 硬过滤,改为 buildLedgerVoList(alarms) 富化后在 Java 侧排除 displayStatus=3(已解除)。原因是已转工单(存在未取消工单)的报警 alarm_status=1,被原过滤条件整体挡掉,导致首页实时报警全部显示为「待审核」。
  • 同步修正 WaterSupplyAlarmController 的 /realtime @ApiOperation 描述为「待审核/已转工单,已解除不返回」。

关键决策

  • 实时报警的分流口径以「展示状态」为唯一依据,而不是 alarm_status;alarm_status 只作为设备报警状态与兜底推导的输入。
  • 前端兜底的判定顺序必须与后端 resolveDisplayStatus 一致:有未取消工单 → 2 已转工单;否则报警已处理/误报解除 → 3 已解除;其余 → 1 待审核。
  • 后端明确返回 displayStatus 时始终优先,前端兜底仅作用于旧进程/旧产物缺失该字段的过渡期。

文件变更

前端:src/utils/waterHomeModel.js、src/views/subSystem/waterSupply/components/WaterSupplyHome.vue、tests/waterHomeModel.test.mjs、tests/waterSupplyHomeContract.test.mjs。

后端:pipe-network-service/zksy-system/.../WaterSupplyAlarmServiceImpl.java、.../WaterSupplyAlarmRealtimeContractTest.java、pipe-network-service/zksy-admin/.../WaterSupplyAlarmController.java。

验证结果

  • 前端:node --test tests/*.test.mjs 157/157 通过(net/新增:兜底推导、在办工单优先、已取消工单不视为已转工单、B 区等宽、列表滚动、地图铺满契约);vite build --logLevel error 通过(仅既有 Sass 弃用告警)。
  • 后端:WaterSupplyAlarmRealtimeContractTest 先红(2 失败)后绿,4 用例通过;mvn -pl pipe-network-service/zksy-system test 141/141 通过;mvn -o -pl pipe-network-service/zksy-admin -am compile 通过。
  • 数据库口径(KingbaseES 实库核对):待审核 alarm_status=0 有 7 条,已转工单 alarm_status=1 有 5 条 —— 修复前这 5 条完全不在实时列表内,修复后应同时出现在首页。

风险与后续

  • 本地后端进程(PID 24724,09:13 启动)为修复前产物,需重启后端(或依赖 devtools 热重启)后首页实时报警才会出现「已转工单」行;验收需重启后复测。
  • 该项属 T05R 修复范围,不触碰 #51(运行系统清警能力缺失)与 #50(报警与设备 service 收敛)。
  • 前端两仓均只提交未推送;用户确认人工验收通过后再推送并关闭 Gogs #58。

未决

  • #58 待用户人工验收(重启后端 → 首页实时报警出现「已转工单」→ 点击跳转设备维修派单)。
  • 报警管理页「设备报警状态 vs 报警展示状态」矛盾观察项,转入 #51 范畴,后续用 /grill-with-docs 澄清。