· 판정표 모양 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
61 lines
3.0 KiB
Python
61 lines
3.0 KiB
Python
"""시간 줄 판정표 — 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.6∼0.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
|