新增管道健康风险预测 api

This commit is contained in:
JIANG
2025-12-17 17:02:22 +08:00
parent 0865bdb2ae
commit e3a04ec297
7 changed files with 297 additions and 18 deletions

View File

@@ -594,3 +594,39 @@ async def clean_scada_data(
)
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
@router.get("/composite/pipeline-health-prediction")
async def predict_pipeline_health(
query_time: datetime = Query(..., description="查询时间"),
db_name: str = Query(..., description="管网数据库名称"),
timescale_conn: AsyncConnection = Depends(get_database_connection),
):
"""
预测管道健康状况
根据管网名称和当前时间,查询管道信息和实时数据,
使用随机生存森林模型预测管道的生存概率
Args:
query_time: 查询时间
db_name: 管网数据库名称
Returns:
预测结果列表,每个元素包含 link_id 和对应的生存函数
"""
try:
result = await CompositeQueries.predict_pipeline_health(
timescale_conn, db_name, query_time
)
return {
"success": True,
"result": result,
}
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))
except FileNotFoundError as e:
raise HTTPException(status_code=404, detail=str(e))
except Exception as e:
raise HTTPException(status_code=500, detail=f"内部服务器错误: {str(e)}")