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:
@@ -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} 줄 값 = 준용 직종 값")
|
||||
|
||||
|
||||
# ── 건설노임 미공표 산정 ─────────────────────────────────────────────
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user