fix(axis): 표 읽기 2차 — 절 이름 밑수 · 조합 기종 앞머리 · 합판거푸집 막힘 사유

- 마스터 생성기: 밑수가 절 이름에만 있는 표를 이름 전체가 「수+단위+당」일 때만 읽음 —
  4-2-1 「100본당」·4-2-2 「1,000㎡당」 두 표만 바뀜(재생성 diff 2표 · basis_missing 140→138)
- 뭉친 줄 조합 기종: 앞머리를 공백 지우고 견줌 — 「굴착기+부착용집게」가 카탈로그 「부착용 집게」에 붙어
  단목베기 4-2-2 가 섬(X-0201-0020#조합 + 부착용 집게)
- 실무 대조: 단목베기 5m 미만 866원/㎡ ↔ 영월 설계내역 「잡관목제거 벌목(5m미만)」 882원/㎡(노임 연도 차 2%)
- 합판거푸집 12-4: 사용횟수별 비율 미구현이라 일부러 안 풂 — 막힌 사유를 그 까닭으로 갈아 끼움(판정)
- 일위대가 HEAD↔수정 대조: 바뀐 공종은 FP-04-02-02 하나 · 전체 시험 1522 통과

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
This commit is contained in:
2026-09-13 18:05:02 +09:00
co-authored by Claude Opus 5
parent f18059b23f
commit 6905cd1eb5
8 changed files with 171 additions and 28 deletions
@@ -304,9 +304,12 @@ def _resolve_with_side_spec(catalog: ResourceCatalog, name: str, specs: list[str
if not name or not specs:
return None
wanted = {"".join(str(s).split()) for s in specs if str(s).strip()}
# ⚠ 앞머리는 **공백을 지우고** 견준다 — 품셈은 「부착용집게」, 카탈로그는 「부착용 집게」라
# 원문 그대로 보면 단목베기 4-2-2 조합 줄이 못 풀려 공종이 막혔다(2026-09-13).
head = _normalize_label(name)
hits = []
for entry in catalog.entries:
if not entry.name.startswith(name):
if not _normalize_label(entry.name).startswith(head):
continue
spec = "".join(str(entry.spec).split())
if spec and any(_spec_matches(spec, w) for w in wanted):