Files
next-tjwater-server/docs/burst-response-workflow.md
T
jiang 2e4f6cb93b feat(investigations): add event impact and work-order feedback flows
Add isolated burst and pollution impact evidence, parallel work-order workflows, persisted notifications and graph updates.

Checkpoint current code. Known follow-ups remain for large pollution result previews and graceful geometry failure.
2026-11-14 15:14:02 +08:00

10 KiB
Raw Permalink Blame History

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

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

固定处理路线

flowchart TD
    order[爆管上报工单] --> context[读取原工单与当前任务]
    context --> asset[核对地点并关联管网资产]
    asset --> interim[保存定位阶段报告]
    interim --> approval[立即发起工单草稿、人工审核派发]
    interim --> burst[爆管模拟与同刻在线压力差]
    burst --> coverage[保存并展示爆管后、处置前影响覆盖]
    coverage --> isolation[分析隔离边界与阀门方案]
    isolation --> report[补充阶段报告与处置建议]
    approval --> feedback[接收实际处置与恢复反馈]
    feedback --> verify[复核影响与结案条件]
    verify --> close[Server 完成任务并解除告警]
    verify -->|仍异常或有未完成处置| asset
  1. 接收核对:保留来源工单ID、单调版本、发生时间、位置、描述、现场反馈和已有动作;后续轮次从新增事实接续。
  2. 资产关联:优先核对上报资产编号。坐标或地址通过地理编码、附近资产、属性和连接关系形成有依据的关联;位置歧义列为具体待确认项。
  3. 并行工单与影响估计:定位到管道后保存 interim/concluded 阶段报告,随即提出现场核查/抢修 general 工单草稿;复用同一 action_id,人工审核、确认派发保持现有权限和版本校验。待审核或现场处理期间继续独立的影响模拟,不等待模型完成才发起工单。
  4. 隔离方案:用 analyze_valve_isolation 分析关联资产,保留必关阀、可选阀、直接隔离与供水失源节点;已知失效阀门用于替代方案分析,现场可操作性列为执行条件。
  5. 影响说明:先保留爆管后、处置前的压力下降覆盖步骤,再展示隔离方案的拓扑范围;结合可用SCADA、水力与用户关联说明影响。
  6. 报告与处置:定位阶段已发起现场工单,后续复用原动作;更新报告后按新增需要提出通知、保障或恢复等动作草稿;关联现场任务采用 general 工单。审批、派发和现场完成分别核对回执。
  7. 反馈复核:已派发的关联工单保持 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、调查展示、报告契约、任务与多轮反馈。

爆管压力下降覆盖与历史还原

run_burst_simulation 新增可选 include_impact_coverage=true,原默认行为保留。指定已定位管道、带时区的事件起算时刻及有来源或明确估计依据的破口面积(cm²)。计算保持隔离临时模型、不保存分析方案、不重算在线基线,不施加新的关阀或抢修操作。

在筛选最多20个展示节点之前,以原生模拟全网节点的起算首帧为计算对象,严格读取同一时刻已有在线模拟压力。不同压力单位换算为米水头,下降量为在线压力减爆管压力,互斥划分 1≤Δ<3 m、3≤Δ<5 m、Δ≥5 m。小于1米与缺少可比数据分别计数;错时、缺测、无效值或未知单位不补零、不取邻近值,不从代表测点外推全网。需要 simulation.run、scada.view,影响比较另需 simulation.view。

输出 impact 保留每个可比节点的在线压力、爆管压力、下降量、分组、缺测清单、比较时刻和读取来源;coverage 和 map_payload 使用实际GIS节点坐标生成三档空间包络。缺坐标、覆盖节点超过10000或几何超预算时明确报告,不截取前若干节点冒充完整范围。地图采用黄/橙/红,图例保留每档已绘制/分组节点数。

爆管模型使用 PDA 需水方式和原有10模型压力单位的服务压力设定;在线模型方式、当前模型时态及在线压力单位推定来源一并保留。在线记录没有独立版本化单位元数据,不能把此估计称为严格历史同模型反事实或现场停水边界。

携带 replay_context 的调查只开放启用影响覆盖的爆管情景,起算时刻不得超过 knowledge_cutoff。使用当前模型的独立假设情景,初始化及扩展模拟均传入空SCADA边界映射,禁止从实时SCADA回填冻结观测;同刻在线结果仅作为计算时读取的模型参考,标明非冻结基线。未来样本属于预测,不能作为已发生的观测。

完成持久计算后,Agent按回执 data.presentation.command 用证据编号发布覆盖,并保存三档计数、假设与缺口表。Server从任务所属的不可变证据解析几何,将完整展示命令写入事件。历史播放还原这份命令,前进到隔离范围和后退到事件影响均不重新查询在线模型,也不派单。工单审核、派发与反馈继续由通知和标准工单窗口记录;模型结果补入同一调查,不重复创建工单。

全网结果超过单次工具回执上限时,默认 get_calculation_result 返回标明缩略的计数与模型条件、保存证据资源链接及可发布地图命令。原始逐节点结果和几何保持完整,可通过证据资源或 data_path=["result","impact","comparisons"] 分页读取;不将全网计算缩为20个展示节点。