knowledge(마스터): 제조노임 미공표 16 직종 산정 반영 — 조사월마다 원 미만 버림
- 값 = 마지막 공표 조사월 값 × 조사월별 전체 평균 증가율을 이어 곱하되 곱할 때마다 원 미만 버림(건설노임 4-라 방식 준용 · 제조 원문에 규정 없음) - 상태 「미공표」 → 「산정」 · 비고 「산정: <조사월> <값>원 × 평균 증가율(원 미만 버림) — 건설노임 4-라 방식 준용 · 제조 원문에 규정 없음」 - 빌더 build_인력_노임.py 에 estimate_make 추가 — 다시 돌려도 같은 값 · 추적 md 5절 버림 열과 기계 대조 - 구분 머리 제조업 「원천」 에 옛 회차 11 개 「3. 직종별 조사노임.md」 와 미공표직종_추적.md 를 역할 「산정근거」 로 더함 - kbiz_track_unpublished.py 에 「단계마다 버림(채택)」 열 추가 · cak_track_unpublished.py 도 같은 말로 맞춤(건설 md 는 그대로 다시 나옴) - 시험 — 인력 상태 집합에서 「미공표」 빠짐 · 제조 산정 값 한 줄 대조 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
@@ -8,6 +8,8 @@
|
||||
건설노임 원문 「통합·명칭변경 직종」 목록의 옛 직종은 현행 줄 `옛이름` 으로 옮겼음.
|
||||
- 인력_건설노임 미공표 — 원문 4-라 산정값을 「값」 에 넣고 상태 「산정」 · 근거는 비고 한 줄.
|
||||
이음 = 원문 회차의 전체직종 평균을 그대로 이음(미공표직종_추적.md 4절) · 산정값은 같은 md 5절과 대조.
|
||||
- 인력_제조노임 미공표 — 조사월마다 전체 평균 증가율을 곱하며 원 미만 버림(건설 4-라 방식 준용 · 제조 원문에 규정 없음).
|
||||
대조는 제조 미공표직종_추적.md 5절 「단계마다 버림(채택)」 열 · 옛 회차 md 는 구분 머리 「원천」(역할 산정근거)에.
|
||||
|
||||
쓰기: ./venv/Scripts/python.exe resources/master_data/scripts/build_인력_노임.py
|
||||
옛 모양(원문별 파일 · 열쇠)으로 쓰고 끝에 `master_keys.adopt` 가 인력.json(키 · 구분)으로 받음.
|
||||
@@ -29,6 +31,7 @@ ROOT = Path(__file__).resolve().parents[3]
|
||||
MD = ROOT / "resources/master_data"
|
||||
COST = ROOT / "resources/knowledge/original/원가계산"
|
||||
CAK = COST / "노임단가_건설업_대한건설협회"
|
||||
KBIZ = COST / "노임단가_제조업_중소기업중앙회"
|
||||
WAGE = "원/일"
|
||||
_INT = re.compile(r"\d{1,3}(?:,\d{3})+")
|
||||
|
||||
@@ -347,6 +350,7 @@ def main():
|
||||
)
|
||||
|
||||
estimate(wage)
|
||||
estimate_make(make)
|
||||
print("새 틀로 받음", mk.adopt())
|
||||
|
||||
|
||||
@@ -384,5 +388,51 @@ def estimate(wage: dict) -> None:
|
||||
print(f"건설노임 미공표 산정 {n} 줄 · 미공표직종_추적.md 5절 값과 같음")
|
||||
|
||||
|
||||
# ── 제조노임 미공표 산정 ─────────────────────────────────────────────
|
||||
def estimate_make(make: dict) -> None:
|
||||
"""제조 미공표 직종 — 조사월마다 평균 증가율을 곱하며 원 미만 버림(건설 4-라 방식 준용).
|
||||
이음·대조는 제조 미공표직종_추적.md 4절(단계) · 5절(「단계마다 버림(채택)」 열)."""
|
||||
track = KBIZ / "미공표직종_추적.md"
|
||||
text = track.read_text(encoding="utf-8")
|
||||
steps = { # 뒤 조사월 → (분자, 분모)
|
||||
r[0].split(" → ")[1]: (num(r[1]), num(r[2])) for r in table_after(text, "| 앞 → 뒤 |")[1:]
|
||||
}
|
||||
hist = table_after(text, "| 직종 (최근 판 코드) |")
|
||||
months = hist[0][1:]
|
||||
vals = {r[0].split()[0]: r[1:] for r in hist[1:]}
|
||||
shown = {r[0].split()[0]: r for r in table_after(text, "| 직종 | 마지막 공표 조사월 |")[1:]}
|
||||
n = 0
|
||||
for r in make["줄"]:
|
||||
if r.get("상태") not in ("미공표", "산정"):
|
||||
continue
|
||||
cells_ = vals[r["열쇠"]] # 원문 표기 그대로(`**` = 공표값 · `*` · `-` = 값 없음)
|
||||
last = max(i for i, v in enumerate(cells_) if v.replace("*", "").strip() not in ("", "-"))
|
||||
at, base = months[last], num(cells_[last].replace("*", ""))
|
||||
value = Decimal(base)
|
||||
for b in months[last + 1 :]:
|
||||
top, bottom = steps[b]
|
||||
value = (value * top / bottom).to_integral_value(rounding=ROUND_FLOOR)
|
||||
want = shown[r["열쇠"]]
|
||||
assert str(value) == want[5].replace(",", ""), (r["열쇠"], value, want[5])
|
||||
r["값"] = int(value)
|
||||
r["상태"] = "산정"
|
||||
r["비고"] = (
|
||||
f"산정: {at} {base:,}원 × 평균 증가율(원 미만 버림)"
|
||||
" — 건설노임 4-라 방식 준용 · 제조 원문에 규정 없음"
|
||||
)
|
||||
n += 1
|
||||
make["원천"] = [s for s in make["원천"] if s["역할"] == "primary"] + [
|
||||
{
|
||||
"경로": p.relative_to(ROOT).as_posix(),
|
||||
"해시": hashlib.sha256(p.read_bytes()).hexdigest(),
|
||||
"역할": "산정근거",
|
||||
}
|
||||
for p in [*sorted(KBIZ.glob("20??-??-??/3. 직종별 조사노임.md")), track]
|
||||
]
|
||||
head = {k: v for k, v in make.items() if k != "줄"}
|
||||
dump_master(MD / "인력_제조노임.json", head, make["줄"])
|
||||
print(f"제조노임 미공표 산정 {n} 줄 · 미공표직종_추적.md 5절 버림 열과 같음")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user