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
@@ -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"
]
}
]