feat(531-4): 대시보드 받은 예정노선 [연결] 모달 · 새 임도 설계속도 → 단계 2 params · 확정 시각 KST

- B01 받은 예정노선 [연결] = 모달(새 임도 프로젝트로 · 기존 프로젝트에 연결) → link API · 409 확인 → 다시 · 끝나면 B03 이동 · 확정(KST) 열
- 연결 new 때 예정노선 설계속도(20/30/40)를 단계 2 params options.design_speed_kph 에 · existing 은 안 건드림
- B03 자동설계 체인이 단계 2 params 의 설계속도를 이어 넘김(없으면 None = 그대로 · 브레인 허락)
- 받은 예정노선 목록에 confirmed_at · D04 표 확정 시각 KST 표시(서버 UTC 그대로)
- 시험: new 연결 설계속도 기록 · existing · 범위 밖 값 안 넣음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 20:55:45 +09:00
co-authored by Claude Opus 5.5
parent 7f2f4c6ca6
commit 22e3797ab8
9 changed files with 223 additions and 15 deletions
+8 -1
View File
@@ -215,12 +215,18 @@ async def run_auto_design_chain(
# 사용자가 B02·B01 에서 정한 계획노선 사용 범위 (2026-09-04 사용자 지시).
# 비어 있으면 전 구간 — 지금까지와 같다.
async with connection.cursor() as cursor:
# 설계속도 = 단계 2 params 에 먼저 들어온 값(예정노선 연결 · 531-4) — 없으면 None.
await cursor.execute(
"SELECT route_start_m, route_end_m FROM projects WHERE id = %s",
"SELECT route_start_m, route_end_m,"
" (SELECT JSON_VALUE(s.params, '$.options.design_speed_kph')"
" FROM project_workflow_stages s"
" WHERE s.project_id = projects.id AND s.stage_no = 2)"
" FROM projects WHERE id = %s",
(str(project_id),),
)
range_row = await cursor.fetchone()
route_range = (range_row[0], range_row[1]) if range_row else None
seeded_speed = range_row[2] if range_row else None
points = _planned_route_points_in_project_crs(project_root, defaults, route_range)
if not points:
@@ -264,6 +270,7 @@ async def run_auto_design_chain(
RoutePoint(**point, order=index)
for index, point in enumerate(points[1:-1], start=1)
],
design_speed_kph=int(seeded_speed) if seeded_speed else None,
)
solve_result: Any = await solve_route(project_id, request)
if isinstance(solve_result, JSONResponse):