feat(master_data): 건설품셈 기계설비 1장 로직 19개 — 배관공사
- 강관·동관·스테인리스·주철관·경질관·연질관 접합 및 배관(일당 표는 시공량으로 나눠 m·개소당) - 고소작업대 시공(품 감산·시공량 가산) · 시공위치 요율 · TIG 가산은 입력 고르기 · 겹침은 공통 1-4-2 합산 - 공구손료 및 경장비 덧줄(인력품 %) · Brazing·TIG 소모재료 줄 · 재료_자체 3줄(플럭스·TIG 용접봉·아르곤가스) - 기계설비 1~6장 계수 표 열쇠를 「절 이름 계수」로 — 건축 계수 표와 열쇠 겹침(먼저 읽힌 건축 표가 잡히던 것) - check_master 로직 검사에 열쇠 겹침 · 시험 2개 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
This commit is contained in:
@@ -276,6 +276,19 @@ def check_logics(files: dict[str, dict], whole: mf.Master) -> list[str]:
|
||||
out += [f"{name} · {x}" for x in found]
|
||||
graph[f"{data.get('원문')}:{row.get('열쇠')}"] = calls
|
||||
out += [f"돌고 도는 참조 · {' → '.join(loop)}" for loop in mf.find_loops(graph)]
|
||||
return out + duplicate_keys(files)
|
||||
|
||||
|
||||
def duplicate_keys(files: dict[str, dict]) -> list[str]:
|
||||
"""같은 그룹·원문에 같은 열쇠 — 먼저 읽힌 파일 것만 찾기에 걸림"""
|
||||
first, out = {}, []
|
||||
for name, data in files.items():
|
||||
rows = data.get("표") if data.get("그룹") in mf.TABLE_GROUPS else data.get("줄")
|
||||
for row in rows or []:
|
||||
ref = f"{data.get('그룹')}:{data.get('원문')}:{row.get('열쇠')}"
|
||||
if ref in first and first[ref] != name:
|
||||
out.append(f"{name} · 열쇠 겹침 「{ref}」 — {first[ref]} 에도 있음")
|
||||
first.setdefault(ref, name)
|
||||
return out
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user