优化 CLI 命令,增加获取所有节点和管道属性的功能

This commit is contained in:
2026-06-03 17:31:49 +08:00
parent 233960d8db
commit b7872f29a9
12 changed files with 823 additions and 433 deletions
+89
View File
@@ -269,3 +269,92 @@ def test_runsimulationmanuallybydate_endpoint_rejects_naive_start_time(monkeypat
)
assert response.status_code == 422
def test_valve_close_endpoint_passes_scheme_name(monkeypatch):
module = _load_simulation_module(monkeypatch)
captured = {}
def fake_valve_close_analysis(**kwargs):
captured.update(kwargs)
return "ok"
monkeypatch.setattr(module, "valve_close_analysis", fake_valve_close_analysis)
client = TestClient(build_test_app(module.router, "/api/v1"))
response = client.get(
"/api/v1/valve_close_analysis/",
params={
"network": "demo",
"start_time": "2025-01-02T03:04:05+08:00",
"valves": ["V1", "V2"],
"duration": 900,
"scheme_name": "valve_case_01",
},
)
assert response.status_code == 200
assert response.text == "ok"
assert captured == {
"name": "demo",
"modify_pattern_start_time": "2025-01-02T03:04:05+08:00",
"modify_total_duration": 900,
"modify_valve_opening": {"V1": 0.0, "V2": 0.0},
"scheme_name": "valve_case_01",
}
def test_flushing_endpoint_passes_required_scheme_name(monkeypatch):
module = _load_simulation_module(monkeypatch)
captured = {}
def fake_flushing_analysis(**kwargs):
captured.update(kwargs)
return "ok"
monkeypatch.setattr(module, "flushing_analysis", fake_flushing_analysis)
client = TestClient(build_test_app(module.router, "/api/v1"))
response = client.get(
"/api/v1/flushing_analysis/",
params={
"network": "demo",
"start_time": "2025-01-02T03:04:05+08:00",
"valves": ["V1"],
"valves_k": [0.5],
"drainage_node_ID": "N1",
"flush_flow": 100.0,
"duration": 900,
"scheme_name": "flush_case_01",
},
)
assert response.status_code == 200
assert response.text == "ok"
assert captured == {
"name": "demo",
"modify_pattern_start_time": "2025-01-02T03:04:05+08:00",
"modify_total_duration": 900,
"modify_valve_opening": {"V1": 0.5},
"drainage_node_ID": "N1",
"flushing_flow": 100.0,
"scheme_name": "flush_case_01",
}
def test_contaminant_endpoint_requires_scheme_name(monkeypatch):
module = _load_simulation_module(monkeypatch)
client = TestClient(build_test_app(module.router, "/api/v1"))
response = client.get(
"/api/v1/contaminant_simulation/",
params={
"network": "demo",
"start_time": "2025-01-02T03:04:05+08:00",
"source": "N1",
"concentration": 10.0,
"duration": 900,
},
)
assert response.status_code == 422