此前报警审核、运营重构、日志及状态样式调整的完整记录已保留至 当日前期归档。稳定决策已合并到长期记忆,不以归档中的过期实现为准。
E:/work/prd/outputs/alarm-gis.html 美化排水 GIS。实际入口仍是 src/views/subSystem/alarm/drainage/alarmGIS.vue,组件名 DrainageAlarmGIS、菜单 path drainageAlarmGIS 不变。alarmGIS.scss,回归断言在 tests/alarmOperations.test.mjs;新增独立 tests/alarmGIS.visual.mjs,只在测试服务器中替换接口和底图,不影响生产数据源或增加 npm 依赖。npm run build:prod 成功,构建输出到系统临时目录,保留原有发布目录;git diff --check 通过。.feisuan/、dist-verify/。E:/work/city-life-line/dist-verify 能否删除,本轮只检查,未执行删除。dist,开发服务不依赖 dist-verify。npm run build:prod -- --outDir dist-verify 重新生成当前源码的验证产物。waterSupply.js 未导出 getAlarmLedgerDashboard。合并后恢复的 WaterSupplyHome.vue 仍调用旧函数,旧后台 /waterSupply/alarm/ledger/dashboard 也已删除;单补导出会继续报 404。src/api/alarm.js 的 getAlarmDashboard({ rootTypeId: WATER_DEVICE_ROOT_TYPE_ID, days: 7 })。统一 AlarmController 新增 GET /api/alarm/dashboard,沿用 alarm:operations:list 权限及获授权菜单/类型树校验,不恢复旧接口或旧页面。79bb7e5 设备管理统一管理 删除了 subSystem/waterSupply/device/abnormal.vue 及其共享实现,但菜单 2215 仍指向该组件路径,页面因此空白。本次只还原「监测设备管理-设备异常管理」这一页,不改数据库菜单/数据、不新建表、不动设备台账与其它设备页面。/equipment-base(分页列表)与 /equipment-base/statistics?rootTypeId=1,供水范围由 WATER_DEVICE_ROOT_TYPE_ID=1 限定,不再依赖已下线的 /waterSupply/device/ledger/*、/waterSupply/device/abnormal/*。src/utils/waterDeviceAbnormalModel.js:异常来源判定(报警中/离线/维修中)、类型与关键字筛选、聚合统计、/equipment-base 取数参数与 CSV 导出内容。src/views/subSystem/waterSupply/components/WaterDeviceAbnormalPage.vue:蓝白指挥台风格只读看板 + 右侧详情抽屉。src/views/subSystem/waterSupply/device/abnormal.vue:菜单入口,渲染上述看板。tests/waterDeviceAbnormalBoard.test.mjs(模型行为 + 页面契约),tests/waterSupplyWorkOrderStatusDict.test.mjs 改为指向新页面。CONTEXT.md 补充「设备当前状态」等术语,明确异常看板三类来源与设备状态表的对应关系。node --test tests/*.test.mjs:163 项,159 通过、4 失败;失败均为既存(引用已删除的 WaterDevicePage.vue 的台账导入导出/派单责任人用例,以及报警 GIS 标题用例),较基线 9 项失败减少 5 项,无新增失败。vite build 通过(构建输出到已被忽略的 dist/)。CurrentStatusEnum(0-在用/1-维修/2-报废,统一设备模块与本次看板采用)与 waterSupplyUiModel/GIS 仍在用的 3-维修。两处不一致,后续需要收敛,否则维修中设备在 GIS 与异常看板可能判定不同。/waterSupply/device/gis/detail/{id}(waterSupply:device:gis 权限);无该权限时抽屉降级为列表数据并给出重试提示。未验证真实登录、KingbaseES 实时数据与人工验收;异常看板在真实数据下的分页与导出仍待人工检查。
按要求将 alarm/audit.vue、list.vue、remind.vue 和完整 utils、styles 内容移动至 alarm/common;详情、历史、曲线等共享组件继续保留在 alarm 根目录。同步修改相对组件引用、工单字典引用、供水/排水工具与样式引用和既有测试路径,页面业务逻辑不变。
后端 AlarmReviewScopeService 的审核/运营菜单组件匹配同步新路径,继续校验各子系统设备类型范围且区分读取与审核权限;初装审核/运营 SQL、SQL 回归期望及交付文档同步更新。
新增 pipe-network-service/sql/migration_alarm_common_components.sql,仅按七个 menu_id(2118/2142/2097/2024/2117/2140/2139)更新 component 和更新时间,保留 path/query/权限及角色关联,可重复执行。
验证:前端既有测试 25 项、后端范围测试 8 项通过;11 个相关 Vue SFC、共享 SCSS 编译通过,4 个工具模块及 60 处本地导入校验通过;两仓 diff 检查通过。
风险与后续:未执行真实数据库 SQL,未验证真实登录页面,未部署或提交;上线需同步更新前后端、执行增量菜单脚本并重新登录。原有后端 IDE 配置和 .feisuan/ 修改保留。
alarm/common/list.vue 查询区上方新增三张白底卡片:报警总数(蓝)、监测异常(红)、监测已恢复(绿),配线性图标及说明,窄屏自动纵向排列。查询区、表格与分页模板逐字比较保持不变,样式限定在本页面新增区域。GET /api/alarm/statistics,后端 countByLevel 聚合保留 level/total 并增加 abnormal/recovered,状态值通过 AlarmRecordStatusEnum 传入;统计沿用同一查询过滤和已授权设备类型范围,不接收分页参数。未知状态仅计入总数,不误算恢复。