Files
next-tjwater-server/docs/burst-response-workflow.md
T
jiang 2a7b96f813
Generic Container CI/CD / test-build-publish (push) Successful in 3m58s
Server CI/CD v2 / build-test-publish-and-deploy (push) Successful in 3m58s
fix(scada): verify recovery after replay work-order completion
2026-11-07 23:12:42 +08:00

6.8 KiB
Raw Permalink Blame History

从爆管工单到事件处置闭环

工单触发的 workflow=burst_report 使用 爆管事件处理 Skill。Server 按持久化来源选择流程,Agent 接收同一任务的核验上下文;SCADA 异常和历史回放使用 SCADA Skill。

固定处理路线

flowchart TD
    order[爆管上报工单] --> context[读取原工单与当前任务]
    context --> asset[核对地点并关联管网资产]
    asset --> isolation[分析隔离边界与阀门方案]
    isolation --> impact[说明事件与隔离方案影响]
    impact --> report[保存阶段报告与处置建议]
    report --> approval[人工审批与现场执行]
    approval --> feedback[接收实际处置与恢复反馈]
    feedback --> verify[复核影响与结案条件]
    verify --> close[来源系统确认事件闭环]
    verify -->|新增事实或遗留事项| asset
  1. 接收核对:保留来源工单ID、单调版本、发生时间、位置、描述、现场反馈和已有动作;后续轮次从新增事实接续。
  2. 资产关联:优先核对上报资产编号。坐标或地址通过地理编码、附近资产、属性和连接关系形成有依据的关联;位置歧义列为具体待确认项。
  3. 隔离方案:用 analyze_valve_isolation 分析关联资产,保留必关阀、可选阀、直接隔离与供水失源节点;已知失效阀门用于替代方案分析,现场可操作性列为执行条件。
  4. 影响说明:先展示拓扑范围,再按可用SCADA、水力结果和用户关联资料解释事件当前影响、方案预计影响和保障需求。
  5. 报告与处置:保存阶段报告后提出核验、通知、保障、抢修和恢复等动作草稿;关联现场任务采用 general 工单。审批、派发和现场完成分别核对回执。
  6. 反馈复核:已派发的关联工单保持 waiting_work_order,全部收到有效 completed 反馈后进入 waiting_scada。以现场反馈业务时间为 T,取严格晚于 T 的最近一个 SCADA 采样时刻进行复核;正常范围使用事件前15天同采样相位的正常包络。数据未到或仍异常时保持等待,后台工作进程定期复核;通过后持久保存恢复证据并接续 Agent。Agent 最终报告必须引用该证据,运行完成后才能完成任务并解除对应告警。原事件由有权限人员在来源系统确认行政结案。

SCADA作为事件影响的辅助证据,按目标测点和事件/对照窗口读取。具备水力输入且工具已授权时,使用 analyze_valve_closure 评估给定阀门方案;各步骤记录实际结果、适用范围或具体待补项。

报告固定内容

报告包含事件概况、地点与资产关联、隔离方案、影响说明、处置建议和待办。摘要以150字以内为目标,资产和测点明细放表格,完整依据引用证据。

“影响说明”逐项保留时间、对象、单位、范围、来源与实际或预计的性质:

影响项 依据与输出
事件当前影响 已查询测点的压力、流量、持续时间和恢复情况
直接隔离范围 affected_nodes及对应计数、地图覆盖
新增供水失源范围 supply_affected_nodes及对应计数、地图覆盖
水力影响 给定阀门组合、起算时间、模型条件下的压力和流量结果
用户与保障影响 有资料关联的用户、重点设施、保障需求;缺少关联时报告节点与区域范围

变化量基于同口径对象、单位、时间与模型条件计算;现场实际、模型预测和空间示意分别标注。缺少可选模拟参数时,继续形成已有依据的隔离与保障建议。

工具与入口约束

工单事件从上报位置开展资产关联。Agent会话策略隐藏 run_burst_location,Server在绑定与后续解析时同步移除其调用能力;普通聊天和SCADA候选定位沿用各自策略。持久计算在执行前重新校验任务绑定。

历史 burst_report 任务携带 replay_context 时,Server分发scada-anomaly,时序查询保持 knowledge_cutoff 与 batch_sequence,demo能力提示按冻结窗口返回。

业务阶段和工单、返回时间、复核回执保存在任务文档 handling_context JSON 中,不增加数据库列。外围样板更新工单时可提供带时区的 occurred_at,同时必须填写现场反馈;该时间写入活动记录,系统的 updated_at 仍是实际记录时间。同步器将现场反馈时间传给调查,避免历史演示误用电脑当前时间。

预约时间 scheduled_at 可在派单前的工单草稿和已创建工单的编辑表单中调整。实际完工反馈时间与预约安排分别记录;Agent 以实际反馈时间为恢复复核起点。新的有效现场反馈修订完工时间后,旧复核证据保留为历史记录,当前复核起点更新,重新读取严格晚于新反馈时间的最近一个 SCADA 采样时刻。只修改预约安排或其他工单信息,不改写已有现场反馈时间。

POST /operational-tasks/recovery/reconcile 由现有 operational worker 每轮调用,按项目及任务创建边界处理等待复核的任务;SCADA 读取失败不阻断其他调查派发。复核直接读取项目时序库中完工反馈时间之后最近时刻的 SCADA,不依赖回放状态或推进回放时间。

这条恢复链路同样跟踪带 replay_context 的调查工单。原异常快照的 knowledge_cutoff 和 batch_sequence 保留,普通回放查询继续受其限制;工单完工反馈单独触发 Server 的 ScadaRepository.get_recovery_scada_readings(),以实际完工业务时间为 T,读取严格晚于 T 的最近一帧。例如 2026-07-16 13:00 完工,15 分钟采样时复核 13:15,而非原异常截止的 08:00。Agent 从 handling_context.verification_evidence_id 读取保存的恢复证据,并与原异常证据共同引用,不需放开回放查询或重建复测工单。

已有调查在收到新的有效完工反馈时会补登记成功派发的关联工单。旧回报误用了电脑当前时间时,需在来源工单更正现场反馈业务时间并提交新版本;系统不猜测完工时刻,也不改写原报告或旧证据。

验证

检查Skill名称、版本、摘要与正文digest一致、内联体积、角色权限、工单工具隔离和SCADA定位回归。Agent类型检查与会话工具策略测试共同覆盖运行时入口。发布后分别验收工单事件处理报告和SCADA候选定位,原有报告按既有修订保留。

关联契约:分析 MCP、调查展示、报告契约、任务与多轮反馈。