Explorar o código

docs(memory): 记录 #58 四项修正收尾与后端实时报警根因修复 (#58)

Kazerin hai 1 mes
pai
achega
33d79525de
Modificáronse 2 ficheiros con 48 adicións e 0 borrados
  1. 1 0
      memory/index.md
  2. 47 0
      memory/sessions/2026-09-17.md

+ 1 - 0
memory/index.md

@@ -63,3 +63,4 @@ npm run dev       # 默认 http://localhost:80
 - [2026-09-09:water_pipe_info 收尾迁移(E 顺序执行完成,旧表链路全删)](sessions/2026-09-09.md)
 - [2026-09-10:WGS84→BD09 诊断与管理端工单生命周期共识更新](sessions/2026-09-10.md)
 - [2026-09-16:监测报警 GIS 接入统一画布(Ticket #4)](sessions/2026-09-16.md)
+- [2026-09-17:供水首页工作台 #58 四项修正收尾(前端呈现 + 后端实时报警根因)](sessions/2026-09-17.md)

+ 47 - 0
memory/sessions/2026-09-17.md

@@ -0,0 +1,47 @@
+# 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` 澄清。