feat(712-1): 인력 · 재료 · 경비 묶음 셈 때 파생 · 기계경비 판별 한 곳

- 새 master_bundle — 호표 · 덧줄 = 비목 따라 · 비목 없는 로직 줄 = 기계경비면 경비 + 장비 · 아니면 하위
- 기계경비 판별 = 결과단위 원/시간(is_machine) — M02 엑셀 맞춤(이름 「시간당」) · B09 산근 · 산근 텍스트(입력 「기계」) 갈아 끼움
- 엔진 run 줄 덧칸 「묶음」 · 기계경비 줄 「장비」(출력 꼬리표만 · 노 · 재 · 경 몫은 줄 비목 그대로)
- 정본 칸 안 더함 · 5,911 줄 중 하위 31 · 기계경비 줄 1,044
- 지킴 시험 test_712_1_bundle

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-01 16:02:13 +09:00
co-authored by Claude Opus 5.5
parent c27aaaf8ab
commit 6d5b78f83e
6 changed files with 130 additions and 3 deletions
+1 -1
View File
@@ -242,7 +242,7 @@ def call_of(whole: Any, item: dict, env: dict) -> dict[str, Any] | None:
target = None
if not target:
return None
if any(s.get("이름") == "기계" for s in target.get("입력", [])):
if mf.mb.is_machine(target): # 기계경비 판별 한 곳(712-1)
keys = _captured(whole, node, env)
return {"machine": keys[0] if keys else None}
given = {name: mf.evaluate(expr, env, whole, 1) for name, expr in node[2]}
@@ -276,7 +276,7 @@ def _logic_lines(whole, item, env, qty_text, q, price_of) -> list[tuple[str, dic
except mf.FormulaError:
target = None
name = item.get("이름", "")
if target and any(s.get("이름") == "기계" for s in target.get("입력", [])):
if mf.mb.is_machine(target): # 기계경비 판별 한 곳(712-1)
keys = sg._captured(whole, node, env)
got = price_of(keys[0]) if keys else None
if not got: