From 49fb30f61f788073b68b5ac07a3e33c794f89c5a Mon Sep 17 00:00:00 2001 From: umsangdon Date: Wed, 9 Sep 2026 07:16:06 +0900 Subject: [PATCH] =?UTF-8?q?fix(B08):=20=EC=82=AC=ED=86=A0=20=EC=9A=B4?= =?UTF-8?q?=EB=B0=98=EB=8F=84=20=EC=9E=90=EC=97=B0=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=A1=9C=20=EC=84=B8=EC=9B=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 되돌린 값(natural_m3_by_ground)이 오면 그 값으로 서고 상태를 사유에 적음 - 안 오면 다짐 그대로 두고 「내역 수량은 자연상태여야 함」을 사유로 냄 - tmp/tests 2건 추가 Co-Authored-By: Claude Opus 5 (1M context) --- .../B08_Quantity_Engine_Handoff_Spoil.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/B08_Quantity/B08_Quantity_Engine_Handoff_Spoil.py b/B08_Quantity/B08_Quantity_Engine_Handoff_Spoil.py index 1a837315..38036c8e 100644 --- a/B08_Quantity/B08_Quantity_Engine_Handoff_Spoil.py +++ b/B08_Quantity/B08_Quantity_Engine_Handoff_Spoil.py @@ -72,11 +72,22 @@ def spoil_haul_rows( reason = DISTANCE_MISSING if blocked else "" note = spoil.get("note") or "" # 갈래별로 나눠 세운다 — 덤프 단가가 토사·암으로 갈린다. 갈래가 안 오면 종전처럼 한 줄. + # ⚠⚠ **내역 수량은 자연상태다**(`config_system_design` 5-4-3). 사토 잔량은 유토곡선이 + # 쌓은 다짐상태라 되돌린 값(`natural_m3_by_ground`)이 오면 **그 값으로 선다**. + # 갈래를 못 붙인 몫은 되돌릴 계수가 없어 다짐 그대로 서고, 그 사실이 사유에 남는다. + returned = spoil.get("natural_m3_by_ground") or {} + natural_basis = bool(returned) + source_map = returned if natural_basis else (spoil.get("by_ground_m3") or {}) by_ground = { GROUND_KEYS[key]: float(value) - for key, value in (spoil.get("by_ground_m3") or {}).items() + for key, value in source_map.items() if key in GROUND_KEYS and float(value or 0.0) > 0 } + state_note = ( + "자연상태(유토곡선이 ÷C 로 되돌린 값)" + if natural_basis + else "⚠ 다짐상태 그대로 — 되돌린 값이 아직 안 옴(내역 수량은 자연상태여야 함)" + ) # 갈래별 거리 — 사토장이 놓였으면 그 값이 이긴다(정확한 값이 이김). by_distance = { GROUND_KEYS[key]: float(value) @@ -98,7 +109,9 @@ def spoil_haul_rows( reason if leg_blocked else "", note, ground=label, - extra=DISTANCE_FROM_SETTING if leg is None else DISTANCE_FROM_SITE, + extra=" · ".join( + (DISTANCE_FROM_SETTING if leg is None else DISTANCE_FROM_SITE, state_note) + ), ) ) if unknown > 0: