From bfd10b57f8c9ae958f8d2adcdf81358b83600b81 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 8 Sep 2026 19:22:02 +0900 Subject: [PATCH] =?UTF-8?q?fix(B08):=20=EB=B2=84=EB=A6=BC=20=ED=83=80?= =?UTF-8?q?=EC=84=A4=20=EC=A4=84=EC=9D=84=20=EC=8B=A4=EB=AC=B4=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=EC=9C=BC=EB=A1=9C=20=EA=B0=88=EB=9D=BC=20=EB=83=84=20?= =?UTF-8?q?(=E3=80=8C=EB=AC=B4=EA=B7=BC,=EB=B2=84=EB=A6=BC=E3=80=8D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 실무 내역이 「레미콘타설(장비) **무근,버림**」으로 갈라 적음(봉화 제50호표, 2026-09-09 데스크탑 보조 확인). 같은 공종·같은 단가라 **금액은 안 움직이고 이름만 맞춤** — 받는 쪽이 그 갈래로 일위대가를 그대로 세울 수 있게. ⚠ 버림은 늘 무근이라 구조물 종류(무근/철근)를 따라가지 않음. 그래서 버림 몫만 따로 모아 갈래 이름을 「무근,버림」으로 냄. 나머지 콘크리트는 종전대로 구조물 종류로 갈림. 검증 프로젝트 실측 — 돌쌓기 셋·큰돌쌓기 하나의 버림이 한 줄로 모여 4.700㎥. Co-Authored-By: Claude Opus 5 (1M context) --- .../B08_Quantity_Engine_Handoff_Rows.py | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/B08_Quantity/B08_Quantity_Engine_Handoff_Rows.py b/B08_Quantity/B08_Quantity_Engine_Handoff_Rows.py index 37db599b..19f02bbf 100644 --- a/B08_Quantity/B08_Quantity_Engine_Handoff_Rows.py +++ b/B08_Quantity/B08_Quantity_Engine_Handoff_Rows.py @@ -406,6 +406,10 @@ def _structure_rows( #: (넣으려면 돌쌓기 일위대가에 타설 품이 있는지부터 확인할 것 — B09 ㉢ 과 같은 자리.) PLACING_TARGET_NAMES = frozenset({"콘크리트", "버림콘크리트", "레미콘"}) +#: 버림 타설 줄의 갈래 이름 — **실무 내역 표기 그대로**(「레미콘타설(장비) 무근,버림」). +#: ⚠ 버림은 늘 무근이라 구조물 종류(무근/철근)를 따라가지 않는다. +BLINDING_PLACING_KIND = "무근,버림" + def _placing_rows( unit_quantity_table: dict[str, Any], @@ -435,15 +439,18 @@ def _placing_rows( # ⚠ 묶음이 아직 미확보라 지금은 값이 안 걸렸을 뿐, 묶음이 서는 날 두 번이 된다. if mapping.composite_for(str(structure.get("type_id") or "")): continue - volume = sum( - float(component.get("amount") or 0.0) - for component in structure.get("components") or [] - if str(component.get("name") or "").strip() in PLACING_TARGET_NAMES - and component.get("unit") == "㎥" - ) - if volume <= 0: - continue - buckets[structure_kind(structure)] = buckets.get(structure_kind(structure), 0.0) + volume + # ⚠ 버림은 **따로 센다** — 실무 내역이 「레미콘타설(장비) **무근,버림**」으로 갈라 + # 적는다(봉화 제50호표, 2026-09-09 데스크탑 보조 확인). 같은 공종·같은 단가라 + # 금액은 안 움직이고 **이름만 맞추는 것**이다. + for component in structure.get("components") or []: + name = str(component.get("name") or "").strip() + if name not in PLACING_TARGET_NAMES or component.get("unit") != "㎥": + continue + volume = float(component.get("amount") or 0.0) + if volume <= 0: + continue + kind = BLINDING_PLACING_KIND if name == "버림콘크리트" else structure_kind(structure) + buckets[kind] = buckets.get(kind, 0.0) + volume rows = [ { "work_item_code": code,