fix(B08): 운반 표가 영영 0줄이 될 자리 수정

⑬ 운반 사슬 실증 중 발견. 정본에 저장되는 것은 유토곡선 한 벌(`mass_haul`)이고
배분은 그 안의 `haul_plan` 인데, 라우터가 바깥 껍데기를 그대로 넘기고 있었음.
`blocks` 를 못 찾아 운반 표가 항상 빈 표가 됨. [확정] 전에는 어차피 빈 표라
화면에서 티가 안 나던 자리임.

검증은 사용자 프로젝트를 건드리지 않고 서버 계산 코드(Node 번들)를 시험 노선으로
직접 돌려 실제 배분을 받아 확인함.
- 운반거리 표: 무대 3.90㎥/10m · 도자 7.80㎥/40m · 덤프 3,712.29㎥/288.12m
- 인계: 무대 in_bill=false + 수량 그대로, 도자 FP-10-11 · 덤프 FP-10-12
- 검산: 합 3,723.99 vs hauled 3,724.00 (차 0.01 — 배분 자체의 반올림)
- 장비 한계: 무대 20m · 도자 60m 이내 확인

저장 정본 모양을 그대로 넣은 시험 2건으로 못 박음.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-08 00:56:55 +09:00
co-authored by Claude Opus 5
parent e90a5703ee
commit 7c14d33f97
+10 -2
View File
@@ -133,14 +133,22 @@ async def _project_settings(project_id: UUID) -> tuple[dict[str, Any], str | Non
async def _stored_haul_plan(project_id: UUID, route_id: int) -> dict[str, Any] | None: async def _stored_haul_plan(project_id: UUID, route_id: int) -> dict[str, Any] | None:
"""정본에 남은 운반계획. [확정]을 아직 안 돌렸으면 없다.""" """정본에 남은 **배분**(`mass_haul.haul_plan`). [확정]을 아직 안 돌렸으면 없다.
⚠ 정본에 저장되는 것은 유토곡선 한 벌(`mass_haul`)이고 **배분은 그 안의 `haul_plan`** 이다.
바깥 껍데기를 그대로 넘기면 `blocks` 를 못 찾아 **운반 표가 영영 0줄**이 된다 —
[확정] 전에는 어차피 빈 표라 화면에서 티가 안 나던 자리다(2026-09-07 실증에서 잡음).
"""
try: try:
row = await run_with_connection(get_longitudinal_section, project_id, route_id) row = await run_with_connection(get_longitudinal_section, project_id, route_id)
except Exception: except Exception:
logger.exception("B08 운반계획 조회 실패: route_id=%s", route_id) logger.exception("B08 운반계획 조회 실패: route_id=%s", route_id)
return None return None
data = (row or {}).get("data") or {} data = (row or {}).get("data") or {}
plan = data.get("mass_haul") if isinstance(data, dict) else None mass_haul = data.get("mass_haul") if isinstance(data, dict) else None
if not isinstance(mass_haul, dict):
return None
plan = mass_haul.get("haul_plan")
return plan if isinstance(plan, dict) and plan else None return plan if isinstance(plan, dict) and plan else None