From 4060f4e3d28291b2577664045e72b5ba48d55726 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Wed, 9 Sep 2026 11:40:29 +0900 Subject: [PATCH] =?UTF-8?q?fix(B09):=20=EB=B0=91=EC=88=98=20=E3=80=8C?= =?UTF-8?q?=EC=9D=B8=E3=80=8D=EC=9D=84=20=EB=B0=9B=EB=8A=94=20=EC=AA=BD?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=A7=89=EC=9D=8C=20+=20=EA=B7=9C?= =?UTF-8?q?=EC=A4=80=ED=8B=80=20=EC=82=AC=EC=9C=A0=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ① 마스터가 본문·표에서 밑수를 「인」으로 읽어 온 자리가 여섯 있음(드론방제 둘·지상방제· 야면석 채집·휘발유·천공기). 「인」은 **사람 수**이지 공종 단위가 아니라, 그대로 두면 「몇 인짜리 공종」이 되어 **단위 불일치 검사가 엉뚱하게 통과**함. ⚠ 원문 쪽 고치기는 마스터 몫(데스크탑 메인) — 여기서는 **받는 쪽에서 막음**. 같은 규칙이 `WorkItemUnit` 머리말에 이미 있어 짝을 맞춤 ② 규준틀 사유 갱신 — 데스크탑 메인이 각재·판재·못을 자재 축에 세워(`e100d311`) 「인력 품만」의 뜻이 바뀜. 재료가 오되 관급·사급이 안 갈려 아직 금액 0 임을 적음 ⚠ 계획서 9장 재판정(미체크 27 → 21 · 크기 딱지)은 `docs/` 가 git 밖이라 커밋에 안 실림 — 파일에는 반영돼 있음. 검증: pytest 300 통과 · 밑수가 「인」인 자원 줄 0 Co-Authored-By: Claude Opus 5 (1M context) --- B09_Estimation/B09_Estimation_KnownGaps.py | 10 ++++++---- B09_Estimation/B09_Estimation_ResourceAxis.py | 11 +++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/B09_Estimation/B09_Estimation_KnownGaps.py b/B09_Estimation/B09_Estimation_KnownGaps.py index ac0f36b2..b0838fe9 100644 --- a/B09_Estimation/B09_Estimation_KnownGaps.py +++ b/B09_Estimation/B09_Estimation_KnownGaps.py @@ -26,13 +26,15 @@ KNOWN_GAPS: dict[str, tuple[str, str]] = { # 잘려 안 보였던 것이다. 잘린 자리를 사유가 없는 자리로 읽지 말 것.) "FP-11-02": ( "인력 품만", - "ⓘ 지금 값은 **인력 품만**입니다. 재료가 서면 손율이 함께 걸립니다 — " - "품셈 11-2 [주]③ 「목재의 손율은 1개소 사용당 50%」.", + "ⓘ 이 단가는 **인력 품만**입니다 — 목재·못은 **자재 축**으로 따로 갑니다" + "(2026-09-09 각재·판재·못이 자재 축에 섰음. 다만 관급·사급이 안 갈려 아직 금액 0). " + "재료가 금액으로 서면 손율이 함께 걸립니다 — 품셈 [주]③ 「목재의 손율은 1개소 사용당 50%」.", ), "FP-11-03": ( "인력 품만", - "ⓘ 지금 값은 **인력 품만**입니다. 재료가 서면 손율이 함께 걸립니다 — " - "품셈 11-3 [주]③ 「목재의 손율은 1개소 사용당 80%」.", + "ⓘ 이 단가는 **인력 품만**입니다 — 목재·못은 **자재 축**으로 따로 갑니다" + "(2026-09-09 각재·판재·못이 자재 축에 섰음. 다만 관급·사급이 안 갈려 아직 금액 0). " + "재료가 금액으로 서면 손율이 함께 걸립니다 — 품셈 [주]③ 「목재의 손율은 1개소 사용당 80%」.", ), "FP-12-25": ( "운반거리 미정", diff --git a/B09_Estimation/B09_Estimation_ResourceAxis.py b/B09_Estimation/B09_Estimation_ResourceAxis.py index ac9add90..7af12c3c 100644 --- a/B09_Estimation/B09_Estimation_ResourceAxis.py +++ b/B09_Estimation/B09_Estimation_ResourceAxis.py @@ -350,6 +350,10 @@ def _resolve_cell(catalog: ResourceCatalog, name_cell: str, cells: list[str]): return None +#: 공종 단위로 인정하지 않는 말 — **품의 단위**(사람·날)이지 물리 수량이 아니다. +_NOT_A_WORK_ITEM_UNIT = frozenset({"인", "인당", "일", "일당", "인/일"}) + + def match_table( node: dict[str, Any], table: dict[str, Any], @@ -395,6 +399,13 @@ def match_table( basis = table.get("basis_quantity") basis_quantity = None if basis is None else Decimal(str(basis)) unit = table.get("basis_unit") or "" + # ⚠ **「인」은 공종 단위가 아니다** — 사람 수다. 마스터가 본문·표에서 「인」을 밑수로 + # 읽어 온 자리가 있고(드론방제·지상방제·야면석 채집·휘발유), 그대로 두면 「몇 인짜리 + # 공종」이라는 뜻이 되어 **단위 불일치 검사가 엉뚱하게 통과**한다. + # ⚠ 원문 고치기는 마스터 쪽 몫(2026-09-09 데스크탑 메인) — 여기서는 **받는 쪽에서 막는다.** + # 짝 규칙은 `B09_Estimation_WorkItemUnit` 머리말에 이미 적어 둔 것과 같다. + if unit.strip() in _NOT_A_WORK_ITEM_UNIT: + unit = "" # ⚠ **한 표에 밑수가 둘인 표가 있다** — 「㎡당 0.17 / ㎥당 0.64」(채집 13-2 계열). # 행-자원으로 읽으면 **앞줄만 잡고 뒷줄을 버린다** — 막돌 채집이 ㎡당 값을 ㎥ 단위로