status: superseded by ADR-0010
ADR-0008 工单生命周期收敛为七态
日期:2026-09-04(状态编码 2026-09-05 调整为从 1 开始)
取代(部分):ADR-0004 跨系统统一工单生命周期 中“驳回、延期日志语义”及隐含的九态口径。
领域共识全文:docs/domain/work-order-lifecycle.md
背景(Context)
统一工单此前在代码与文档中使用九态:1 待派单 / 2 待接单 / 3 已接单 / 4 处理中 / 5 待验收 / 6 已结案 / 7 已驳回 / 8 延期审核 / 9 已延期,并存在两处与实际业务闭环不符的问题:
- “驳回”被建成独立终态,且只允许在待派单/待接单驳回;但真实业务里,管理员是在“待验收”阶段对处置结果不满意,需要把工单退回“处理中”让同一责任人继续整改,而不是终止工单。旧实现缺失“待验收→处理中”这条回退边。
- “取消”没有独立终态:旧
cancel 与 reject 都写入状态 7,数据上无法区分“取消”和“驳回”;同时“延期审核/已延期”使状态机膨胀,而当前交付流程并不包含延期环节。
前端 CONTEXT.md、UE 驾驶舱 CONTEXT.md 与 issue#10、供应商需求文档又分别写成“含已驳回的阶段”“完整保留九态”,三套口径互相不一致。
决策(Decision)
以新的七态模型作为跨三仓(后端、前端、UE)唯一领域权威,状态编码从 1 开始:
- 状态:
1 待派单 / 2 待接单 / 3 已接单 / 4 处理中 / 5 待验收 / 6 已结案 / 7 已取消,终态仅“已结案 / 已取消”。
- 驳回是动作不是状态:验收驳回 =
待验收(5) → 处理中(4),必须带驳回原因,交同一责任人继续处置。
- 取消进入独立终态“已取消(7)”:任意中间态(1–5)可由管理员取消,已结案不可取消;取消后需要继续处置的,另建新工单派给新责任人。
- 删除延期:移除“延期审核/已延期”两态及主流程中的申请/审核延期环节。
- 巡检、维修等工单允许创建即下派,直接进入“待接单(2)”。
- 继续使用数据库状态机与事务服务,不引入工作流引擎;附件仍按 ADR-0006 分阶段存储。
编码与迁移
- 领域文档以状态名为权威,目标编码为 1–7;现网
work_order.order_status 仍是旧 1–9。目标编码从 1 开始后,前六态(1–6)与现网旧编码同值,仅第 7 态语义不同。
- 本次只确立领域共识与文档,不重排数据库、不改后端代码;代码改造与存量数据编码迁移另开任务,按生命周期文档第 8 节对照表执行。
- 迁移任务内容包括:把旧 7(“已驳回”/取消混用)重定义为独立“已取消(7)”、实现 5→4 验收驳回回退、下线延期状态(旧 8/9)/字段语义、统一工单操作日志类型,并同步前端与 UE 的状态字典;前六态编码与现网一致,无需整体重排。
后果(Consequences)
- 三仓对工单状态的表述统一为七态,消除“已驳回是状态还是动作”“是否保留九态/延期”的长期分歧。
- UE 驾驶舱按七态只读展示工单当前状态与状态时间线,不提供任何处置写入口;原 issue#10“保留九态”按本决策改为七态。
- 在后端迁移完成前存在“文档目标编码 1–7 / 现网编码 1–9(前六态同值,第 7 态语义不同)”的临时双轨期,所有接口、测试与 UI 以状态名和对照表换算,不得再新增依赖“已驳回终态/延期”的功能。
- ADR-0004 中“跨系统共用统一工单、以设备类型树确定系统归属、数据库状态机、兼容旧入口”等仍然有效;仅其“驳回、延期日志语义”被本 ADR 取代。