fix(778-1): 장비 → EQ 괄호 낱말 규칙 — 굴착기(타이어형) = 타이어 기계 · 부속 뺌

- Elem: 괄호 낱말(타이어 · 무한궤도 · 습지 · 트럭탑재) 어긋남 · 부속(자동덮개 · 부착용 · 콤팩터 · 습지) 깎음 · narrow · machine(하나로 가름)
- Fixed Linker._machine: 같은 갈래 · 규격 여럿 = 괄호 낱말로 가름
- SkPatch._add_machine: 기계 = 괄호 낱말로 가른 그 기계 · 기계경비 기초 = 그 기계(같은 이름)를 고르기에 둔 기초 먼저
- 여덟 파일 장비 줄 잇기 59 → 172 / 183(32 → 94 %) · 굴착기(타이어형) 42 줄 = 세 길 모두 타이어 · 기초 80 · SK 37 · 고름 대기 89 그대로
- 새 시험 test_778_1_hopyo_machine

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-04 08:49:46 +09:00
co-authored by Claude Opus 5.5
parent 4e0ea28aec
commit 560e2e0928
4 changed files with 122 additions and 8 deletions
@@ -0,0 +1,46 @@
"""장비 → EQ 괄호 낱말(PLAN 778-1 · 분석 621-B 2-3) — 「굴착기(타이어형)」 = 타이어 기계 · 부속 뺌.
같은 갈래 · 규격에 이름 여럿(타이어 · 무한궤도 · 습지 · 부착용)인 EQ 를 글의 괄호 낱말로 가름 —
불러오기 이음(`Linker._machine`) · 후보 1위(`Elem.machines`) ·
엑셀만 장비 기계경비 기초(`SkPatch._add_machine`) 모두 같은 기계. master 읽기만.
"""
from M01_MasterData import M01_MasterData_Store as m01
from M02_MasterTemplete import M02_Hopyo_Combine as combine
from M02_MasterTemplete import M02_Hopyo_Elem as elem
from M02_MasterTemplete import M02_Hopyo_Fixed as hfix
from M02_MasterTemplete import M02_Hopyo_SkPatch as skpatch
TIRE = "굴착기(타이어형)(0.6㎥)"
def _key(code: str) -> str:
"""기계 번호(0211-0060) → EQ 키."""
return str(m01.loaded()[1].numbers["EQ"][code]["키"])
def test_굴착기_타이어형_EQ000026_세_길_같음():
linker = hfix.Linker(by_name=True)
assert linker._machine({"이름": "굴착기(타이어형)", "규격": "0.6㎥"}) == "EQ000026"
assert elem.machines(TIRE)[0]["키"] == "EQ000026"
assert elem.machine(TIRE)["키"] == "EQ000026"
# 부속 · 형식 낱말 — 덤프트럭 ≠ 자동덮개 · 굴착기 0.7 ≠ 습지 · 콤팩터(부착용) · 무한궤도 그대로
assert linker._machine({"이름": "덤프트럭", "규격": "15톤"}) == "EQ000074"
assert linker._machine({"이름": "굴착기", "규격": "0.7㎥"}) == "EQ000020"
assert linker._machine({"이름": "굴착기(무한궤도)", "규격": "0.6㎥"}) == "EQ000019"
assert linker._machine({"이름": "굴착기", "규격": "0.6㎥"}) is None # 타이어 · 무한궤도 못 가름
class Fake:
tb, whole, got = 2.0, m01.loaded()[1], None
def add(self, one):
self.got = one
def miss(self, *a, **k):
raise AssertionError("기계 못 찾음")
m = {"갈래": ["굴착기"], "규격": [0.6], "시간": 0.25, "글": TIRE}
fake = Fake()
skpatch._Plan._add_machine(fake, m, {"이름": "x", "단위": "㎥"})
assert fake.got["로직"] != combine.MACHINE["굴착기"] # 굴착기(무한궤도) 기계경비 아님
assert _key(fake.got["입력값"]["기계"]) == "EQ000026" and fake.got["수량"] == 0.5