feat(master_data): 재료 고르기 후보를 줄 단위와 같은 자재품목으로만 거름

- 엔진 — candidates·pick·element 에 unit · 호표 줄 단위를 그대로 넘김(우드칩 ㎥ 에 원목후로링 ㎡ 가 섞이던 자리)
- 후보 API — /materials 에 unit · 단가 미리보기도 줄 단위로 거름
- check_master 「단위」 검사 새로 — 조건 안 줄이 모두 다른 단위거나 대표 줄 단위가 다른 자리 37건(로직 검사와 따로 — 조건을 좁히라는 알림)
- 품셈재료 고르기 칸이 채워진 호표 줄 24개를 고르기 조건 묶음으로 바꿈
- 일괄 시험 계산 통과 1,270 → 1,272 · 시험 둘 더함

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
2026-09-20 23:08:00 +09:00
co-authored by Claude Opus 5
parent 53151917ba
commit e2ea63e844
10 changed files with 210 additions and 46 deletions
@@ -481,7 +481,7 @@ def run(master: Master, ref: str, given: dict, depth: int = 0) -> dict:
# 고르기 조건 묶음은 그대로 넘김 — `element` 가 대표 줄·첫 줄로 풂
ref = item["요소"] if isinstance(item["요소"], dict) else fill(item["요소"], env)
try:
price, source = element(master, ref, env)
price, source = element(master, ref, env, item.get("단위"))
except FormulaError:
if qty != 0:
raise
@@ -703,6 +703,7 @@ from master_material import ( # noqa: E402, F401
TARIFF,
candidates,
check_pick,
check_unit,
cond_text,
element,
pick,