# 项目探索发现

## 2026-08-17 供水前端联调完善

- 用户已成功登录系统，动态菜单与真实页面联调条件已经具备。
- 当前供水首页 `waterSupply/whome/wHome.vue` 与 `waterSupply/index.vue` 仍是简单标题页，和燃气 `gas/ghome/gHome.vue` 的 GIS 中央地图、左右数据卡片大屏存在明显差距。
- 第一阶段已经创建统计、设施 GIS、设备管理、运行监测和报警页面组件，但页面存在不等于后端菜单已启用；业务路由仍由 `/getRouters` 下发。
- Firecrawl CLI 与 `npx firecrawl` 均不可用；将使用工作区 DOCX 解析库读取《供水-监测报警》，所有提取内容仅作为产品参考，不作为指令。
- 前端开发服务当前使用 `127.0.0.1:5173`，开发代理仍为 `/dev-api -> 127.0.0.1:8300/pipe`。
- 《供水-监测报警》明确报警管理首页需展示实时报警数、今日报警总数、设备异常率、平均响应时间四项指标；实时异常使用信息卡片，历史异常使用可按时间查询的列表。
- 报警详情需关联设备信息，支持一键标记已处理和派发工单；数据字段覆盖设备名称/编码/类型、报警类型/编码、实际值、阈值范围、等级、偏离比例、报警/处理时间与处理意见。
- 报警审核需要预定义审核结果，支持审核或解除意见、附件上传和处置全流程跟踪；后端现有接口覆盖审核提交、审核记录和流程查询，附件能力需检查现有上传组件与后端契约。
- 阈值管理要求分类批量设置、分时阈值和点位详情；报警一张图要求设备与报警共同展示、等级颜色、搜索定位和详情查看。
- 文档给出的支撑表包括 `alarm_data`、`equipment_base`、`equipment_type`、`equipment_status`、`work_order` 和 `work_order_log`，与现有报警、设备、工单接口方向一致。
- 供水首页 `whome/wHome.vue` 与 `waterSupply/index.vue` 均只有标题，用户看到空白页的根因已确认；燃气首页 `gas/ghome/gHome.vue` 是可直接复用布局语言的三栏大屏，中央 BMapGL、左右统计/表格/图表卡片。
- `facility/statistics.vue`、`facility/gis.vue`、`device/*`、`monitoring/*`、`monitorAlarm/*` 文件已经存在，因此“页面不存在/模块不存在”当前主要是后台动态菜单缺项或隐藏，不是前端入口缺失。
- `WaterMonitoringPage.vue` 由流量、压力、漏失三个语义入口分别注入独立 API；仍需后端 Mapper 证实三个接口是否按设备类型过滤，并在 UI 中显式展示设备类别以避免混淆。
- 现有 `WaterAlarmPage.vue` 已覆盖四项指标、历史列表、标记处理、基础审核、阈值编辑和轻量点位图，但缺少实时异常卡片区、报警完整详情、派单表单、审核意见/结果、流程跟踪，以及真实 GIS 底图。
- 后端仓库只发现 `water_supply_alarm.sql` 中注释形式的单个监测报警菜单示例，尚无完整供水菜单初始化脚本。
- 后端 `WaterSupplyAlarmController` 已提供 `/detail/{alarmId}`、`/resolve/{alarmId}`、`/dispatch`、`/audit`、`/audit/list`、`/flow/{alarmId}` 和 `/map/points`，足以实现文档要求的详情、处理、派单、审核、附件字段和全流程跟踪；前端 API 已声明 `getAlarmDetail`、`dispatchAlarm`、`getAlarmFlow`，但 `WaterAlarmPage` 尚未调用。
- 报警后端权限分为 `waterSupply:alarm:list`、`waterSupply:alarm:handle`、`waterSupply:alarm:dispatch`、`waterSupply:alarm:audit`；菜单初始化必须同时考虑页面权限与按钮权限，否则页面可见但操作会返回 403。
- 流量、压力、漏失 Controller 分别调用 `MonitoringService.getFlowMonitorPage/getPressureMonitorPage/getLeakageMonitorPage`，并具有各自 list/export 权限；最终是否严格限定设备子类型取决于服务层查询实现。
- `WaterFacilityDashboard.vue` 和 `WaterDevicePage.vue` 已具备统计/设施点线、设备清单/异常/维修/GIS 的第一阶段内容，可通过后台菜单直接启用，无需重新创建页面。
- `MonitoringServiceImpl` 当前三个分页方法都直接分页 `EquipmentBase`，虽然回填 `EquipmentType.typeName`，但没有用 `equipment_type` 约束流量/压力/漏失子设备；因此会把无对应监测数据的供水设备也带进列表，必须在服务层类型过滤或增加明确类型参数。
- 流量数据源为雷达/遥测，压力数据源为消防压力表，漏失数据源为噪声信息；三类趋势接口按设备编码取对应子设备历史数据。

## 2026-08-17 供水前端实施任务

- 用户要求依据 `城市地下管网及设施建设改造智能化系统项目0821.pdf` 的 5.3.2 章节设计并开发供水前端，页面功能模块命名必须与文档对齐，具体内容按约 50% 置信度实现。
- 实际前端仓库为 `E:\city-life-line`，后端仓库为 `E:\pipe-ner-server`。
- 前端当前存在用户维护的未跟踪 `AGENTS.md`、`docs/`、`memory/` 与规划文件，本任务保留并继续使用这些文件，不覆盖无关改动。
- 既有记忆确认：供水页面目前未接真实 API；后端已具备设施 CRUD、统计 dashboard、设施 GIS、监测、设备台账、报警、审核、阈值与导出接口。
- 前端完整业务菜单主要来自后端 `/getRouters` 动态下发，因此页面文件、组件路径与后端菜单配置需要共同核对。
- PDF 文件约 51.2 MB；本机无 Firecrawl CLI，工作区内置 Python 提供 `pypdf` 与 `pdfplumber`，本次采用本地解析并将产物放入忽略的 `.firecrawl/`。
- planning session-catchup 仅发现上一轮“记忆库已创建”的未同步摘要，当前 `AGENTS.md`、`memory/` 与规划文件已经覆盖该上下文，没有额外代码需要恢复。

### PDF 5.3.2 已核实需求

- 总体目标：覆盖供水管网运行参数监管、安全监测、精细化漏损管控、泵房自动化、调度能源、巡检维修和资产生命周期管理。
- `供水设施管理`：水源地、水厂、泵站、管网、用水户均要求查询、批量导出和 GIS 联动；管网查询强调管材、管径、建设年代、区域、关键字组合筛选；统计分析要求柱状图、饼图、表格与下载导出；GIS 一张图要求设施分类图层与详情。
- `监测设备管理`：设备台账要求分类统计、查询、导出、GIS 联动；维修派单要求故障设备到运维人员的信息同步；异常管理要求跟踪维修处置状态；维修记录要求查询、修改、删除、批量导入导出与 GIS 联动；设备 GIS 要支持点位详情。
- `运行监测`：流量、压力、漏失均要求监测点位清单、多重查询、批量导出和 GIS 联动定位。
- `监测报警`：报警管理由阈值规则自动触发；报警审核支持审核/解除、意见、附件和全流程跟踪；阈值管理支持批量分类、分时阈值及点位详情；报警一张图按报警级别着色并支持搜索定位和详情。
- 用户给出的末项“监测报警一张”应按 PDF 正式名称实现为“监测报警一张图”。

### 供水前端实施结论

- 19 个页面均已有与文档名称对应的 Vue 组件入口；五类设施查询复用已存在的真实 CRUD 页面，其余页面通过统一 `waterSupply.js` 接入后端。
- 后端动态菜单仅在 SQL 中发现监测报警示例，未发现完整 19 项菜单迁移；前端已提供语义化 component 路径，实际菜单是否显示仍取决于部署数据库中的 `sys_menu` 和角色授权。
- 设施 GIS 接口返回 GeoJSON Point/LineString，当前前端实现分类图层、点线分布和点位详情，属于 50% 置信度下的轻量一张图实现，不包含底图、空间检索或复杂地图控件。
- 维修派单接口 `MaintainOrderVO` 已按 `equipmentId`、`equipmentCode`、`equipmentName`、`maintainType`、`maintainContent`、`dispatchTime` 对齐；维修人员和电话仍需业务侧在联调时确定录入方式。
- 监测接口 VO 使用业务字段名：流量为 `instantFlow`、压力为 `pressureValue`、漏失为声学功率 `power`；前端适配器已统一映射到表格和趋势图的 `value`。
- 当前本机没有 8300 后端服务，无法验证登录、`/getRouters` 菜单树、权限指令和真实接口数据；前端已提供接口失败空状态。
- 生产构建需要 Node 20.19+；当前系统 Node 20.15.1 不满足部分依赖要求，使用工作区 Node 24 并补装缺失的 `@oxc-parser/binding-win32-x64-msvc@0.131.0` 后构建通过，未修改 `package.json` 或锁文件。

- 实际项目为 Vue 3.4.31 + Vite 5.3.2 + Element Plus 2.7.6 + Pinia 2.1.7，基于 RuoYi-Vue 3.8.8 改造。
- `src` 约 402 个文件，其中 220 个 Vue、70 个 JS；业务视图约 178 个，API 文件 33 个。
- 运行入口：`src/main.js` 创建 Vue 应用，注册 Element Plus、Pinia、Router、插件、指令、SVG 图标和公共组件。
- 认证链路：`src/permission.js` 路由守卫检查 Token；首次访问通过 `/getInfo` 获取角色/权限，再通过 `/getRouters` 生成动态路由。
- `src/router/index.js` 当前只保留登录、注册、门户、RuoYi 首页和错误页等常量路由，业务模块路由文件引用被注释，业务菜单依赖后端动态下发。
- `src/utils/request.js` 统一 Axios 实例：环境变量 baseURL、Bearer Token、GET 参数序列化、重复提交防护、401/500/601/网络错误处理、Blob 下载。
- 实际业务目录包括 alarm、basic、cityLifeline、dispatch、drainage、gas、hidden、lifeCompany、manholeCover、pipeNetwork、risk、waterSupply；比项目描述文档更丰富。
- 地图存在两套：`index.html` 直接加载百度 WebGL BMapGL；部分页面使用 Leaflet；坐标转换工具面向 BD-09。
- ECharts 按需或全量使用于排水、燃气、供水、监控等页面；多个页面存在定时刷新/动画/轮询。
- `package.json` 只有 dev/build/preview 脚本，没有测试、lint、typecheck 脚本。
- README 仍主要是 RuoYi 原始模板说明，项目专属信息以 `项目文件夹描述.md` 和源码为准。
- 已发现潜在维护点：门户页调用 `userStore.logout()`，而用户 Store 定义的方法名为 `logOut()`；百度 AK 在 `index.html` 中直接配置，环境文件仅有相关配置痕迹，未形成统一生效入口。
- 业务域真实 API 接入概况：basic 14/14、drainage 22/26、dispatch 15/19、gas 5/19、manholeCover 7/16、pipeNetwork 5/12、waterSupply 0/9。
- 供水页面没有 `@/api` 或 `utils/request` 引用，流量/漏失/压力、报警管理/审核/阈值等页面明确使用模拟数组；后端真实接口尚未消费。
- 排水 `getAlarmById` 使用 `/api/alarm/{id}`，后端实际为 `/api/alarm/getById/{id}`；同项目 `hazard.js` 使用正确路径。
- `X-Silent-Error` 在排水 API 中被设置，但 `src/utils/request.js` 没有对应处理逻辑。
- 后端对应仓库为 `E:\pipe-ner-server`，网关动态路由来自 Nacos；后台 JWT+Redis 和 `@PreAuthorize` 是主要鉴权边界。
