feat(scada): add calibrated monitoring and incident recovery

This commit is contained in:
2026-11-07 19:44:58 +08:00
parent 26fa5d1909
commit ff8aba4964
109 changed files with 9165 additions and 629 deletions
@@ -0,0 +1,38 @@
{
"version": "burst-benchmark@1",
"suite_id": "tjwater-v2-burst",
"project_code": "tjwater_v2",
"project_id": "324ff7ee-c2d4-5184-a84b-48fb14a2933e",
"sampling_interval_minutes": 15,
"event_minutes": 60,
"detector_days": 15,
"trigger_rule": {
"pressure_drop_percent": 30,
"baseline_samples": 4,
"consecutive_samples": 2,
"minimum_devices": 2
},
"score_weights": {"outcome": 60, "tools": 20, "plan": 15, "efficiency": 5},
"cases": [
{
"case_id": "B01", "pipe_id": "540672", "occurred_at": "2026-10-08T02:00:00+08:00",
"reference_analysis": "test_burst_20260614", "observation_provenance": "requires_generation",
"provenance_note": "夜间爆管尚无已核实的对应异常观测;不能平移中午曲线或将正常观测当作本事件。"
},
{
"case_id": "B02", "pipe_id": "540672", "occurred_at": "2026-10-08T12:00:00+08:00",
"reference_analysis": "test_burst_20260614", "observation_provenance": "declared_historical_replay",
"provenance_note": "present.md 记录该窗口由 test_burst_20260614 生成;需核查当前观测及参考方案,历史声明本身不等于数值验收。"
},
{
"case_id": "B03", "pipe_id": "537407", "occurred_at": "2026-10-08T02:00:00+08:00",
"reference_analysis": "burst_20260610_dn600", "observation_provenance": "requires_generation",
"provenance_note": "存在历史模拟参考,但未核实本时间窗口的该管段异常 SCADA;需在隔离环境生成。"
},
{
"case_id": "B04", "pipe_id": "537407", "occurred_at": "2026-10-08T12:00:00+08:00",
"reference_analysis": "burst_20260610_dn600", "observation_provenance": "requires_generation",
"provenance_note": "本窗口已有其他管段的爆管演示,不能复用为 537407 的真值。"
}
]
}
@@ -0,0 +1,485 @@
{
"version": "burst-simulation-design@1",
"suite_id": "tjwater2-v2-burst-calibration",
"project_code": "tjwater2_v2",
"project_id": "871d7538-589c-47de-a6d5-3185ccb9f0e1",
"model_expectations": {
"node_count": 92393,
"pipe_count": 91050,
"valve_count": 4489,
"flow_unit": "LPS",
"pressure_unit": "METERS",
"pressure_measurement_unit": "m",
"flow_measurement_unit": "m3/h",
"emitter_exponent": 0.5,
"hydraulic_timestep_seconds": 900,
"report_timestep_seconds": 900
},
"duration_seconds": 18000,
"event_times": [
"2026-10-08T02:00:00+08:00",
"2026-10-08T08:00:00+08:00",
"2026-10-08T12:00:00+08:00",
"2026-10-08T20:00:00+08:00"
],
"severity_levels": [
{
"level": "light",
"cross_section_fraction": 0.03125
},
{
"level": "medium",
"cross_section_fraction": 0.0625
},
{
"level": "severe",
"cross_section_fraction": 0.125
}
],
"calibration_order": [
"severe",
"medium",
"light"
],
"selection_rule": {
"primary_pressure_drop_percent": 30.0,
"corroborating_pressure_drop_percent": 10.0,
"flow_change_percent": 20.0,
"consecutive_samples": 2,
"expected_sample_count": 21,
"relative_change_epsilon": 1e-06,
"normal_control_must_not_trigger": true,
"negative_monitor_pressure_allowed": false,
"choose_smallest_passing_area": true
},
"binding_validation": {
"max_pressure_distance_m": 1.0,
"max_flow_distance_m": 1.0
},
"cases": [
{
"case_id": "B25",
"pipe_id": "564345",
"occurred_at": "2026-10-08T02:00:00+08:00"
},
{
"case_id": "B26",
"pipe_id": "564345",
"occurred_at": "2026-10-08T08:00:00+08:00"
},
{
"case_id": "B27",
"pipe_id": "564345",
"occurred_at": "2026-10-08T12:00:00+08:00"
},
{
"case_id": "B28",
"pipe_id": "564345",
"occurred_at": "2026-10-08T20:00:00+08:00"
},
{
"case_id": "B29",
"pipe_id": "541725",
"occurred_at": "2026-10-08T02:00:00+08:00"
},
{
"case_id": "B30",
"pipe_id": "541725",
"occurred_at": "2026-10-08T08:00:00+08:00"
},
{
"case_id": "B31",
"pipe_id": "541725",
"occurred_at": "2026-10-08T12:00:00+08:00"
},
{
"case_id": "B32",
"pipe_id": "541725",
"occurred_at": "2026-10-08T20:00:00+08:00"
},
{
"case_id": "B33",
"pipe_id": "538540",
"occurred_at": "2026-10-08T02:00:00+08:00"
},
{
"case_id": "B34",
"pipe_id": "538540",
"occurred_at": "2026-10-08T08:00:00+08:00"
},
{
"case_id": "B35",
"pipe_id": "538540",
"occurred_at": "2026-10-08T12:00:00+08:00"
},
{
"case_id": "B36",
"pipe_id": "538540",
"occurred_at": "2026-10-08T20:00:00+08:00"
},
{
"case_id": "B37",
"pipe_id": "541116",
"occurred_at": "2026-10-08T02:00:00+08:00"
},
{
"case_id": "B38",
"pipe_id": "541116",
"occurred_at": "2026-10-08T08:00:00+08:00"
},
{
"case_id": "B39",
"pipe_id": "541116",
"occurred_at": "2026-10-08T12:00:00+08:00"
},
{
"case_id": "B40",
"pipe_id": "541116",
"occurred_at": "2026-10-08T20:00:00+08:00"
}
],
"pipes": [
{
"role": "primary",
"pipe_id": "564345",
"diameter_mm": 150.0,
"length_m": 249.176,
"start_node_id": "92686",
"emitter_node_id": "7427148338069072993",
"longitude": 121.47111853069737,
"latitude": 31.005630555976175,
"candidate_orifice_areas_cm2": {
"light": 5.522331,
"medium": 11.044662,
"severe": 22.089323
},
"pressure_bindings": [
{
"device_id": "92724",
"node_id": "92724"
},
{
"device_id": "100026",
"node_id": "100026"
},
{
"device_id": "115039",
"node_id": "115039"
},
{
"device_id": "107672",
"node_id": "107672"
},
{
"device_id": "107651",
"node_id": "107651"
}
],
"flow_bindings": [
{
"device_id": "542017",
"link_id": "542017"
},
{
"device_id": "486033",
"link_id": "486033"
},
{
"device_id": "542121",
"link_id": "570995"
},
{
"device_id": "449417",
"link_id": "449417"
},
{
"device_id": "516234",
"link_id": "516234"
}
],
"boundary_valve_ids": [
"valve-12b1e80612f9432da0e64485",
"valve-880f34624a444f5497faf2ca",
"valve-b6cc8d68e38f43c9b3389e04",
"valve-f189692cccbd40a69dc26cca",
"valve-fa0583a6ac134aeb9513ada5"
],
"output_node_ids": [
"92686",
"7427148338069072993",
"92724",
"100026",
"115039",
"107672",
"107651"
],
"output_link_ids": [
"449417",
"486033",
"516234",
"542017",
"564345",
"570995",
"valve-12b1e80612f9432da0e64485",
"valve-880f34624a444f5497faf2ca",
"valve-b6cc8d68e38f43c9b3389e04",
"valve-f189692cccbd40a69dc26cca",
"valve-fa0583a6ac134aeb9513ada5"
]
},
{
"role": "secondary",
"pipe_id": "541725",
"diameter_mm": 600.0,
"length_m": 495.368,
"start_node_id": "170464",
"emitter_node_id": "170438",
"longitude": 121.56978490259476,
"latitude": 30.956880413066592,
"candidate_orifice_areas_cm2": {
"light": 88.357293,
"medium": 176.714587,
"severe": 353.429174
},
"pressure_bindings": [
{
"device_id": "170486",
"node_id": "170486"
},
{
"device_id": "175618",
"node_id": "175618"
},
{
"device_id": "159673",
"node_id": "159673"
},
{
"device_id": "135160",
"node_id": "135160"
},
{
"device_id": "174754",
"node_id": "174754"
}
],
"flow_bindings": [
{
"device_id": "542017",
"link_id": "542017"
},
{
"device_id": "486033",
"link_id": "486033"
},
{
"device_id": "542121",
"link_id": "570995"
},
{
"device_id": "524529",
"link_id": "524529"
},
{
"device_id": "541061",
"link_id": "541061"
}
],
"boundary_valve_ids": [
"valve-316b3cfa3f40446e90f8c4c4",
"valve-35cccbe86fdf480884e196b5",
"valve-75f76a9f944d4f9aa1941a1b",
"valve-e3238a6bd5784e8d86b9b25e"
],
"output_node_ids": [
"135160",
"159673",
"170438",
"170464",
"170486",
"174754",
"175618"
],
"output_link_ids": [
"486033",
"524529",
"541061",
"541725",
"542017",
"570995",
"valve-316b3cfa3f40446e90f8c4c4",
"valve-35cccbe86fdf480884e196b5",
"valve-75f76a9f944d4f9aa1941a1b",
"valve-e3238a6bd5784e8d86b9b25e"
]
},
{
"role": "secondary",
"pipe_id": "538540",
"diameter_mm": 500.0,
"length_m": 121.485,
"start_node_id": "101686",
"emitter_node_id": "101680",
"longitude": 121.48750960472518,
"latitude": 30.82388769570228,
"candidate_orifice_areas_cm2": {
"light": 61.359232,
"medium": 122.718463,
"severe": 245.436926
},
"pressure_bindings": [
{
"device_id": "121456",
"node_id": "121456"
},
{
"device_id": "102837",
"node_id": "102837"
},
{
"device_id": "84776",
"node_id": "84776"
},
{
"device_id": "112240",
"node_id": "112240"
},
{
"device_id": "87082",
"node_id": "87082"
}
],
"flow_bindings": [
{
"device_id": "542017",
"link_id": "542017"
},
{
"device_id": "486033",
"link_id": "486033"
},
{
"device_id": "542121",
"link_id": "570995"
},
{
"device_id": "508453",
"link_id": "508453"
},
{
"device_id": "527865",
"link_id": "527865"
}
],
"boundary_valve_ids": [
"valve-beab0b66708a4ae99b5e7f5f",
"valve-db75ca893cd246d498786475"
],
"output_node_ids": [
"101680",
"101686",
"102837",
"112240",
"121456",
"84776",
"87082"
],
"output_link_ids": [
"486033",
"508453",
"527865",
"538540",
"542017",
"570995",
"valve-beab0b66708a4ae99b5e7f5f",
"valve-db75ca893cd246d498786475"
]
},
{
"role": "secondary",
"pipe_id": "541116",
"diameter_mm": 200.0,
"length_m": 228.424,
"start_node_id": "40239",
"emitter_node_id": "50835",
"longitude": 121.44164078044408,
"latitude": 30.982724814068543,
"candidate_orifice_areas_cm2": {
"light": 9.817477,
"medium": 19.634954,
"severe": 39.269908
},
"pressure_bindings": [
{
"device_id": "32070",
"node_id": "32070"
},
{
"device_id": "406444",
"node_id": "406444"
},
{
"device_id": "49186",
"node_id": "49186"
},
{
"device_id": "28671",
"node_id": "28671"
},
{
"device_id": "31346",
"node_id": "31346"
}
],
"flow_bindings": [
{
"device_id": "542017",
"link_id": "542017"
},
{
"device_id": "486033",
"link_id": "486033"
},
{
"device_id": "542121",
"link_id": "570995"
},
{
"device_id": "527865",
"link_id": "527865"
},
{
"device_id": "489082",
"link_id": "489082"
}
],
"boundary_valve_ids": [
"valve-89687cf53f95423c8f768d52",
"valve-9781a936671f41a9bcde8c61",
"valve-9e1f308e13df43a398f2e0d5",
"valve-a29aa553a66e490f96b443de"
],
"output_node_ids": [
"28671",
"31346",
"32070",
"40239",
"406444",
"49186",
"50835"
],
"output_link_ids": [
"486033",
"489082",
"527865",
"541116",
"542017",
"570995",
"valve-89687cf53f95423c8f768d52",
"valve-9781a936671f41a9bcde8c61",
"valve-9e1f308e13df43a398f2e0d5",
"valve-a29aa553a66e490f96b443de"
]
}
]
}
@@ -0,0 +1,37 @@
{
"version": "burst-demo-scada@1",
"project_code": "tjw_bench_tjwater2_20261105",
"normal_source_start": "2026-05-01T00:00:00+08:00",
"day_count": 17,
"noise_seed": "tjwater2-normal-scada-v1",
"cases": [
{
"demo_id": "DEMO-202605-B26-severe",
"case_key": "B26-severe",
"target_start": "2026-05-01T00:00:00+08:00",
"event_start": "2026-05-16T08:00:00+08:00",
"entry_mode": "scada_auto"
},
{
"demo_id": "DEMO-202606-B28-severe",
"case_key": "B28-severe",
"target_start": "2026-06-01T00:00:00+08:00",
"event_start": "2026-06-16T20:00:00+08:00",
"entry_mode": "scada_auto"
},
{
"demo_id": "DEMO-202607-B30-severe",
"case_key": "B30-severe",
"target_start": "2026-07-01T00:00:00+08:00",
"event_start": "2026-07-16T08:00:00+08:00",
"entry_mode": "work_order_60"
},
{
"demo_id": "DEMO-202608-B35-severe",
"case_key": "B35-severe",
"target_start": "2026-08-01T00:00:00+08:00",
"event_start": "2026-08-16T12:00:00+08:00",
"entry_mode": "work_order_120"
}
]
}
@@ -4,8 +4,8 @@
"project_code": "tjwater2_v2",
"project_id": "871d7538-589c-47de-a6d5-3185ccb9f0e1",
"model_expectations": {
"node_count": 92392,
"pipe_count": 91049,
"node_count": 92393,
"pipe_count": 91050,
"valve_count": 4489,
"flow_unit": "LPS",
"pressure_unit": "METERS",
@@ -42,95 +42,98 @@
"max_flow_distance_m": 1.0
},
"cases": [
{"case_id": "B01", "pipe_id": "541720", "occurred_at": "2026-10-08T02:00:00+08:00"},
{"case_id": "B02", "pipe_id": "541720", "occurred_at": "2026-10-08T12:00:00+08:00"},
{"case_id": "B03", "pipe_id": "520323", "occurred_at": "2026-10-08T02:00:00+08:00"},
{"case_id": "B04", "pipe_id": "520323", "occurred_at": "2026-10-08T12:00:00+08:00"}
{"case_id": "B05", "pipe_id": "564345", "occurred_at": "2026-10-08T02:00:00+08:00"},
{"case_id": "B06", "pipe_id": "564345", "occurred_at": "2026-10-08T12:00:00+08:00"},
{"case_id": "B07", "pipe_id": "540173", "occurred_at": "2026-10-08T02:00:00+08:00"},
{"case_id": "B08", "pipe_id": "540173", "occurred_at": "2026-10-08T12:00:00+08:00"}
],
"pipes": [
{
"role": "primary",
"pipe_id": "541720",
"diameter_mm": 800,
"length_m": 483.038,
"start_node_id": "532586",
"emitter_node_id": "502046",
"longitude": 121.483586,
"latitude": 30.996219,
"pipe_id": "564345",
"diameter_mm": 150,
"length_m": 249.176,
"start_node_id": "92686",
"emitter_node_id": "7427148338069072993",
"longitude": 121.469870,
"latitude": 31.005517,
"candidate_orifice_areas_cm2": {
"light": 157.079633,
"medium": 314.159265,
"severe": 628.318531
"light": 5.522331,
"medium": 11.044662,
"severe": 22.089323
},
"pressure_bindings": [
{"device_id": "447382", "node_id": "7543252226207002012"},
{"device_id": "444985", "node_id": "14141146287589625673"},
{"device_id": "92724", "node_id": "92724"},
{"device_id": "100026", "node_id": "100026"},
{"device_id": "115039", "node_id": "115039"},
{"device_id": "107672", "node_id": "107672"}
{"device_id": "107672", "node_id": "107672"},
{"device_id": "107651", "node_id": "107651"}
],
"flow_bindings": [
{"device_id": "542121", "link_id": "pipe-eaa5c512bd8f4649b37bdbe3d"},
{"device_id": "542017", "link_id": "542017"},
{"device_id": "486033", "link_id": "486033"},
{"device_id": "542121", "link_id": "570995"},
{"device_id": "449417", "link_id": "449417"},
{"device_id": "516234", "link_id": "516234"}
],
"boundary_valve_ids": [
"valve-6fd58ab5b5714fbab738a544",
"valve-8aea6a1876d8475b9f35a845"
"valve-12b1e80612f9432da0e64485",
"valve-b6cc8d68e38f43c9b3389e04",
"valve-fa0583a6ac134aeb9513ada5",
"valve-f189692cccbd40a69dc26cca",
"valve-880f34624a444f5497faf2ca"
],
"output_node_ids": [
"12290448554375617026", "1371402016460607520", "400946", "413270",
"414851", "465564", "466633", "482531", "493166", "502046",
"532586", "7543252226207002012", "14141146287589625673",
"100026", "115039", "107672"
"92686", "7427148338069072993", "92724", "100026", "115039", "107672", "107651"
],
"output_link_ids": [
"541720", "pipe-eaa5c512bd8f4649b37bdbe3d", "449417", "516234",
"valve-6fd58ab5b5714fbab738a544",
"valve-8aea6a1876d8475b9f35a845"
"564345", "542017", "486033", "570995", "449417", "516234",
"valve-12b1e80612f9432da0e64485", "valve-b6cc8d68e38f43c9b3389e04",
"valve-fa0583a6ac134aeb9513ada5", "valve-f189692cccbd40a69dc26cca", "valve-880f34624a444f5497faf2ca"
]
},
{
"role": "secondary",
"pipe_id": "520323",
"diameter_mm": 300,
"length_m": 33.5951,
"start_node_id": "91054",
"emitter_node_id": "91055",
"longitude": 121.468305,
"latitude": 30.932363,
"pipe_id": "540173",
"diameter_mm": 200,
"length_m": 162.128,
"start_node_id": "500819",
"emitter_node_id": "517120",
"longitude": 121.503495,
"latitude": 30.895889,
"candidate_orifice_areas_cm2": {
"light": 22.089323,
"medium": 44.178647,
"severe": 88.357293
"light": 9.817477,
"medium": 19.634954,
"severe": 39.269908
},
"pressure_bindings": [
{"device_id": "91100", "node_id": "91100"},
{"device_id": "98367", "node_id": "98367"},
{"device_id": "69693", "node_id": "69693"},
{"device_id": "78085", "node_id": "78085"},
{"device_id": "105833", "node_id": "105833"}
{"device_id": "535381", "node_id": "535381"},
{"device_id": "142377", "node_id": "142377"},
{"device_id": "430299", "node_id": "3186958412475415759"},
{"device_id": "121456", "node_id": "121456"},
{"device_id": "87082", "node_id": "87082"}
],
"flow_bindings": [
{"device_id": "527865", "link_id": "527865"},
{"device_id": "489082", "link_id": "489082"},
{"device_id": "531564", "link_id": "531564"}
{"device_id": "542017", "link_id": "542017"},
{"device_id": "486033", "link_id": "486033"},
{"device_id": "542121", "link_id": "570995"},
{"device_id": "491909", "link_id": "491909"},
{"device_id": "524529", "link_id": "524529"}
],
"boundary_valve_ids": [
"valve-18b95b02a7564e7dac737102",
"valve-3a8fd38228d74583a08b00d9",
"valve-3b453e4e901049d1a1346689",
"valve-ad39de2f15f24ade9d18c836",
"valve-fc1164434a954f418a6f11d6"
"valve-fd82099a578046b3bde41d63",
"valve-c9f6343550784ec9b3e97f2b",
"valve-1efb02be70174163948ab7ca",
"valve-4686c52b4d7e4d149c1823de",
"valve-aa89ee883fb4461b91eacc3d",
"valve-5e6f00e167804055830f18d8"
],
"output_node_ids": ["91054", "91055", "91100", "98367", "69693", "78085", "105833"],
"output_node_ids": ["500819", "517120", "535381", "142377", "3186958412475415759", "121456", "87082"],
"output_link_ids": [
"520323", "527865", "489082", "531564",
"valve-18b95b02a7564e7dac737102",
"valve-3a8fd38228d74583a08b00d9",
"valve-3b453e4e901049d1a1346689",
"valve-ad39de2f15f24ade9d18c836",
"valve-fc1164434a954f418a6f11d6"
"540173", "542017", "486033", "570995", "491909", "524529",
"valve-fd82099a578046b3bde41d63", "valve-c9f6343550784ec9b3e97f2b",
"valve-1efb02be70174163948ab7ca", "valve-4686c52b4d7e4d149c1823de",
"valve-aa89ee883fb4461b91eacc3d", "valve-5e6f00e167804055830f18d8"
]
}
]