"""장비 → EQ 괄호 낱말(PLAN 778-1 · 분석 621-B 2-3) — 「굴착기(타이어형)」 = 타이어 기계 · 부속 뺌. 같은 갈래 · 규격에 이름 여럿(타이어 · 무한궤도 · 습지 · 부착용)인 EQ 를 글의 괄호 낱말로 가름 — 불러오기 이음(`Linker._machine`) · 후보 1위(`Elem.machines`) · 기계경비 기초 차례(`Units.mach_logics` · 785-7 옛 `SkPatch` 갈음) 모두 같은 기계. master 읽기만. """ from M01_MasterData import M01_MasterData_Store as m01 from M02_MasterTemplete import M02_Hopyo_Elem as elem from M02_MasterTemplete import M02_Hopyo_Fixed as hfix from M02_MasterTemplete import M02_Hopyo_Units as units 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 # 타이어 · 무한궤도 못 가름 whole = m01.loaded()[1] eq = next(v for v in whole.numbers["EQ"].values() if v.get("키") == "EQ000026") first = units.mach_logics(whole, {"굴착기"}, eq)[0] assert first != units.MACHINE["굴착기"] # 굴착기(무한궤도) 기계경비 아님 assert first in units.MACHINE_SET and _key(eq["원문번호"]) == "EQ000026"