Merge branch 'main_laptop_1' of C:/Program_coding/임도설계 및 견적자동화 프로그램 개발 into sub_laptop_1
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user