|
|
|
@@ -188,7 +188,8 @@ async def dump_output_endpoint(output: str = Query(..., description="模拟输
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Analysis Endpoints
|
|
|
|
|
@router.get("/burst_analysis/", summary="爆管分析(高级)", description="高级版本的爆管分析,支持在指定时间点修改泵控制模式和阀门开度,以分析这些改变对爆管影响的作用。支持固定泵和变速泵的独立控制。")
|
|
|
|
|
@router.get("/burst-analysis", summary="爆管分析(高级)", description="高级版本的爆管分析,支持在指定时间点修改泵控制模式和阀门开度,以分析这些改变对爆管影响的作用。支持固定泵和变速泵的独立控制。")
|
|
|
|
|
@router.get("/burst_analysis/", summary="爆管分析(高级,旧路径)", description="高级版本的爆管分析,支持在指定时间点修改泵控制模式和阀门开度,以分析这些改变对爆管影响的作用。支持固定泵和变速泵的独立控制。", deprecated=True)
|
|
|
|
|
async def fastapi_burst_analysis(
|
|
|
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
|
|
|
modify_pattern_start_time: str = Query(..., description="模式修改开始时间(ISO 8601格式)"),
|
|
|
|
@@ -249,7 +250,8 @@ async def fastapi_valve_close_analysis(
|
|
|
|
|
return result or "success"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/valve_isolation_analysis/", summary="阀门隔离分析", description="分析当发生突发事件时,通过关闭指定阀门进行隔离,确定哪些阀门必须关闭、哪些可选关闭,以及隔离的可行性。")
|
|
|
|
|
@router.get("/valve-isolation-analysis", summary="阀门隔离分析", description="分析当发生突发事件时,通过关闭指定阀门进行隔离,确定哪些阀门必须关闭、哪些可选关闭,以及隔离的可行性。")
|
|
|
|
|
@router.get("/valve_isolation_analysis/", summary="阀门隔离分析(旧路径)", description="分析当发生突发事件时,通过关闭指定阀门进行隔离,确定哪些阀门必须关闭、哪些可选关闭,以及隔离的可行性。", deprecated=True)
|
|
|
|
|
async def valve_isolation_endpoint(
|
|
|
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
|
|
|
accident_element: List[str] = Query(..., description="发生事故的管段/节点ID列表"),
|
|
|
|
@@ -289,7 +291,8 @@ async def valve_isolation_endpoint(
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/flushing_analysis/", response_class=PlainTextResponse, summary="冲洗分析(高级)", description="高级版本的冲洗分析,支持同时开启多个阀门进行冲洗,指定排污节点,并设置固定的冲洗流量。返回纯文本格式的分析结果。")
|
|
|
|
|
@router.get("/flushing-analysis", response_class=PlainTextResponse, summary="冲洗分析(高级)", description="高级版本的冲洗分析,支持同时开启多个阀门进行冲洗,指定排污节点,并设置固定的冲洗流量。返回纯文本格式的分析结果。")
|
|
|
|
|
@router.get("/flushing_analysis/", response_class=PlainTextResponse, summary="冲洗分析(高级,旧路径)", description="高级版本的冲洗分析,支持同时开启多个阀门进行冲洗,指定排污节点,并设置固定的冲洗流量。返回纯文本格式的分析结果。", deprecated=True)
|
|
|
|
|
async def fastapi_flushing_analysis(
|
|
|
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
|
|
|
start_time: str = Query(..., description="冲洗开始时间(ISO 8601格式)"),
|
|
|
|
@@ -329,7 +332,8 @@ async def fastapi_flushing_analysis(
|
|
|
|
|
return result or "success"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/contaminant_simulation/", response_class=PlainTextResponse, summary="污染物模拟", description="对管网中的污染物扩散进行模拟,评估污染源对管网的影响范围和浓度分布。支持指定污染源位置、污染浓度和扩散模式。")
|
|
|
|
|
@router.get("/contaminant-simulation", response_class=PlainTextResponse, summary="污染物模拟", description="对管网中的污染物扩散进行模拟,评估污染源对管网的影响范围和浓度分布。支持指定污染源位置、污染浓度和扩散模式。")
|
|
|
|
|
@router.get("/contaminant_simulation/", response_class=PlainTextResponse, summary="污染物模拟(旧路径)", description="对管网中的污染物扩散进行模拟,评估污染源对管网的影响范围和浓度分布。支持指定污染源位置、污染浓度和扩散模式。", deprecated=True)
|
|
|
|
|
async def fastapi_contaminant_simulation(
|
|
|
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
|
|
|
start_time: str = Query(..., description="污染开始时间(ISO 8601格式)"),
|
|
|
|
@@ -715,7 +719,8 @@ async def fastapi_pressure_sensor_placement_kmeans(
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/sensorplacementscheme/create", summary="传感器放置方案创建", description="创建新的传感器放置方案,支持灵敏度分析和KMeans聚类两种方法。根据指定的方法自动计算最优的传感器放置位置。")
|
|
|
|
|
@router.post("/sensor-placement-schemes", summary="传感器放置方案创建", description="创建新的传感器放置方案,支持灵敏度分析和KMeans聚类两种方法。根据指定的方法自动计算最优的传感器放置位置。")
|
|
|
|
|
@router.post("/sensorplacementscheme/create", summary="传感器放置方案创建(旧路径)", description="创建新的传感器放置方案,支持灵敏度分析和KMeans聚类两种方法。根据指定的方法自动计算最优的传感器放置位置。", deprecated=True)
|
|
|
|
|
async def fastapi_pressure_sensor_placement(
|
|
|
|
|
network: str = Query(..., description="管网名称(或数据库名称)"),
|
|
|
|
|
scheme_name: str = Query(..., description="放置方案名称"),
|
|
|
|
@@ -763,7 +768,8 @@ async def fastapi_pressure_sensor_placement(
|
|
|
|
|
return "success"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/runsimulationmanuallybydate/", summary="手动运行日期指定模拟", description="根据指定的开始时间和持续时间,手动运行水力模拟。开始时间必须是显式带时区的 ISO 8601 / RFC3339 时间。")
|
|
|
|
|
@router.post("/simulations/run-by-date", summary="手动运行日期指定模拟", description="根据指定的开始时间和持续时间,手动运行水力模拟。开始时间必须是显式带时区的 ISO 8601 / RFC3339 时间。")
|
|
|
|
|
@router.post("/runsimulationmanuallybydate/", summary="手动运行日期指定模拟(旧路径)", description="根据指定的开始时间和持续时间,手动运行水力模拟。开始时间必须是显式带时区的 ISO 8601 / RFC3339 时间。", deprecated=True)
|
|
|
|
|
async def fastapi_run_simulation_manually_by_date(
|
|
|
|
|
data: RunSimulationManuallyByDate = Body(..., description="模拟运行参数"),
|
|
|
|
|
) -> dict[str, str]:
|
|
|
|
|