From 47fa317b2602f9c2d13ae5b957301d919f631b47 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 8 Sep 2026 05:15:35 +0900 Subject: [PATCH] =?UTF-8?q?fix(B09):=20=EA=B4=80=EA=B8=89=20=EC=9E=90?= =?UTF-8?q?=EC=9E=AC=EB=A5=BC=20=E3=80=8C=EC=82=AC=EA=B8=89=E3=80=8D?= =?UTF-8?q?=EC=9D=B4=EB=9D=BC=20=EC=A0=81=EB=8D=98=20=EB=AC=B8=EA=B5=AC=20?= =?UTF-8?q?=EA=B0=88=EB=9D=BC=20=EB=83=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 메인 창이 인계를 실제로 먹여 잡음 — 물구멍·야면석이 `owner_supplied` 인데 「사급 자재 단가 미확보」로 뜨고 있었음. `unknown` 만 가르고 나머지를 한 줄로 떨어뜨린 탓 - 관급 — 「관급 자재 단가 미확보 — 나라장터 목록에 이 품목이 없습니다. 관급자재대(총원가 밖 별도 표기)로 갑니다」 - 사급 — 종전 문구(물가지 미결 No.18, 6번 슬롯 수동 입력 대기) - `missing` 에 `supply_type` 을 실어 화면이 갈래로 묶을 수 있게 함 - 갈래마다 **가는 자리도 원천도 다름** — 관급은 총원가 밖·나라장터, 사급은 도급 재료비·물가지 검증: pytest 206 통과(신규 1) Co-Authored-By: Claude Opus 5 (1M context) --- .../B09_Estimation_BillOfQuantities.py | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/B09_Estimation/B09_Estimation_BillOfQuantities.py b/B09_Estimation/B09_Estimation_BillOfQuantities.py index 9e798367..d8410b1f 100644 --- a/B09_Estimation/B09_Estimation_BillOfQuantities.py +++ b/B09_Estimation/B09_Estimation_BillOfQuantities.py @@ -43,6 +43,9 @@ _ZERO = Decimal(0) #: **관급자재대에도, 도급 재료비에도 넣지 않는다** — 어느 쪽에 넣어도 총액이 틀린다. SUPPLY_UNKNOWN = "unknown" +#: 관급 — 총원가 밖 별도 표기라 사급과 **가는 자리가 다르다**(PLAN 8-2). +SUPPLY_OWNER = "owner_supplied" + #: 막힘 갈래를 사람 말로. **할 일이 다르므로 화면에서 갈라 보인다.** _BLOCKED_LABELS = { "input_missing": "입력이 필요합니다", @@ -733,14 +736,27 @@ def _material_row(material: HandoffMaterial, result: BillResult) -> BillRow: } ) return row - # 사급 자재 단가는 아직 원천이 없다(미결 No.18) — 여기서도 지어내지 않는다. - row.note = row.note or "사급 자재 단가 미확보 — 6번 슬롯(적용 단가) 수동 입력 대기." + # ⚠ **관급을 「사급」이라 적으면 안 된다** (2026-09-08 메인 창 실측 — 물구멍·야면석이 + # `owner_supplied` 인데 「사급 자재 단가 미확보」로 뜨고 있었다). 갈래마다 **가는 자리도 + # 원천도 다르다** — 관급은 총원가 밖 관급자재대(나라장터), 사급은 도급 재료비(물가지). + if material.supply_type == SUPPLY_OWNER: + row.note = ( + row.note + or "관급 자재 단가 미확보 — 나라장터 목록에 이 품목이 없습니다. " + "관급자재대(총원가 밖 별도 표기)로 갑니다." + ) + reason = "관급 자재 단가 없음" + else: + row.note = row.note or "사급 자재 단가 미확보 — 6번 슬롯(적용 단가) 수동 입력 대기." + reason = "사급 자재 단가 없음(미결 No.18)" + result.missing.append( { "name": material.display_name, "unit": material.unit, "quantity": str(material.total_amount), - "reason": "자재 단가 없음(미결 No.18)", + "reason": reason, + "supply_type": material.supply_type, } ) return row