Files
TJWaterAgent/.opencode/skills/workflow/simulation-diagnosis/SKILL.md
T

211 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: tjwater-workflow-simulation-diagnosis
description: 单步长水力计算与管网问题诊断工作流。
version: 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`
```bash
# 基本用法
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),阈值随单位调整。