From 9131fb609bad03b75292e8959c3ad361b6537ae0 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 12 Nov 2026 19:14:24 +0900 Subject: [PATCH] =?UTF-8?q?fix(826-0):=20814-1=20=EA=B8=B0=EA=B3=84=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EB=B9=8C=EB=8D=94=20=E2=80=94=20=EC=8B=9D?= =?UTF-8?q?=20=EB=AC=B6=EC=9D=8C=EC=97=90=20=EA=B8=B0=EA=B3=84=EA=B2=BD?= =?UTF-8?q?=EB=B9=84=EC=8B=9D=20=ED=91=9C=EC=A7=80=20=EC=A0=84=EB=B6=80=20?= =?UTF-8?q?=C2=B7=20=EC=88=98=20=EC=95=84=EB=8B=8C=20=EA=B8=80=20=EA=B8=B0?= =?UTF-8?q?=EA=B3=84=EB=8A=94=20=EB=AA=BB=20=EB=84=A3=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 822-2 새 식 여섯 · 목록 밖 기계(3450-0642)를 몰라 옮긴 기계를 손료만 식에 되넣으려 함 — 빌더만 고침(정본 · 기계표 그대로). Co-Authored-By: Claude Sonnet 5.5 --- .../scripts/build_기계목록_빠진기계_814_1.py | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/resources/master_data/scripts/build_기계목록_빠진기계_814_1.py b/resources/master_data/scripts/build_기계목록_빠진기계_814_1.py index f822bba99..df21a4cd5 100644 --- a/resources/master_data/scripts/build_기계목록_빠진기계_814_1.py +++ b/resources/master_data/scripts/build_기계목록_빠진기계_814_1.py @@ -53,8 +53,27 @@ def _has(row: dict, field: str) -> bool: return False +NUMS = ("가격", *FIX, "손료계수", "주연료", "조종원", "잡재료율") + + +def _bad(row: dict, field: str) -> bool: + v = (row.get("값") or {}).get(field) + if v in (None, ""): + return False + try: + float(str(v).replace(",", "")) + except ValueError: + return True + return False + + def family_of(row: dict) -> tuple[str | None, list[str]]: """기계표 한 줄 → (식 키 | None, 빈 값 이름들) — 연료 · 조종원 유무로 식 가족을 고름.""" + bad = [ + f for f in NUMS if _bad(row, f) + ] # 수 아닌 글(「73.7+」 · 「13∼18」) = 풀지 않음(822-2 DROP_ONLY) + if bad: + return None, bad fuel, crew, job = _has(row, "주연료"), _has(row, "조종원"), _has(row, "조종원직종") if fuel and crew: key = "GC000268" if job else "GC000275" @@ -75,12 +94,17 @@ def _rows() -> list[dict]: ] +def _is_family(row: dict) -> bool: + """옛 식 묶음 + 「기계경비식」 부품 표지 전부(822-2 새 식 여섯 포함 — 옮긴 기계를 손료만 식에 되넣지 않음).""" + return row.get("키") in FAMILY or (row.get("부품") or {}).get("갈래") == "기계경비식" + + def _logic_lists(text: str) -> dict[str, list[str]]: data = json.loads(text) out = {} for row in data["줄"]: for i in row.get("입력") or []: - if row.get("키") in FAMILY and i.get("이름") == "기계": + if _is_family(row) and i.get("이름") == "기계": out[row["키"]] = [str(c) for c in i.get("고르기") or []] return out