feat(842-3): M01 기계 자료 옮김 — 조종원 · 조종원직종 · 잡재료율 칸 → 인력 · 잡품 목록(619 대)
- 빌더 build_기계_인력줄_842_3.py(규칙 = master_machine_crew.from_old_row · 다시 돌려도 같음) - 인력 줄 301 대(1 인 282 · 2 인 18 · 7 인 1 · 직종 빈 줄 42 = 빈 키 = 식 입력 직종 고르기 그대로) - 잡품 줄 328 대(잡재료율 > 0 = 주연료 · 전력 줄마다 그 율 · 「73.7+」 글 연료도 줄) · 범위 글 「13∼18」 2 대 = 잡품 없음(값원문 그대로) - 선원류 칸 79 대 · 비활성 표지 79 대 그대로 · 옛 칸 남음 0 - 바탕 덮음 = 식에 그 줄이 있을 때만(손료만 식을 일부러 부른 단가산출 GC000324 → GC000273 크롤러드릴 = 조종원 안 더함) - 식 고름 = 그 줄 인력도 조종원 있음으로 봄 · 로직 검사 · 값 모으기 = 기계 칸을 목록 읽기로(master_formula_check) - 시험 고침: 821_2 · 822_2 미리보기 = 목록 읽은 값으로 · 822_1 노임 키 = 인력 줄 · 822_2 범위 까닭 글 = 「잡재료율 없음」(범위 글은 값원문) - 전후: 655 대 시간당(hourly · brief · 문서 셈) 653 같음 · 다름 2 = 펌프 준설선 EQ000552 · 553(비활성 · 범위 글) 까닭 글만 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,7 @@ from numbers import Number
|
||||
CREW, MISC = "인력", "잡품"
|
||||
LISTS = (CREW, MISC)
|
||||
OLD = ("조종원", "조종원직종", "잡재료율")
|
||||
BASE = ("주연료", "전력") # 잡품 줄 기본 = 이 재료 줄(값 > 0)
|
||||
BASE = ("주연료", "전력") # 잡품 줄 기본 = 이 재료 줄(값 있음 · 0 아님)
|
||||
|
||||
|
||||
def code(key) -> str:
|
||||
@@ -53,7 +53,7 @@ def view(vals):
|
||||
def from_old(vals: dict, base: list[str] | None = None) -> dict:
|
||||
"""옛 꼴 값 → 새 꼴(옛 칸 셋 → 인력 · 잡품) — 옛 칸 없음 = 그대로.
|
||||
인력 = 조종원 > 0 이면 한 줄(직종 없음 = 빈 키) · 0 = 빈 목록 · 없음 = 칸 없음.
|
||||
잡품 = 잡재료율 > 0 이면 밑 재료 줄(`base` · 없으면 주연료 · 전력 가운데 값 > 0)마다 그 율 · 0 = 빈 목록."""
|
||||
잡품 = 잡재료율 > 0 이면 밑 재료 줄(`base` · 없으면 주연료 · 전력 가운데 값 있는 줄)마다 그 율 · 0 = 빈 목록."""
|
||||
if not isinstance(vals, dict) or is_new(vals):
|
||||
return vals
|
||||
out = {k: v for k, v in vals.items() if k not in OLD}
|
||||
@@ -62,7 +62,7 @@ def from_old(vals: dict, base: list[str] | None = None) -> dict:
|
||||
out[CREW] = [{"키": f"LB:{job}" if job else "", "인": n}] if n > 0 else []
|
||||
if _isnum(rate):
|
||||
if base is None:
|
||||
base = [b for b in BASE if _pos(vals.get(b))]
|
||||
base = [b for b in BASE if vals.get(b) not in (None, "", 0)] # 「73.7+」 글도 줄
|
||||
out[MISC] = [{"줄": b, "율": rate} for b in base] if rate > 0 and base else []
|
||||
return out
|
||||
|
||||
@@ -71,13 +71,6 @@ def _isnum(v) -> bool:
|
||||
return isinstance(v, Number) and not isinstance(v, bool)
|
||||
|
||||
|
||||
def _pos(v) -> bool:
|
||||
try:
|
||||
return float(v) > 0
|
||||
except (TypeError, ValueError):
|
||||
return False
|
||||
|
||||
|
||||
def summary(vals) -> str:
|
||||
"""목록 요약 글(M01 기계 목록 열 · 비고) — 「1048 1인 · 잡품 주연료 22%」."""
|
||||
if not isinstance(vals, dict):
|
||||
|
||||
Reference in New Issue
Block a user