diff --git a/M02_MasterTemplete/M02_Hopyo_SkPatch.py b/M02_MasterTemplete/M02_Hopyo_SkPatch.py index 2d402d67e..56097a4c1 100644 --- a/M02_MasterTemplete/M02_Hopyo_SkPatch.py +++ b/M02_MasterTemplete/M02_Hopyo_SkPatch.py @@ -324,19 +324,22 @@ class _Plan: self.note("장비", "·".join(sorted(m["갈래"])), excel, mine, 규격=spec, 단위="시간") def _add_machine(self, m: dict[str, Any], line: dict[str, Any]) -> None: - """엑셀만 장비 → 기계경비 로직 줄(기계 = 그 갈래 · 규격 옵션 거꾸로 찾기 · - 괄호 낱말로 하나면 그 기계 · 로직 = 그 기계를 고르기에 둔 기초 먼저(778-1)).""" + """엑셀만 장비 → 기계경비 로직 줄 — 괄호 낱말로 하나면 그 기계 · 로직 = 그 기계를 고르기에 + 둔 기초 먼저(778-1) · 아니면 기계 = 그 갈래 · 규격 옵션 거꾸로 찾기.""" fp = finger.empty(line) fp["장비"] = [{**m, "시간": 1.0, "밑시간": 1.0, "율": []}] kinds = set(m["갈래"]) eq = elem.machine(str(m.get("글") or ""), kinds, set(m.get("규격") or [])) - for code in _mach_logics(self.whole, kinds, eq): + name = " ".join([*m["갈래"], *(f"{x:g}" for x in m.get("규격") or [])]) + one = {"이름": name, "단위": "시간", "수량": _num(m["시간"] * self.tb)} + if eq: + code = _mach_logics(self.whole, kinds, eq)[0] + self.add({"종류": "로직", "로직": code, "입력값": {MACH_IN: eq["원문번호"]}, **one}) + return + for code in _mach_logics(self.whole, kinds): got = option.find(code, fp, []) if got["수준"] <= 1: - name = " ".join([*m["갈래"], *(f"{x:g}" for x in m.get("규격") or [])]) - given = {**got["입력"], **({MACH_IN: eq["원문번호"]} if eq else {})} - self.add({"종류": "로직", "로직": code, "입력값": given, "이름": name, - "단위": "시간", "수량": _num(m["시간"] * self.tb)}) # fmt: skip + self.add({"종류": "로직", "로직": code, "입력값": got["입력"], **one}) return spec = " ".join(f"{x:g}" for x in m.get("규격") or []) name = "·".join(m["갈래"]) diff --git a/resources/tester/test_778_1_hopyo_machine.py b/resources/tester/test_778_1_hopyo_machine.py index 1932cf0e4..0aae961f2 100644 --- a/resources/tester/test_778_1_hopyo_machine.py +++ b/resources/tester/test_778_1_hopyo_machine.py @@ -43,4 +43,5 @@ def test_굴착기_타이어형_EQ000026_세_길_같음(): fake = Fake() skpatch._Plan._add_machine(fake, m, {"이름": "x", "단위": "㎥"}) assert fake.got["로직"] != combine.MACHINE["굴착기"] # 굴착기(무한궤도) 기계경비 아님 + assert fake.got["입력값"] == {skpatch.MACH_IN: "0211-0060"} assert _key(fake.got["입력값"]["기계"]) == "EQ000026" and fake.got["수량"] == 0.5