Files
Aislo/resources/tester/test_b09_hour_rows.py
eomsangdonandClaude Opus 5 42e8b4f0a9 feat(b09): ㉡-3 시간 줄 판정표 — 14-1 입목뿌리 밑막이 · 14-2 근주이식이 섬 · 막힌 셋(물푸기·모노레일·케이블크레인)은 옛 값이 왜 틀렸는지 사유
· 판정표 모양 hour_rows — 장비 h 그대로 · 인력 h ÷ 8(총칙 「일일 작업시간 8시간」) · ÷ 10본
· 원문 「0.8㎥ 굴착기」 가 형식을 안 적어 무한궤도 0201-0080 · 타이어 0211-0080 두 갈래 · 제안 없음(브레인 판정 ①)
· 14-1 우드그랩 ↔ 카탈로그 부착용 집게 7206-0070(규격 0.6∼0.8) — 이름이 다름을 사유에(②) · 조합이라 본체 #조합
· 옛 14-2 11,356원은 0.66h 를 인으로 셈(8배) + 굴착기 빠짐 → 무한궤도 4,431 · 타이어 4,631원/본 · 14-1 8,603 → 3,192 · 3,316
· 막힌 셋 사유(③): 12-26 가동시간 원문 없음 · 옛 값 보통인부 1인뿐 / 10-7-4 운전 단가표 보통인부 2 는 적재·짐부리기 2인과 같은 사람 · 옛 값 두 번 센 4인 / 10-8-3 ℓ/kWh 원문 없음 · 옛 값 특별인부 1인뿐
· 마스터 재생성 — 14-1 · 14-2 갈래 키만

잴 시험 넷 빨강→초록 · 끄기 둘 빨강 · 전체 시험 1721 + 392 통과

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
2026-09-15 03:29:21 +09:00

61 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""시간 줄 판정표 — 14-1 입목뿌리 밑막이 · 14-2 근주이식(2026-09-15 브레인 ㉡-3 판정 ①②③).
원문(10본당): 14-2 「0.8㎥ 굴착기 | h | 0.25 · 보통인부 | h | 0.66」 · 14-1 「0.8㎥ 굴착기(우드그랩 부착) | h | 0.17 · 보통인부 | h | 0.5」
⚠ 인력 단위가 **시간** — 옛 14-2 11,356원은 0.66 을 인으로 셈(8배) + 굴착기 줄이 말없이 빠짐.
장비 h 그대로 · 인력 h ÷ 8(총칙 「일일 작업시간 8시간」) · ÷ 10본
① 「0.8㎥ 굴착기」 형식을 원문이 안 적음 — 무한궤도 0201-0080 · 타이어 0211-0080 두 갈래 · 제안 없음
② 우드그랩 = 부착용 집게 7206-0070(규격 「0.60.8」 이 0.8 을 품음) — 이름이 다름을 사유에
③ 막힌 셋(12-26 · 10-7-4 · 10-8-3)은 옛 값이 왜 틀렸는지 사유에
"""
from __future__ import annotations
from decimal import Decimal
from B09_Estimation.B09_Estimation_KnownGaps import known_gap_note
from B09_Estimation.B09_Estimation_UnitPrice import cached_build
def _rows(book, title: str) -> dict[str, Decimal]:
return {r.ref_code: r.quantity for r in book.details[title]}
def test_근주이식은_두_갈래_장비_시간과_인력_시간_나누기_8() -> None:
build = cached_build()
book = build.book
crawler = _rows(book, "B-FP-14-02#무한궤도")
tire = _rows(book, "B-FP-14-02#타이어")
assert crawler["X-0201-0080"] == Decimal("0.25") / 10, crawler
assert tire["X-0211-0080"] == Decimal("0.25") / 10, tire
assert crawler["1002"] == Decimal("0.66") / 8 / 10, crawler
assert "FP-14-02" not in build.partial_ratio
assert "FP-14-02" not in build.default_variants # 제안 없음(①)
def test_입목뿌리_밑막이는_부착용_집게를_같은_시간만큼() -> None:
book = cached_build().book
rows = _rows(book, "B-FP-14-01#무한궤도")
# 부착용 집게와 조합 — 본체는 잡재료 16% 층(`#조합` · 품셈 제8장 [주]⑤)
assert (
rows["X-0201-0080#조합"] == Decimal("0.17") / 10
and rows["X-7206-0070"] == Decimal("0.17") / 10
)
assert rows["1002"] == Decimal("0.5") / 8 / 10
note = known_gap_note("FP-14-01")
assert "우드그랩" in note and "부착용 집게" in note and "7206-0070" in note, note
def test_사유는_시간_단위와_옛_값의_잘못을_밝히고_무한궤도를_권하지_않음() -> None:
note = known_gap_note("FP-14-02")
assert "시간" in note and "8시간" in note and "8배" in note, note
assert "영월" not in note and "제안" not in note and "10-12" not in note, note
def test_막힌_셋은_옛_값이_왜_틀렸는지를_사유에() -> None:
build = cached_build()
assert "보통인부 1인 값뿐" in known_gap_note("FP-12-26")
assert "같은 사람" in known_gap_note("FP-10-07-04") and "두 번" in known_gap_note("FP-10-07-04")
assert "특별인부 1인 값뿐" in known_gap_note("FP-10-08-03")
for code in ("FP-12-26", "FP-10-07-04", "FP-10-08-03"):
assert code in build.partial_ratio, code