fix(778-2): 기계 잇기 — 연료 · 조종원 없는 기종은 그 기계경비 기초(272 · 273 · 276)

- SkPatch SOLO · _mach_logics: (주연료, 조종원) 없는 기종 = GC000273 손료만 · GC000272 조종원 없음 · GC000276 연료 없음(M01 로직이 부르는 것과 같음) · 까닭 = 부착용 집게를 GC000268 로 이으면 「없는 요소 MO:None」 셈 오류(ORCA 북부청사방 단산59 실측)
- EQ 630 중 570 셈 됨(남은 60 = M01 기계 자료 빈칸 · 이 걸음 밖) · 여덟 파일 장비 더한줄 180 줄 모두 셈 됨 · 기초 80 · SK 37 · 고름 대기 89 그대로
- test_778_2: 부착용 집게 = GC000273 · 셈 됨

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-04 12:11:00 +09:00
co-authored by Claude Opus 5.5
parent b665269093
commit 42230cf3d6
2 changed files with 11 additions and 1 deletions
+6 -1
View File
@@ -56,6 +56,8 @@ LINK = {
MACH_IN = "기계" # 기계경비 기초 기계 입력 칸
# (주연료, 조종원) 없는 기종 → 그 기계경비 기초(M01 로직이 부르는 것과 같음 · 778-2)
SOLO = {(False, False): "GC000273", (True, False): "GC000272", (False, True): "GC000276"}
class LinkError(ValueError):
@@ -64,11 +66,14 @@ class LinkError(ValueError):
def _mach_logics(whole: Any, kinds: set, eq: dict | None = None) -> list[str]:
"""기계경비 기초 차례 — 갈래 첫 기초(굴착기 = 무한궤도) › 그 밖 · `eq` 가 있으면
그 기계(또는 같은 이름 기계)를 고르기에 둔 기초가 앞(778-1)."""
연료 · 조종원 없는 기종 = 그 기초 하나 · 아니면 그 기계(또는 같은 이름 기계)를 고르기에 둔 기초가 앞."""
first = next((c for k, c in combine.MACHINE.items() if k in kinds), combine.MACHINE_ANY)
order = [first, *sorted(combine.MACHINE_SET - {first})]
if not eq:
return order
has = eq.get("값") if isinstance(eq.get("값"), dict) else {}
if solo := SOLO.get((bool(has.get("주연료")), bool(has.get("조종원")))):
return [solo]
eqs = whole.numbers.get("EQ", {})
def takes(code: str) -> bool:
@@ -49,6 +49,11 @@ def test_기계_잇기_뒤_SK_셈_됨():
# 무한궤도 = 굴착기(무한궤도) 기계경비 · 갈래 다른 키 · 없는 키 = 틀림
work.link([{"id": "기계:굴착기#1", "기계": "EQ000019"}])
assert work.doc["더한줄"][-1]["로직"] == combine.MACHINE["굴착기"]
# 연료 · 조종원 없는 부속(부착용 집게 0.6∼0.8) = 손료만 기초(GC000273) · 셈 됨
solo = _plan(whole)
solo.link([{"id": "기계:굴착기", "기계": "EQ000437"}])
assert solo.doc["더한줄"][-1]["로직"] == skpatch.SOLO[(False, False)]
assert calc.run(solo.doc, whole)["기준"] is not None
work.lost = _plan(whole).lost
with pytest.raises(skpatch.LinkError):
work.link([{"id": "기계:굴착기", "기계": "MT000010"}])