Files
next-tjwater-server/docs/fengyang-burst-scada.md
jiang 1d061f6099
Generic Container CI/CD / test-build-publish (push) Failing after 6s
Server CI/CD v2 / build-test-publish-and-deploy (push) Failing after 6s
feat: add project-scoped operations
2026-10-22 18:40:20 +08:00

66 lines
4.1 KiB
Markdown
Raw Permalink 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.
# 凤阳六月爆管模拟与 SCADA 复制
2026-10-22 已完成活动项目 `fengyang_v2`
(`b962c44e-8433-4a10-81e9-a64b70ac1152`)的三段模拟爆管数据及前一天基线复制。
一次性复制脚本及其专属测试已清理,来源、核对结果和备份记录如下:
| 方案名称 | 模型管段 | 模型管径 |
| --- | --- | --- |
| `2026-06-02 Pipe19026 DN200 burst` | `19026` | 200 mm |
| `2026-06-12 Pipe18751 DN160 burst` | `18751` | 160 mm |
| `2026-06-22 Pipe18750 DN160 burst` | `18750` | 160 mm |
方案名称、`burst_ID` 和 `network.pipes.diameter` 必须一致。时间使用方案的
`started_at` 和结果时间戳,历时为 4 小时,包含起止点,15 分钟一个采样。
不使用项目说明中的历史时间窗,也不使用旧的 `5hrs burst scheme` 数据。
源数据为 `analysis.node_results.pressure`,仅复制既有 50 个压力设备
`asset.scada_devices.node_id` 对应的节点。每段必须完整覆盖 17 个时间点,
即 850 条观测,三段共 2,550 条;方案状态必须为 `completed`。
压力源单位来自每个方案的 `parameters.result_units.pressure`,目标单位来自
设备的 `measurement_unit`,并用总水头减节点高程核对压力单位。缺失水头、
高程或单位不一致时拒绝写入。例如真正的 kPa 转米水头使用 `pressure / 9.80665`。
不添加噪声、不平移日期、不插值。写入 `scada.measurements.monitored_value`,
同时将窗口内对应观测的 `cleaned_value` 清空,避免使用旧观测的清洗结果。
其他日期、其他设备及模拟源数据保持原样;原有其他模拟事件也保留。
正常基线直接读取 `realtime.node_results`,保留其原始日期和压力值。每段在线
模拟采用右端不含的时间窗,4 小时共有 16 个采样点,最后一个点比窗口终点
早 15 分钟。三段共 2,400 条观测。基线源单位来自模型配置,并同样校验
总水头减高程;不从爆管结果或旧 SCADA 推导正常值。
| 管段 | 爆管数据时间(北京时间,含末点) | 前一天基线采样时间(北京时间) |
| --- | --- | --- |
| `19026` DN200 | 6 月 2 日 08:00–12:00 | 6 月 1 日 08:00–11:45 |
| `18751` DN160 | 6 月 12 日 12:00–16:00 | 6 月 11 日 12:00–15:45 |
| `18750` DN160 | 6 月 22 日 18:00–22:00 | 6 月 21 日 18:00–21:45 |
定位算法配对比较时应采用共同的 16 个相对采样时刻,或明确使用右端不含的
4 小时时间窗,避免将爆管结果额外的终点与不存在的基线终点配对。
2026-10-22 核查发现 EPANET 输出解析曾将压力枚举 1、2 的单位名称写反。
已改为 `0=PSI, 1=KPA, 2=MTR`,并通过本地原生 EPANET 输出测试验证。
这三个方案的全部 2,550 个压力值都与米制水头减高程一致,元数据已纠正为
`MTR`,原始模拟数值保持不变。SCADA 最终使用设备的 `m` 单位,无额外换算。
更正前的三个方案参数与核查证据保存在忽略目录
`data/fengyang-result-unit-correction/`。
本次最终复制记录为
`data/fengyang-burst-scada/20261022T101442415337Z/report.json`:
2,550 条爆管观测与 2,400 条前一天基线,共替换 4,950 条观测;SCADA 整表
仍为 144,000 条、50 个设备。窗口外指纹不变,独立 SQL 比对六段数据与源值
差异为零,重复只读预览显示 4,950 条均已一致。三个方案均为 `completed`。
本次执行前已锁定观测表并备份整表至忽略目录
`data/fengyang-burst-scada/<UTC时间>/measurements-before.csv`,同时保存
`prepared.json`(来源、设备映射、备份校验和)和 `expected.json`(预期观测)。
目录权限为 0700,文件权限为 0600,不包含数据库凭据。
本次复制在一个事务中完成,逐条比对预期值、核对总行数、校验窗口外数据
指纹不变。提交后使用新连接再次读回校验,已保存 `report.json`。
如需恢复,先核对对应报告的备份校验和,将 CSV 导入临时表,再仅恢复
`expected.json` 中的 `(time, device_id)` 键;不要整表覆盖当前观测。
数据库读回校验不代表已经完成 HTTP、界面回放或爆管定位算法验收。