knowledge(마스터): 추정 줄에 준용 직종 값 채움 · 출처는 근거 문서

- 상태 「추정」 아홉 줄 — 값·단위·일시간을 준용 직종 것으로 채움 · 출처 짧게(건설품셈 기계설비 13-06 · 제조노임 직종해설 · 엔산법 시행령 별표2 · 건설노임 명칭변경표 2010.1) · 비고는 공작기계공 「밀링원일 수 있음」 만 남김
- 시험사1급 준용 비파괴시험공 → 특급품질관리원
- 빌더 refill_estimated — 다시 지을 때마다 준용 직종에서 값 되채움
- check_master — 추정 줄 값 = 준용 직종 값 검사 · 출처 낱말에 엔산법
- 엔진 — 추정 줄은 제 값 · 호표 출처 「추정(준용: ○○)」

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
2026-09-20 19:44:33 +09:00
co-authored by Claude Opus 5
parent ca34d9740f
commit 7a9bcac924
6 changed files with 53 additions and 22 deletions
@@ -354,6 +354,24 @@ def main():
estimate(wage)
estimate_make(make)
print("새 틀로 받음", mk.adopt())
refill_estimated()
def refill_estimated() -> None:
"""상태 「추정」 줄 — 값·단위·일시간을 준용 직종에서 다시 채움(공표 회차가 바뀌면 같이 바뀜)."""
path = MD / "인력.json"
data = json.loads(path.read_text(encoding="utf-8"))
by_key = {r[""]: r for r in data[""]}
n = 0
for r in data[""]:
if r.get("상태") != "추정":
continue
target = by_key[r["준용"]]
r[""], r["단위"], r["일시간"] = target[""], target["단위"], target["일시간"]
n += 1
head = {k: v for k, v in data.items() if k != ""}
path.write_text(mk.dump_rows(head, data[""]), encoding="utf-8", newline="\n")
print(f"추정 {n} 줄 값 = 준용 직종 값")
# ── 건설노임 미공표 산정 ─────────────────────────────────────────────
+11 -2
View File
@@ -47,6 +47,7 @@ BOOKS = (
"조달청제비율",
"품셈재료",
"질의회신",
"엔산법",
"자체",
)
DIVISIONS = {
@@ -311,7 +312,7 @@ def _check_linked(where: str, row: dict) -> list[str]:
def check_links(whole: mf.Master) -> list[str]:
"""끊긴 키 — 품셈재료 연결 · 인력 준용이 가리키는 줄."""
"""끊긴 키 — 품셈재료 연결 · 인력 준용이 가리키는 줄 · 추정 줄 값 = 준용 직종 값."""
out = []
for key, row in whole.index.get("MP", {}).items():
link = row.get("연결")
@@ -320,8 +321,16 @@ def check_links(whole: mf.Master) -> list[str]:
for key, row in whole.index.get("LB", {}).items():
for col in ("준용",):
ref = row.get(col)
if ref not in (None, "") and str(ref) not in whole.index.get("LB", {}):
if ref in (None, ""):
continue
target = whole.index.get("LB", {}).get(str(ref))
if target is None:
out.append(f"{whole.label(key)} · {col}{ref}」 없는 인력 키")
elif row.get("상태") == "추정" and row.get("") != target.get(""):
out.append(
f"{whole.label(key)} · 추정 값 「{row.get('')}」 이"
f" 준용 「{target.get('이름')}」 값 「{target.get('')}」 과 다름"
)
return out
@@ -274,8 +274,10 @@ class Master:
alias = row.get("준용")
if alias not in (None, ""):
target = self.get(str(alias))
mark = "(추정)" if row.get("상태") == "추정" else ""
return target.get(""), f"준용: {target.get('이름') or alias}{mark}"
name = target.get("이름") or alias
if row.get("상태") == "추정": # 값을 이미 준용 직종에서 채워 둠
return row.get(""), f"추정(준용: {name})"
return target.get(""), f"준용: {name}"
return row.get(""), None
def logic(self, ref: str) -> dict: