fix(b09): 조종원 시간당 노임을 식 좌→우 순차 + 절사로 — 골든셋 시험 첫 벌

- 계수로 미리 접으면 267,360 → 55,699 로 1원 틀림 — 식 1/8*16/12*25/20 을 차례로 풀어 55,700
- 중기 호표 운전원 줄은 시간당 노임 제목(#시간) × 인수로 부름(STmate 운전원 1 × 55,700 모양)
- 골든셋 시험 test_b09_golden_stmate — 실무 6건 환율및기초자료 시간당 칸 전수 재현
  (다섯 건 원 미만 절사 · 2025 울진 소광 0.1원 미만 절사 — 자리는 설정값)
- 28자리 끝 반올림 차례만 다른 합 비교 시험을 허용 오차로

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
This commit is contained in:
2026-09-13 23:13:20 +09:00
co-authored by Claude Opus 5
parent 165bfed0a8
commit fd30227b73
8 changed files with 225 additions and 31 deletions
@@ -25,8 +25,7 @@ from functools import lru_cache
from typing import Any
from B09_Estimation.B09_Estimation_MachineCost import (
OPERATOR_ALLOWANCE_FACTOR,
OPERATOR_HOURS_PER_DAY,
hourly_operator_wage,
load_machine_catalog,
)
from B09_Estimation.B09_Estimation_PriceBook import PriceKind
@@ -150,10 +149,9 @@ def machine_expense_sheets(build: Any) -> list[dict[str, Any]]:
),
"operator_code": occupation,
"operator_daily_wage": _money(wage),
# 식 좌→우 순차 + 원 미만 절사(명세 7장) — 계수로 접으면 1원 틀림.
"operator_krw_per_hour": _money(
(wage / Decimal(OPERATOR_HOURS_PER_DAY)) * OPERATOR_ALLOWANCE_FACTOR
if wage is not None
else None
hourly_operator_wage(wage) if wage is not None else None
),
# ③ 시간당 사용료 — 조립된 값(이 장의 결론)
"material_krw": _money(money.material),