From 0c511fae70bc63db04482d8019bf6a31b59ed5b5 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Wed, 9 Sep 2026 12:05:21 +0900 Subject: [PATCH] =?UTF-8?q?feat(B09):=20=EB=B0=98=EC=98=81=EB=A5=A0?= =?UTF-8?q?=EC=9D=B4=20=EA=B0=88=EB=9E=98=EB=A7=88=EB=8B=A4=20=EB=8B=A4?= =?UTF-8?q?=EB=A5=B8=20=EC=A4=84=EC=97=90=20=EA=B7=B8=20=EC=82=AC=EC=8B=A4?= =?UTF-8?q?=EC=9D=84=20=EC=8B=A4=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit B08 이 율을 이미 곱해 보내고, 율이 갈리는 줄은 `pct` 를 비운 채 갈래로만 보냄. 받는 쪽은 **곱하지도 100% 로 채우지도 않아** 값은 맞았는데, **왜 그 수량인지**가 화면에 아무 데도 없었음 — 값이 맞아도 그것은 반쪽임. - `application_ratio_breakdown` 을 읽어 사유로 적음 「반영률이 갈래마다 다릅니다 — fill 80%, cut 100% (적용 후 수량)」 - ⚠ **「율 없음」이라 쓰지 않음** — 사실이 아님. 오늘 가장 위험하다고 본 오독과 같은 말임 - 율이 안 걸린 줄은 아무 말도 안 함 검증: pytest 303 통과(신규 3) · 율을 어긋나게 넣어 실제로 돌려 봄 (quantity 1300 · gross 1500 · pct None → 1300 그대로 · gross 안 씀 · 두 번 안 곱함) Co-Authored-By: Claude Opus 5 (1M context) --- B09_Estimation/B09_Estimation_BillOfQuantities_Rows.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/B09_Estimation/B09_Estimation_BillOfQuantities_Rows.py b/B09_Estimation/B09_Estimation_BillOfQuantities_Rows.py index fbf2c438..9d997dbb 100644 --- a/B09_Estimation/B09_Estimation_BillOfQuantities_Rows.py +++ b/B09_Estimation/B09_Estimation_BillOfQuantities_Rows.py @@ -155,6 +155,14 @@ def _leaf_row( if item.application_ratio_pct is not None: # ⚠ 곱하지 않는다 — B08 이 이미 곱한 값이다. 산출근거로만 적는다. row.note = f"반영률 {item.application_ratio_pct}% 적용 후 수량" + elif item.application_ratio_breakdown: + # ⚠ **「율 없음」이 아니라 「갈래마다 다름」이다.** 율이 갈리는 줄은 B08 이 `pct` 를 + # 비우고 갈래로만 보낸다. 그 사실을 안 적으면 **값은 맞는데 왜 그 수량인지**를 + # 사람이 못 본다 — 값이 맞아도 그것은 반쪽이다(2026-09-09 두 창 확인). + parts = ", ".join( + f"{name} {value}%" for name, value in item.application_ratio_breakdown.items() + ) + row.note = f"반영률이 갈래마다 다릅니다 — {parts} (적용 후 수량)" if not item.in_bill: # 검산용 줄 — 수량은 보이되 **단가를 안 붙인다**(PLAN 8-7 ㉡ 와 같은 성격).