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:
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user