feat(830-2): 재료 DB 항목 통합 · 관급 칸 값 비움 · 상하차 칸 — 빌더 = 정본
- 재료_자재품목 24,092 → 17,744 줄(지운 키 6,348 · 이력 안 남김 · 대장에서 뺌 · 「다음」 30719 그대로) - 통합 규칙 한 모듈 scripts/material_merge.py — 지역 · 관급/사급 꼬리표 · 제조사(-거양) · 조합 · 상하차 글을 뗀 이름 · 규격 · 단위 · 상하차가 같은 줄 한 줄 - 남는 줄 = 사급 줄 가운데 전국 › 지역 글 없음(전국으로 봄) › 서울 › 값 중간 지역 · 관급 줄만 묶음 = 앞(작은 키) 줄 · 원래 겹친 줄(덧정보 없음)은 안 합침 - 관급 칸(EST 가격정보) 값 4,552 → 0 · 칸은 남김 · 비고 「조달 …」 · 「가격정보 …」 글 뺌 - 상하차 칸(요구 828) = 상차 · 하차 · -(기본) · 관급 칸 바로 앞(자리 = material_merge.LOAD_AT 한 곳) · 도착도 = 하차 · 채취장상차 · 하치장/생산공장 상차도 · (상차도) = 상차 · 철근 HD 규격 정규화 안 함 - 남는 줄 물가지 넷 · 면수 · 출처 · 단위 · 구분 바뀐 것 0 · 빌더 두 번 돌림 = 같은 파일 - check_master 열 목록에 상하차 · 값 검사(셋 가운데 하나) · 새 오류 0(단위 27 · 배 7 전과 같음) - _틀.md · _갱신절차.md 열 한 벌 · 관급 칸 · 상하차 · 통합 한 줄씩 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -33,6 +33,7 @@ import master_combo as mcb # noqa: E402
|
||||
import master_formula as mf # noqa: E402
|
||||
import master_keys as mk # noqa: E402
|
||||
import master_machine_files as mmf # noqa: E402
|
||||
import material_merge as mm # noqa: E402
|
||||
|
||||
# (2) 본문은 따로 모듈 — 부르는 쪽은 `cm.check_body` · `cm.DIVISIONS` 그대로
|
||||
from check_master_body import DIVISIONS, check_body # noqa: E402, F401
|
||||
@@ -119,21 +120,29 @@ LABOR_STATUS = ("공표", "산정", "미공표", "미확보", "추정")
|
||||
# 원문별 열 한 벌 — 모든 줄이 이 칸을 이 차례로 가짐(없으면 null)
|
||||
COLS = {
|
||||
# 자재품목 — 원문번호(남의 품번)는 줄에 두지 않음 · 대조는 `_키대장.json` 에만
|
||||
"자재품목": (
|
||||
"키",
|
||||
"구분",
|
||||
"상세구분",
|
||||
"이름",
|
||||
"규격",
|
||||
"단위",
|
||||
"물가자료",
|
||||
"유통물가",
|
||||
"물가정보",
|
||||
"거래가격",
|
||||
"관급",
|
||||
"출처",
|
||||
"비고",
|
||||
"면수",
|
||||
# 상하차 칸 자리 = material_merge.LOAD_AT 바로 앞(한 곳)
|
||||
"자재품목": tuple(
|
||||
mm.place(
|
||||
dict.fromkeys(
|
||||
(
|
||||
"키",
|
||||
"구분",
|
||||
"상세구분",
|
||||
"이름",
|
||||
"규격",
|
||||
"단위",
|
||||
"물가자료",
|
||||
"유통물가",
|
||||
"물가정보",
|
||||
"거래가격",
|
||||
"관급",
|
||||
"출처",
|
||||
"비고",
|
||||
"면수",
|
||||
)
|
||||
),
|
||||
None,
|
||||
)
|
||||
),
|
||||
"유가전력": (
|
||||
"키",
|
||||
@@ -315,6 +324,8 @@ def check_form(name: str, data: dict) -> list[str]:
|
||||
out.append(f"{where} · 「{ALIAS}」 이 빈 글 · 글 아님(빈 칸이면 칸을 두지 않음)")
|
||||
if cols and _cols_of(row) != cols:
|
||||
out.append(f"{where} · 열이 한 벌이 아님 — 「{' · '.join(cols)}」")
|
||||
if book == "자재품목" and row.get(mm.LOAD) not in mm.LOADS:
|
||||
out.append(f"{where} · 「{mm.LOAD}」 는 {' · '.join(mm.LOADS)} 가운데 하나")
|
||||
if kind == "품셈재료":
|
||||
out += _check_linked(where, row)
|
||||
if kind == "요소" and isinstance(row.get("값"), dict):
|
||||
|
||||
Reference in New Issue
Block a user