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: