auto: 2026-09-20 22:34 (ESD_LAPTOP)

This commit is contained in:
2026-09-20 22:34:54 +09:00
parent 31654138da
commit 774abcbe97
3 changed files with 155 additions and 23 deletions
@@ -53,6 +53,15 @@ OVERRIDE = {
"MP000317": ("잡재료", "소모품"), # 톱날
"MP000357": ("잡재료", "화약"), # 카트리지(화약)
"MP000362": ("잡재료", "소모품"), # 폴리에틸렌필름
# 이름이 같은 자재품목 줄이 하나뿐인 재료 — 그 줄을 대표로
"MP000105": ("건축마감", "천장·바닥·마감재", "MT007262"), # ROOFSHEET
"MP000168": ("건축마감", "천장·바닥·마감재", "MT008074"), # 초배지
"MP000289": ("잡재료", "고철·기타금속", "MT003499"), # 함석
"MP000292": ("잡재료", "고철·기타금속", "MT003499"),
"MP000307": ("잡재료", "고철·기타금속", "MT003499"),
"MP000312": ("잡재료", "고철·기타금속", "MT003499"),
"MP000318": ("잡재료", "고철·기타금속", "MT003499"),
"MP000339": ("잡재료", "고철·기타금속", "MT003499"),
}
NO_GROUP = "자재품목 묶음에 짝이 없음 — 관리자가 화면에서 이음"
NO_ROW = "자재품목에 그 묶음 줄이 없음"
@@ -70,18 +79,20 @@ def 고르기(row: dict, market: list[dict]) -> tuple[dict | None, str]:
got = OVERRIDE[key]
if got is None:
return None, NO_GROUP
sub, detail = got
sub, detail, *rep = got
else:
sub, detail = 분류(row.get("이름"), "")
rep = []
if sub == "미분류":
return None, NO_GROUP
hits = [r for r in market if r.get("구분") == sub and r.get("상세구분") == detail]
if not hits:
return None, NO_ROW
대표 = {"대표": rep[0]} if rep else {}
want = [mm.plain_spec(w) for w in str(row.get("규격") or "").replace(",", " ").split()]
if want and any(all(w in mm.plain_spec(r.get("규격")) for w in want) for r in hits):
return {"구분": sub, "상세구분": detail, "규격": row["규격"]}, ""
return {"구분": sub, "상세구분": detail}, ""
return {"구분": sub, "상세구분": detail, "규격": row["규격"], **대표}, ""
return {"구분": sub, "상세구분": detail, **대표}, ""
def main(show: bool) -> int: