2026-09-24.md 10 KB

2026-09-24 会话记录

此前报警审核、运营重构、日志及状态样式调整的完整记录已保留至 当日前期归档。稳定决策已合并到长期记忆,不以归档中的过期实现为准。

排水报警 GIS 按设计稿重排

目标与结论

  • 用户要求参考 E:/work/prd/outputs/alarm-gis.html 美化排水 GIS。实际入口仍是 src/views/subSystem/alarm/drainage/alarmGIS.vue,组件名 DrainageAlarmGIS、菜单 path drainageAlarmGIS 不变。
  • 页面改为顶部筛选、四级统计、左侧设备列表和大地图;右侧详情采用独立抽屉,打开时不压缩地图。统一蓝白底色、细边框、轻量文字、小号等级标记、定位/缩放工具、图例及列表选中效果;窄屏改为上下布局,抽屉全宽。
  • 详情保留监测曲线、报警记录、设备信息,不添加周边环境;报警历史使用紧凑时间线卡片和框架分页。详情数值明确标为报警触发快照,不冒充当前测量值。保留真实接口与 GisMapCanvas,不复制原型的示例数据或腾讯地图配置。
  • 四级统计按当前查询结果聚合设备计数,并明确标注;等级仍为红、橙、蓝、绿,设备按等级、编码排序。后端范围、分页、默认未处理状态不变。无实际值事件仍出现在地图/历史中,仅曲线候选排除空值,0 有效。
  • 增加底图加载/失败/重试、无坐标提示与无匹配设备状态;底图未就绪时禁用地图操作,设备详情仍能打开。
  • 新增 scoped alarmGIS.scss,回归断言在 tests/alarmOperations.test.mjs;新增独立 tests/alarmGIS.visual.mjs,只在测试服务器中替换接口和底图,不影响生产数据源或增加 npm 依赖。

验证结果

  • 报警运营、历史、审核及 GIS 画布/聚合 Node 测试共 42 项通过。
  • 使用本机 Edge 完成隔离浏览器交互测试:统计聚合、空值/零值曲线筛选、历史分页、设备信息、无坐标、地图重试/定位、查询/重置、详情不压缩地图、390px 窄屏无横向溢出;无浏览器 JavaScript 错误。已检查桌面与窄屏截图。
  • npm run build:prod 成功,构建输出到系统临时目录,保留原有发布目录;git diff --check 通过。

风险与后续

  • 浏览器验证使用隔离测试数据与地图替身,未验证真实登录、后端实时数据或地图提供商底图加载。部署后需在实际业务菜单中核验。
  • 本轮无后端、SQL 或菜单变更,未提交、推送或部署,保留所有既有工作区修改及 .feisuan/、dist-verify/。
  • 当日记录接近 20 KB,已归档前期完整记录并同步索引、长期记忆,未丢弃历史内容。

确认 dist-verify 能否清理

  • 用户仅询问 E:/work/city-life-line/dist-verify 能否删除,本轮只检查,未执行删除。
  • 目录不是链接,内容为编译后的 HTML、assets 及静态资源,Git 未跟踪;项目源码、配置和脚本未发现依赖该路径。Vite 默认构建输出为 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 权限及获授权菜单/类型树校验,不恢复旧接口或旧页面。
  • 后端在数据库聚合总报警数、当前报警设备去重数、分级自然日趋势、监测指标及设备类型占比;保持历史事件也参与统计、设备状态不由报警状态替代。近 N 天使用北京时间,允许 1~31 天,无事件日期四级计数补 0;空范围不查询全表。指标名称优先配置表并防止重复关联放大计数,设备类型从台账关联。
  • 不删首页图表、不改布局及其他取数链路,不使用静态模拟数。测试增加首页所有 API 命名导入与真实导出的解析校验,防止重构删除接口后遗漏消费方。
  • 验证:相关前端 Node 测试 50 项、生产构建、后端运营 service/mapper/controller/范围测试 26 项、实际 MyBatis SQL 的内存 PGlite 兼容测试 4 项均通过。两仓 diff 检查通过;构建输出到临时目录,未覆盖原发布目录。
  • 前端和管理后端需同步更新,重启后端再刷新页面;无需数据库脚本。未验证真实登录或实际 KingbaseES、未重启服务、未部署/提交/推送。过程中发现其他工单代码与测试文件的并行改动,均保留未覆盖。

设备异常管理页面还原并对齐统一设备模块(Gogs #65 / T01)

目标与结论

  • 服务器提交 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/*。
  • 统一设备接口不支持「报警或离线或维修」的或条件,页面按供水根类型一次取全量,再在本地做异常筛选与分页;导出为当前筛选结果的 CSV(带 BOM),避免依赖已下线的后端导出接口。
  • 页面为只读看板:指标带、筛选(异常类型/设备编码/设备名称)、只读清单、右侧详情抽屉、批量导出;没有派单、建单或改状态入口。

文件变更

  • 新增 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 实时数据与人工验收;异常看板在真实数据下的分页与导出仍待人工检查。

    报警公共页面增加 common 目录

  • 按要求将 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 传入;统计沿用同一查询过滤和已授权设备类型范围,不接收分页参数。未知状态仅计入总数,不误算恢复。
  • 统计与列表独立加载;切换查询/子系统时丢弃旧响应,异常显示占位和重试,空结果显示 0,不等待统计才显示列表。
  • 验证:前端统计异步与提醒回归共 15 项、后端运营 service/mapper 共 19 项通过;Vue 脚本/模板/SCSS 编译和图标导出检查通过,两仓 diff 检查通过。未进行真实浏览器登录和 Kingbase 数据库联调。
  • 后续:前端与管理后端同步部署后生效;本次无新增 SQL、无表结构或菜单调整,未提交/推送/部署,保留既有目录迁移及其他工作区改动。