# -*- coding: utf-8 -*- """346-3 노선 저장 실경로 시간 — 검증 프로젝트의 지금 노드 · 곡선 그대로 저장 한 번(수동 실행). 같은 노선이라 값은 그대로(새 노선 행 번호만 바뀜) · 초기값은 안 건드림(`as_initial` 끔). 쓰는 법: `./venv/Scripts/python.exe resources/tester/run_346_3_route_save_timing.py ` """ import asyncio import json import logging import sys import time from pathlib import Path from uuid import UUID ROOT = Path(__file__).resolve().parents[2] sys.path.insert(0, str(ROOT)) from config.config_db import close_db_pool, init_db_pool # noqa: E402 async def main(project_id: UUID) -> None: from B05_Profile import B05_Profile_Router_Replan as replan from B05_Profile.B05_Profile_Route_Save import RouteSaveRequest logging.basicConfig(level=logging.INFO, format="%(message)s") await init_db_pool() try: plan = await replan.read_route_plan(project_id) nodes = plan["nodes"] radii: dict[int, float] = {} for curve in plan["curves"]: if curve.get("node_first") == curve.get("node_last"): radii[int(curve["node_first"])] = float(curve["radius_m"]) body = RouteSaveRequest( vertices=[ { "x": node["x"], "y": node["y"], "curve": index in radii, "radius_m": radii.get(index), } for index, node in enumerate(nodes) ], station_snap=bool(plan.get("station_snap")), ) started = time.perf_counter() result = await replan.replan_route(project_id, body) seconds = time.perf_counter() - started body_text = getattr(result, "body", None) print(json.dumps(json.loads(body_text) if body_text else result, ensure_ascii=False)) print(f"[시간] 노선 저장 전체 {seconds:.1f}s") finally: await close_db_pool() asyncio.run(main(UUID(sys.argv[1])))