fix(B08): 밑수 대조 가드가 못 보던 마지막 한 줄 — 가설창고에 밑수를 적음

내역에 실리는 25 줄 중 FP-11-01 가설창고만 밑수가 없어 대조를 건너뛰고 있었음.
품셈 11-1 은 절 머리에 「(단위: …)」가 없어 마스터가 못 채우는 자리라, 매핑에
원문 근거와 함께 「개소」를 적어 통로로 채움([주]① 설치·해체 각각 · [주]③ 1개설치당).

- 매핑에 `ancillary` 절을 만들고 그 절도 밑수 대조에 쓰이게 함.
- 이제 내역에 실리는 25 줄이 전부 대조됨 — 일부러 m 로 보내면 가드가 잡는 것을 시험으로 확인.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-09 23:07:02 +09:00
co-authored by Claude Opus 5
parent 87c710a27b
commit 8a78927d81
3 changed files with 40 additions and 1 deletions
@@ -195,6 +195,8 @@ class WorkItemMapping:
earthwork: list[dict[str, Any]] = field(default_factory=list)
haul: list[dict[str, Any]] = field(default_factory=list)
structure: list[dict[str, Any]] = field(default_factory=list)
#: 준비공 부대시설·가설 — 지금은 **밑수 단위를 적어 두는 자리**로만 쓴다(가설창고 11-1).
ancillary: list[dict[str, Any]] = field(default_factory=list)
pending_user: dict[str, Any] = field(default_factory=dict)
composite: dict[str, Any] = field(default_factory=dict)
concrete_placing: dict[str, Any] = field(default_factory=dict)
@@ -213,7 +215,7 @@ class WorkItemMapping:
함께 남길 것 — 근거 없는 단위가 대조의 기준이 되면 안 된다.
"""
found: dict[str, str] = {}
for row in (*self.earthwork, *self.haul, *self.structure):
for row in (*self.earthwork, *self.haul, *self.structure, *self.ancillary):
code, unit = row.get("work_item_code"), row.get("basis_unit")
if code and unit and is_quantity_unit(str(unit)):
found[str(code)] = str(unit)
@@ -266,6 +268,7 @@ def load_mapping(path: Path | None = None) -> WorkItemMapping:
earthwork=list(payload.get("earthwork") or []),
haul=list(payload.get("haul") or []),
structure=list(payload.get("structure") or []),
ancillary=list(payload.get("ancillary") or []),
pending_user=payload.get("pending_user") or {},
composite=payload.get("composite") or {},
concrete_placing=payload.get("concrete_placing") or {},