T6-water-device-handoff.md 4.6 KB

T6 供水设备准入、台账与异常态势 · Handoff

目标

继续完成 Gogs Issue #10 / T6“供水设备准入、台账与异常态势”。当前对话已经完成后端与前端的主要实现,剩余工作集中在测试补齐、全量验证、两轴代码审查和提交。

仓库与当前状态

  • 后端仓库:E:\pipe-ner-server
    • 分支:master
    • 状态:ahead 1
    • T6 相关改动已暂存,另有多处无关脏文件;不要清理或覆盖。
  • 前端仓库:E:\city-life-line
    • 分支:master
    • 状态:ahead 10
    • T6 相关改动仍在工作区,尚未暂存;同样存在无关脏文件,不要清理或覆盖。

已完成的核心工作

后端

  • WaterSupplyDeviceServiceImpl
    • 通过 equipmentBaseService.findByTopLevelType("供水") 统一执行供水设备准入。
    • 设备状态、在线状态、报警状态分别建模,不再互相替代。
    • 异常原因来自有效报警或维修状态。
    • 关联工单使用真实 order_no,并映射为 relatedWorkOrderNo、relatedWorkOrderStatus、relatedWorkOrderPerson。
    • 异常页只关联“未结案的故障维修工单”。
  • WaterSupplyDeviceService / WaterSupplyDeviceServiceImplTest
    • 补齐供水过滤、空数据、状态分离、异常原因、关联工单、报警等级筛选等测试。
  • 控制器与导出
    • DeviceLedgerController、DeviceAbnormalController 已支持分页、筛选、Excel 导出。
    • 新增 WaterDeviceLedgerExportDTO、WaterDeviceAbnormalExportDTO。
    • 对应控制器测试已添加。
  • 测试数据
  • 测试数据统一由 pipe-network-service/sql/water_supply_monitoring_alarm_rebuild_test_data.sql 重建(原 water_supply_device_test_data.sql 已随 #56 退役),覆盖真实供水类型 11/12/14 下的设备、正常/报警/维修/离线状态、异常原因与真实工单编号。

前端

  • src/views/subSystem/waterSupply/components/WaterDevicePage.vue
    • 台账页聚焦资产信息。
    • 异常页聚焦异常态势、异常原因、处置状态、关联工单。
    • 展示设备状态、在线状态、报警状态、报警等级、异常原因、关联工单号、工单状态、接单责任人。
    • 详情使用右侧抽屉。
    • 导出改为 Blob 下载并处理 JSON 错误。
  • src/utils/waterSupplyUiModel.js
    • 统一设备行归一化,明确区分 currentStatus、onlineStatus、alarmStatus、alertLevel、abnormalReason、relatedWorkOrderNo、relatedWorkOrderStatus、relatedWorkOrderPerson。
  • src/api/pipeNetwork/waterSupply.js
    • 设备台账和异常设备导出接口改为 responseType: 'blob'。
  • 测试
    • 更新 tests/waterSupplyUiModel.test.mjs
    • 新增 tests/waterDeviceExport.test.mjs

剩余工作

  1. 补一个 relatedWorkOrderPerson 的测试,mock ISysUserService,确认多个接单人可映射为昵称并用“、”连接。
  2. 后端运行:
    • mvn -q -pl zksy-system "-Dtest=WaterSupplyDeviceServiceImplTest" test
    • mvn -q test
  3. 前端运行:
    • node --test tests
    • npm run build:prod
  4. 按两轴完成代码审查:
    • Standards:检查是否符合 CONTEXT / ADR / 设计规范。
    • Spec:检查 T6 验收标准是否完整覆盖。
  5. 只暂存 T6 相关文件,分别提交后端与前端仓库;不要推送、不要合并。

参考文档

  • 交付规格:E:\pipe-ner-server\docs\superpowers\specs\2026-08-27-water-supply-subsystem-e2e-delivery.md
  • 后端上下文:E:\pipe-ner-server\CONTEXT-MAP.md
  • 后端领域文档:E:\pipe-ner-server\pipe-network-service\CONTEXT.md
  • 前端上下文:E:\city-life-line\CONTEXT.md
  • 前端设计规范:E:\city-life-line\docs\design\2026-08-22-water-supply-work-order-ui.md
  • ADR:
    • E:\pipe-ner-server\pipe-network-service\docs\adr\0003-water-supply-subsystem-product-boundary.md
    • E:\pipe-ner-server\pipe-network-service\docs\adr\0004-cross-system-unified-work-order-lifecycle.md
    • E:\pipe-ner-server\pipe-network-service\docs\adr\0005-independent-frontend-backend-contract-gate.md
    • E:\pipe-ner-server\pipe-network-service\docs\adr\0006-work-order-attachment-storage.md
    • E:\pipe-ner-server\pipe-network-service\docs\adr\0007-shared-pump-station-by-type.md

环境注意事项

  • 当前机器的 Windows 沙箱助手曾出现 helper_unknown_error: setup refresh had errors。
  • 使用 require_escalated 可以绕过该问题并正常执行命令。
  • 若再次遇到沙箱初始化失败,优先对命令使用提权执行,而不是清理工作区。

Suggested skills

  • implement
  • tdd
  • code-review
  • verification-before-completion