fix(region): align service area endpoints

This commit is contained in:
2026-06-11 11:18:09 +08:00
parent 9be0cd34cf
commit 8e07d580af
+6 -74
View File
@@ -7,11 +7,9 @@ from app.services.tjnetwork import (
add_region, add_region,
add_service_area, add_service_area,
add_virtual_district, add_virtual_district,
# calculate_district_metering_area,
calculate_district_metering_area_for_network, calculate_district_metering_area_for_network,
calculate_district_metering_area_for_nodes, calculate_district_metering_area_for_nodes,
calculate_district_metering_area_for_region, calculate_district_metering_area_for_region,
# calculate_region,
calculate_service_area, calculate_service_area,
calculate_virtual_district, calculate_virtual_district,
delete_district_metering_area, delete_district_metering_area,
@@ -19,13 +17,11 @@ from app.services.tjnetwork import (
delete_service_area, delete_service_area,
delete_virtual_district, delete_virtual_district,
generate_district_metering_area, generate_district_metering_area,
# generate_region,
generate_service_area, generate_service_area,
generate_sub_district_metering_area, generate_sub_district_metering_area,
generate_virtual_district, generate_virtual_district,
get_all_district_metering_area_ids, get_all_district_metering_area_ids,
get_all_district_metering_areas, get_all_district_metering_areas,
# get_all_regions,
get_all_service_areas, get_all_service_areas,
get_all_virtual_districts, get_all_virtual_districts,
get_district_metering_area, get_district_metering_area,
@@ -48,18 +44,6 @@ router = APIRouter()
# region 32 # region 32
############################################################ ############################################################
@router.get(
"/calculateregion/",
summary="计算区域",
description="计算指定水网在指定时间步长的区域分区"
)
async def fastapi_calculate_region(
network: str = Query(..., description="管网名称(或数据库名称)"),
time_index: int = Query(..., description="时间步长索引", ge=0)
) -> dict[str, Any]:
"""计算区域分区。"""
return calculate_region(network, time_index)
@router.get( @router.get(
"/getregionschema/", "/getregionschema/",
summary="获取区域属性架构", summary="获取区域属性架构",
@@ -125,62 +109,11 @@ async def fastapi_delete_region(
props = await req.json() props = await req.json()
return delete_region(network, ChangeSet(props)) return delete_region(network, ChangeSet(props))
@router.get(
"/getallregions/",
summary="获取所有区域",
description="获取指定水网中的所有区域信息"
)
async def fastapi_get_all_regions(
network: str = Query(..., description="管网名称(或数据库名称)")
) -> list[dict[str, Any]]:
"""获取所有区域的信息列表。"""
return get_all_regions(network)
@router.post(
"/generateregion/",
response_model=None,
summary="生成区域分区",
description="根据参数自动生成水网的区域分区"
)
async def fastapi_generate_region(
network: str = Query(..., description="管网名称(或数据库名称)"),
inflate_delta: float = Query(..., description="膨胀参数")
) -> ChangeSet:
"""生成区域分区。"""
return generate_region(network, inflate_delta)
############################################################ ############################################################
# district_metering_area 33 # district_metering_area 33
############################################################ ############################################################
@router.get(
"/calculatedistrictmeteringarea/",
summary="计算DMA分区",
description="计算指定节点集的区域计量(DMA)分区方案"
)
async def fastapi_calculate_district_metering_area(
network: str = Query(..., description="管网名称(或数据库名称)"),
req: Request = None
) -> list[list[str]]:
"""
计算DMA分区。
请求体格式:
{
"nodes": 节点ID列表(list[str]),
"part_count": 分区数量(int),
"part_type": 分区类型(int)
}
"""
props = await req.json()
nodes = props["nodes"]
part_count = props["part_count"]
part_type = props["part_type"]
return calculate_district_metering_area(
network, nodes, part_count, part_type
)
@router.get( @router.get(
"/calculatedistrictmeteringareaforregion/", "/calculatedistrictmeteringareaforregion/",
summary="计算区域内DMA分区", summary="计算区域内DMA分区",
@@ -368,14 +301,13 @@ async def fastapi_generate_sub_district_metering_area(
@router.get( @router.get(
"/calculateservicearea/", "/calculateservicearea/",
summary="计算服务区", summary="计算服务区",
description="计算指定水网在指定时间步长的服务区分区" description="计算指定水网的服务区分区,返回全部时间步结果"
) )
async def fastapi_calculate_service_area( async def fastapi_calculate_service_area(
network: str = Query(..., description="管网名称(或数据库名称)"), network: str = Query(..., description="管网名称(或数据库名称)"),
time_index: int = Query(..., description="时间步长索引", ge=0) ) -> list[dict[str, list[str]]]:
) -> dict[str, Any]: """计算服务区分区,返回全部时间步结果。"""
"""计算服务区分区。""" return calculate_service_area(network)
return calculate_service_area(network, time_index)
@router.get( @router.get(
"/getserviceareaschema/", "/getserviceareaschema/",
@@ -474,11 +406,11 @@ async def fastapi_generate_service_area(
@router.get( @router.get(
"/calculatevirtualdistrict/", "/calculatevirtualdistrict/",
summary="计算虚拟分区", summary="计算虚拟分区",
description="根据指定的中心节点计算虚拟分区方案" description="根据指定的压力监测节点作为中心节点计算虚拟分区方案"
) )
async def fastapi_calculate_virtual_district( async def fastapi_calculate_virtual_district(
network: str = Query(..., description="管网名称(或数据库名称)"), network: str = Query(..., description="管网名称(或数据库名称)"),
centers: list[str] = Query(..., description="中心节点ID列表") centers: list[str] = Query(..., description="压力监测节点ID列表")
) -> dict[str, list[Any]]: ) -> dict[str, list[Any]]:
"""计算虚拟分区。""" """计算虚拟分区。"""
return calculate_virtual_district(network, centers) return calculate_virtual_district(network, centers)