7.6 KiB
7.6 KiB
name, description, version
| name | description | version |
|---|---|---|
| tjwater-workflow-simulation-diagnosis | 单步长水力计算与管网问题诊断工作流。 | 3.0.0 |
Simulation Diagnosis Workflow Skill
简介
simulation run → 查询模拟结果 → 快速综合诊断 → 结构化报告。覆盖超流速、低压区、高水损、死水管段、Closed 阀门等常见运行问题。
仅依赖模拟结果(无需管径/长度/粗糙度等属性),适用于快速巡检、初筛、事故后评估。如需结合管径做详细瓶颈评分与改造建议,走 bottleneck-analysis 工作流。
执行速览(Golden Path)
"跑一下水力计算看看管网有什么问题" 的标准执行路径:
┌──────────────────────────────────────────────────────────────┐
│ 1. tjwater_cli(command="simulation run --start-time ... │
│ --duration 30") │
│ ↓ 模拟结果写入服务端时序库 │
│ 2. tjwater_cli(command="data timeseries realtime links │
│ --start-time ... --end-time ...") │
│ ↓ (写为本地 JSON) │
│ 3. python diagnose_simulation.py result.json │
│ ↓ (stdout 结构化报告) │
│ 4. 解读脚本输出 → 按严重级别组织 Markdown 报告 │
│ ↓ (可选) │
│ 5. show_chart / locate_features / view_scada │
└──────────────────────────────────────────────────────────────┘
关键原则:排序/筛选/聚合全部在 Python 脚本或本地完成。前端工具仅用于渲染。
适用场景
| 场景 | 说明 |
|---|---|
| "跑一次水力计算看看管网有什么问题" | 直接适用,走 Golden Path |
| 管道属性接口不可用或数据不全 | 仅依赖模拟结果,无需属性数据 |
| 快速巡检 / 定期健康检查 | 低开销,脚本一秒给出问题概览 |
| 爆管/事故后的快速评估 | 单步稳态模拟,快速定位异常区域 |
| 作为 bottleneck-analysis 的前置筛查 | 先定位问题区域,再深入分析 |
阶段一:触发模拟运行
CLI 调用
tjwater_cli:
command: "simulation run --start-time 2025-01-02T03:04:05+08:00 --duration 30"
--start-time:模拟起始绝对时间,必须显式带时区(UTC+8)--duration:模拟持续分钟数- 结果写入服务端时序库,不直接返回
查询模拟结果
tjwater_cli:
command: "data timeseries realtime links --start-time 2025-01-02T03:04:05+08:00 --end-time 2025-01-02T03:34:05+08:00"
timeout: 300
tjwater_cli:
command: "data timeseries realtime nodes --start-time 2025-01-02T03:04:05+08:00 --end-time 2025-01-02T03:34:05+08:00"
timeout: 300
返回数据结构
输出为 JSON,data 字段包含结果数组。
links — 管段水力状态:
| 字段 | 单位 | 说明 |
|---|---|---|
| link_id | — | 管段 ID |
| flow | LPS | 流量(正负表示流向) |
| velocity | m/s | 流速 |
| headloss | m | 水头损失 |
| status | — | Open / Closed / Critical |
nodes — 节点水力状态:
| 字段 | 单位 | 说明 |
|---|---|---|
| node_id | — | 节点 ID |
| demand | LPS | 需水量 |
| head | m | 水头 |
| pressure | KPA | 压力 |
阶段二:全局异常检查(优先!)
在进入局部分析之前,必须检查以下全局信号——如果命中则直接输出针对性诊断:
| 全局信号 | 判定条件 | 含义 | 处理 |
|---|---|---|---|
| 模拟断流 | 所有 link velocity ≈ 0 | 阀门全关 / 水源缺失 / 模型断连 | 检查模型配置,不做局部分析 |
| 模拟未收敛 | 所有 node pressure = 0 | 水力方程未收敛 | 检查 INP 设定,不做局部分析 |
| 系统性低压 | >70% 节点 pressure < 28 KPA | 水源水头不足 / 泵站扬程不够 | 输出"全局性低压"结论,排查水源/泵站 |
| 结果不完整 | links 或 nodes 结果为空 | 接口异常或模型损坏 | 报告数据不可用,提示重试 |
阶段三:自动诊断
使用 diagnose_simulation.py
脚本路径:scripts/diagnose_simulation.py
# 基本用法
python scripts/diagnose_simulation.py /tmp/opencode/sim_result.json
# 自定义阈值
python scripts/diagnose_simulation.py /tmp/opencode/sim_result.json \
--velocity-warn 1.2 \
--velocity-critical 2.0 \
--pressure-warn 40 \
--pressure-critical 28 \
--headloss-top 30 \
--flow-top 20
# 仅输出摘要
python scripts/diagnose_simulation.py /tmp/opencode/sim_result.json --summary-only
脚本自动完成:
- 全局统计(管段/节点总数,流速/压力/流量/水损的 max/mean/分位数)
- 超流速管段 TOP 20
- 高水损管段 TOP 30
- 低压节点统计
- 零流量管段、Closed 管段
- 高流量主干管 TOP 20
阶段四:报告生成与可视化
报告结构
---
## 管网运行诊断报告
### 一、模拟概况
- 时间窗口 / 管网规模 / 单位
### 二、主要发现(按严重程度排序)
🚨 紧急 / ⚡ 重点 / 📋 关注
每项含:问题标题 + 受影响数 + TOP 示例(3-5条含数据) + 可能原因 + 建议
### 三、数据局限
- 区分"数据直接支持的结论"和"工程经验的推测"
- 标注管径数据是否缺失及其对结论的影响
可视化(可选)
show_chart:流速/压力分布柱状图locate_features:地图定位 TOP 问题管段view_scada:问题区域实时监测render_junctions+store_render_ref:按压力区间着色
诊断指标参考阈值
| 指标 | 阈值 | 依据 |
|---|---|---|
| 流速安全上限 | 1.2 m/s | 行业管道冲刷防护上限 |
| 流速紧急上限 | 2.0 m/s | 严重超速临界值 |
| 最低供水压力 | 28 KPA | 国标 GB 50268 |
| 正常压力下限 | 40 KPA | 居民供水压力下限 |
所有阈值为可调启发式,脚本支持参数覆写。
下游衔接:何时升级到 bottleneck-analysis
| 诊断发现 | 行动 |
|---|---|
| 系统性低压(>70% 节点 <28 KPA) | 不进入 bottleneck-analysis;排查水源/泵站 |
| TOP 20 超速管段中 ≥5 条流速 >1.5 m/s | 升级到 bottleneck-analysis |
| 存在多维度交叉异常管段 | 升级分析 |
| 仅少量告警、无紧急项 | 结束,不升级 |
数据移交:从 diagnosis 结果提取 TOP 问题管段 ID 列表,传入 bottleneck-analysis。
Learned Patterns
- [d1f826184d8709db1988b00a] 渐进式 Top-K 分析:大结果集先算全局统计量定位异常范围,再对 Top-K 做明细检查。
- [a19477bebe442e5d87bc78bc] 多准则交叉印证:同时分析 velocity / headloss / flow / pressure 四个维度,紧急管段需满足多项异常条件。
- [cf50cc317b9bfe254426482d] API 数据降级:管道属性不可用时不停流程,用 velocity / headloss 作为代理指标。
- [1cd621a60d7481a1c072a54f] 系统性低压优先诊断:全网 >70% 节点 pressure<28KPA 时定位为全局性问题。
- [a7c30102cf5c2a5c0e8cc8dd] 诊断脚本标准化:
diagnose_simulation.py是分析主力,支持自定义阈值。 - [8b533e5bfc43c014ebcc90cf] 压力单位验证:验证 pressure 字段实际单位(KPA vs m H₂O),阈值随单位调整。