Преглед изворни кода

Merge remote-tracking branch 'origin/master'

zengy пре 1 месец
родитељ
комит
655a3232ac
5 измењених фајлова са 58 додато и 60 уклоњено
  1. 6 2
      CONTEXT.md
  2. 43 57
      docs/domain/work-order-lifecycle.md
  3. 2 0
      memory/index.md
  4. 1 1
      memory/long-term.md
  5. 6 0
      memory/sessions/2026-09-10.md

+ 6 - 2
CONTEXT.md

@@ -29,8 +29,8 @@ _Avoid_: 设备报警状态、工单状态
 _Avoid_: 报警记录状态、工单状态
 
 **工单处置状态**:
-表示统一工单当前所处的待派单、待接单、已接单、处理中、待验收、已结案或已取消阶段;终态仅已结案与已取消。
-_Avoid_: 设备报警状态、报警记录状态
+表示统一工单当前所处的待派单、待接单、已接单、处理中、延期中、待验收、已结案或已取消阶段;延期中是处理中的旁路阶段,终态仅已结案与已取消。
+_Avoid_: 设备报警状态、报警记录状态、已驳回状态、延期审核状态、把延期中视作终态
 
 **验收驳回**:
 管理员在待验收阶段将工单退回处理中、由同一接单责任人继续整改的动作,必填驳回原因;它是动作而非工单状态。
@@ -56,6 +56,10 @@ _Avoid_: 接单人列表、维修人员姓名
 接单责任人对工单执行接单、处理和提交验收,管理人员随后完成验收或验收驳回的全过程。
 _Avoid_: 报警审核、报警处理
 
+**延期中**:
+延期申请审核通过后,工单继续由责任人执行的处理旁路阶段。它不是终态,也不表示处置已结束。
+_Avoid_: 已延期、延期审核、已结案
+
 **故障维修工单**:
 处理设备故障、设备异常或设备报警的工单类型。维修任务和报警转入的处置均归入此类型。
 _Avoid_: 维修任务、报警工单

+ 43 - 57
docs/domain/work-order-lifecycle.md

@@ -1,86 +1,72 @@
-# 统一工单处置生命周期(七态共识)· 前端职责
+# 统一工单处置生命周期 · 管理端口径
 
-状态:accepted(与后端 `pipe-ner-server`、UE 驾驶舱 `Pipelines` 一致的跨仓领域共识)
-确立日期:2026-09-04
-后端权威文档:`pipe-network-service/docs/domain/work-order-lifecycle.md`、ADR-0008
-取代口径:旧“九态模型”(含“已驳回”终态、“延期审核/已延期”)。
+状态:accepted
+更新日期:2026-09-10
+后端权威文档:`pipe-network-service/docs/domain/work-order-lifecycle.md`
 
-> 本文是前端 `city-life-line` 渲染与操作工单状态的唯一业务依据。状态名是权威;后端现网编码迁移另开任务,迁移完成前按第 7 节对照表换算,前端不得写死依赖旧“已驳回/延期”语义。
+> 本文是前端 `city-life-line` 渲染与操作工单状态的唯一业务依据。状态名是业务权威;调用方只能按所属接口契约解释状态编码,不得跨接口复用裸数字。2026-09-10 起,管理端业务工单采用数据库与前端一致的 `0–7` 契约。
 
 ## 1. 本仓职责
 
-- 本仓是**管理端 Web UI**:按七态渲染工单状态标签、状态统计、详情时间线与当前可用操作按钮。
-- 前端只做“当前状态允许哪些动作”的展示控制,**最终授权与状态流转由后端校验**,前端不自行改状态。
+- 本仓是**管理端 Web UI**:按管理端契约渲染工单状态标签、状态统计、详情时间线与当前可用操作按钮。
+- 前端只做“当前状态允许哪些动作”的展示控制;最终授权与状态流转由后端校验,前端不自行改状态。
 - UE 驾驶舱是另一只读消费方,本仓不向其输出写操作。
 
 ## 2. 角色
 
-- **管理员(派单/验收者)**:派单下发、验收(审核通过 / 验收驳回 / 取消工单),可在任意中间态取消。
-- **接单责任人**:接单确认、开始处置、多次追加处理流水、提交审核。一次派发指定唯一接单责任人。
+- **管理员(派单/验收者)**:派单下发、验收通过、验收驳回、取消工单。
+- **接单责任人**:接单确认、开始处置、多次追加处理流水、提交验收。一次派发指定唯一接单责任人。
 
-## 3. 两条入口
+## 3. 管理端工单状态
 
-1. **报警转工单**:由设备预警/报警创建,进入“待派单”,创建时不指定责任人。
-2. **直接下派**:巡检、维修等工单可创建即派给责任人,直接进入“待接单”。
-
-## 4. 七个状态
-
-| 目标编码 | 状态 | 含义 | 是否终态 |
+| 状态编码 | 状态 | 含义 | 是否终态 |
 | --- | --- | --- | --- |
-| 1 | 待派单 | 已创建、未指定责任人,等待派单 | 否 |
-| 2 | 待接单 | 已派给责任人,等待接单确认 | 否 |
-| 3 | 已接单 | 责任人已接单,尚未开始现场处置 | 否 |
-| 4 | 处理中 | 已开始处置;可多次追加处理流水 | 否 |
-| 5 | 待验收 | 已提交审核,等待管理员验收 | 否 |
-| 6 | 已结案 | 审核通过,处置闭环 | 是 |
+| 0 | 待派单 | 已创建、未指定责任人,等待派单 | 否 |
+| 1 | 待接单 | 已派给责任人,等待责任人核查接单 | 否 |
+| 2 | 已接单 | 责任人已核查接单,尚未开始处置 | 否 |
+| 3 | 处理中 | 责任人已开始处置;可多次追加处理流水 | 否 |
+| 4 | 待验收 | 责任人已提交验收,等待管理员验收 | 否 |
+| 5 | 已结案 | 管理员验收通过,处置闭环 | 是 |
+| 6 | 延期中 | 延期申请审核通过后的处理旁路,仍需继续处置 | 否 |
 | 7 | 已取消 | 管理员取消,强制终止;改派需另建新单 | 是 |
 
-终态只有“已结案(6)/ 已取消(7)”。
+终态只有“已结案(5)”和“已取消(7)”。延期中不是终态,也不是独立的验收结果。
 
-## 5. 状态迁移与前端动作
+## 4. 状态迁移与前端动作
 
 | 动作 | 角色 | 前置态 | 目标态 | 前端要点 |
 | --- | --- | --- | --- | --- |
-| 创建(报警转工单) | 系统/管理员 | — | 1 | 不在报警创建接口塞责任人 |
-| 直接下派(巡检/维修) | 管理员 | — | 2 | 创建即选唯一责任人 |
-| 派单/下发 | 管理员 | 1 | 2 | 部门树 + 单选责任人弹窗 |
-| 接单确认 | 责任人 | 2 | 3 | — |
-| 开始处置 | 责任人 | 3 | 4 | **必传处理前照片 + 现场简述** |
-| 追加处理流水 | 责任人 | 4 | 4 | 可多次,图片+描述,不改状态 |
-| 提交审核 | 责任人 | 4 | 5 | **必传处理后照片 + 处理描述** |
-| 审核通过 | 管理员 | 5 | 6 | 填审核评价/建议 |
-| 验收驳回 | 管理员 | 5 | 4(回退) | **必填驳回原因**,工单不终止 |
-| 取消工单 | 管理员 | 1/2/3/4/5 | 7(终态) | 建议填取消原因;已结案不可取消 |
+| 创建(报警转工单) | 系统/管理员 | — | 待派单 | 不在报警创建接口塞责任人 |
+| 直接下派(巡检/维修) | 管理员 | — | 待接单 | 创建即选唯一责任人 |
+| 派单/下发 | 管理员 | 待派单 | 待接单 | 部门树 + 单选责任人弹窗 |
+| 核查接单 | 责任人 | 待接单 | 已接单 | 必传现场情况附件,作为处理前证据 |
+| 处置 | 责任人 | 已接单 | 处理中 | 可多次追加描述与附件 |
+| 处置 | 责任人 | 处理中 / 延期中 | 原状态 | 处理流水自循环,不改状态 |
+| 提交验收 | 责任人 | 处理中 / 延期中 | 待验收 | 必传处理后证据与描述 |
+| 验收通过 | 管理员 | 待验收 | 已结案 | 填验收结果 |
+| 验收驳回 | 管理员 | 待验收 | 处理中 | 必填驳回原因,交同一责任人继续整改 |
+| 取消工单 | 管理员 | 待派单 / 待接单 / 已接单 / 处理中 / 待验收 | 已取消 | 建议填取消原因 |
+| 申请延期 | 责任人 | 处理中 | 待延期审核 | 写入延期申请状态,不改主状态 |
+| 延期审核 | 管理员 | 待延期审核 | 处理中 / 延期中 | 通过进入延期中,驳回回到处理中 |
 
 前端渲染约束:
 
-- “验收驳回”是动作不是状态,列表/时间线里不出现独立“已驳回”状态标签;被驳回的工单显示为“处理中”,并在时间线展示驳回原因。
+- “验收驳回”是动作不是状态;被驳回的工单显示为“处理中”,并在时间线展示驳回原因。
+- “延期中”是处理旁路状态;不得把它渲染成已结案或终态。
+- “延期申请状态”与“工单状态”是两个来源,不得互相替代。
 - “已取消”是终态,用灰色不可操作样式;不提供复活/继续处置入口。
-- 状态标签必须文字与颜色同时表达,颜色语义沿用设计文档(红紧急、橙待办、青绿处理中、绿完成、灰已取消/不可操作)。
-- 不再渲染任何“申请延期 / 延期审核 / 已延期”入口或标签。
-
-## 6. 处理流水与处置证据
-
-- 处理前证据在“开始处置(3→4)”上传;处理流水在“处理中(4)”多次追加;处理后证据在“提交审核(4→5)”上传;验收意见/驳回原因/取消原因在对应动作记录。
-- 附件走后端 MinIO + KingbaseES 阶段化元数据方案,旧图片 URL 字段兼容读取,前端不得丢失历史图片。
+- 状态标签必须文字与颜色同时表达,颜色语义沿用供水设计文档。
 
-## 7. 目标编码与现网接口编码(迁移期)
+## 5. 处理流水与处置证据
 
-目标七态仍以 1–7 为权威。当前后端已出现两类并存契约:驾驶舱只读接口输出目标 1–7;管理端业务工单与供水设备详情仍读取数据库现网 0–7 编码,并保留 `6-延期中` 兼容分支。
+- 处理前证据在“核查接单”上传;处理流水在“已接单→处理中”及后续处置中追加;处理后证据在“提交验收”上传。
+- 验收意见、驳回原因、取消原因、延期原因和延期审核结果记录在对应动作日志中。
+- 附件继续兼容既有图片 URL;新附件按后端 MinIO + KingbaseES 阶段化元数据方案处理。
 
-| 状态名 | 目标编码(权威/驾驶舱只读) | 管理端现网编码 |
-| --- | --- | --- |
-| 待派单 | 1 | 0 |
-| 待接单 | 2 | 1 |
-| 已接单 | 3 | 2 |
-| 处理中 | 4 | 3 |
-| 待验收 | 5 | 4 |
-| 已结案 | 6 | 5 |
-| 已取消 | 7 | 7 |
-| ~~延期中(废止目标状态)~~ | — | 6(迁移期兼容) |
+## 6. 与驾驶舱只读契约的关系
 
-前端必须按接口契约解析编码并统一展示状态名,禁止把管理端 `relatedWorkOrderStatus` 裸值直接套用目标 1–7 字典。监测设备 GIS 只消费管理端关联工单摘要,不承担数据库状态迁移;后端迁移完成后再删除管理端旧编码和延期兼容分支。
+UE 驾驶舱继续消费只读适配契约;该契约必须由后端显式把管理端 `0–7` 状态映射为驾驶舱展示状态,并由后端保证“延期中”等旁路状态不会误映射成终态。前端 GIS 和管理端工单页面只消费管理端关联工单摘要,不承担数据库状态迁移。
 
-## 8. 与设备报警状态的关系
+## 7. 与设备报警状态的关系
 
 工单状态独立于设备报警状态与报警记录状态,三者来源不同、不得互相替代;工单结案只触发后端清警复核,前端不直接把设备改为正常。

+ 2 - 0
memory/index.md

@@ -43,6 +43,7 @@ npm run dev       # 默认 http://localhost:80
 - 百度地图 AK 仍由 `index.html` 直接配置,环境变量未形成统一生效入口。
 - `package.json` 没有测试、Lint 或类型检查脚本。
 - 供水管网信息查询页已重构接入统一表 `pipe_network_base`(`/PipeNetworkBase/*`,network_type=2);旧表 `water_pipe_info` 的接口、实体、mapper 与前端死代码已全部删除,供水 GIS 图与统计分析 mapper 已迁移至新表(均带 `network_type='2'`),压力分布图改为等级分布(`pipe_network_level` 字典);数据迁移与删表由用户侧执行(2026-09-09)。
+- 管理端工单状态契约已与后端重构后的 `0–7` 状态机对齐;`6-延期中` 是处理旁路,终态为 `5-已结案` 与 `7-已取消`。
 
 ## 长期记忆
 
@@ -60,3 +61,4 @@ npm run dev       # 默认 http://localhost:80
 - [2026-09-05:工单七态编码调整为 1–7;T3/T4(Issue #7/#8)验收关闭并同步共识文档](sessions/2026-09-05.md)
 - [2026-09-08:管网信息查询页重构接入 pipe_network_base(分 4 票执行完成)](sessions/2026-09-08.md)
 - [2026-09-09:water_pipe_info 收尾迁移(E 顺序执行完成,旧表链路全删)](sessions/2026-09-09.md)
+- [2026-09-10:WGS84→BD09 诊断与管理端工单生命周期共识更新](sessions/2026-09-10.md)

+ 1 - 1
memory/long-term.md

@@ -58,7 +58,7 @@
 - 报警管理侧重报警态势和派单,报警审核保留原菜单名并承载供水故障维修工单全流程,供水工单总览集中展示全部供水类型工单。
 - 日常巡检和设备保养工单由其他业务系统创建及首次派发;派给当前用户后可以在供水工单总览继续处置。
 - 设备报警状态、报警记录状态和工单处置状态必须分别展示,不得互相替代。
-- 统一工单生命周期以**七态**为唯一权威(1 待派单/2 待接单/3 已接单/4 处理中/5 待验收/6 已结案/7 已取消,编码从 1 开始):验收驳回是“待验收(5)回退到处理中(4)”的动作而非状态、已取消(7)是任意中间态可进入的终态;不设“已驳回”终态与延期目标状态。迁移期驾驶舱只读契约已使用目标 1–7,而管理端业务工单和设备详情仍使用数据库现网 0–7(含 6-延期中兼容);调用方必须按接口契约解析并统一展示状态名。三仓共识见本仓 docs/domain/work-order-lifecycle.md、后端 ADR-0008 与 UE 同名文档。
+- 管理端统一工单生命周期采用数据库与前端一致的 `0–7` 契约(0 待派单/1 待接单/2 已接单/3 处理中/4 待验收/5 已结案/6 延期中/7 已取消);终态仅已结案和已取消,延期中是处理旁路。验收驳回是“待验收(4)回退到处理中(3)”的动作而非状态。调用方必须按接口契约解释状态编码并以状态名展示。三仓共识见本仓 docs/domain/work-order-lifecycle.md。
 - 相关页面采用蓝白运行指挥台风格;一级至四级报警依次使用红、橙、蓝、绿,供水菜单全部配置图标。
 - 详细设计见 `docs/design/2026-08-22-water-supply-work-order-ui.md`。
 

+ 6 - 0
memory/sessions/2026-09-10.md

@@ -28,3 +28,9 @@
 - 领域核对发现迁移期双轨:驾驶舱只读工单字典使用目标编码 1–7;管理端业务工单和供水设备详情仍使用数据库现网 0–7,其中 6 为延期兼容状态。状态名仍是跨系统业务权威,GIS 只消费设备状态和关联工单摘要,不在 Ticket #3 迁移工单状态机。
 - 已更新前端 `CONTEXT.md`、`docs/domain/work-order-lifecycle.md`、`memory/long-term.md` 以及后端 `pipe-network-service/docs/domain/work-order-lifecycle.md`,记录接口编码边界和迁移约束。
 - 同步修正前端契约测试到管理端现网编码,单元与全量测试恢复通过;Ticket #3 尚未开始实现。
+
+## 补充:Ticket #3 开工前共识收敛
+
+- 复核后端当前代码:`WorkOrderStatusEnum` 与前端 `workOrderDict.js` 均为 `0-待派单、1-待接单、2-已接单、3-处理中、4-待验收、5-已结案、6-延期中、7-已取消`;管理端状态机是权威契约。
+- `CockpitWorkOrderStateDictionary` 仍按旧 `1–7` 目标编码暴露驾驶舱只读展示,且 `byLegacyCode(0..6)` 的映射不适用于当前管理端 `0–7`;这是一个需要单独修正的后端驾驶舱适配问题,不在 #3 前端边界内处理。
+- 已把前端 `CONTEXT.md`、`docs/domain/work-order-lifecycle.md` 和长期记忆更新为当前管理端 `0–7` 口径,明确延期中不是终态、验收驳回为动作、驾驶舱必须显式映射管理端状态。