· 판정표 모양 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
44 lines
2.3 KiB
Python
44 lines
2.3 KiB
Python
"""말없이 버려지던 기계·연료 줄 — 2026-09-15 브레인 ㉠(인력만으로 싸게 서던 공종 막기).
|
||
|
||
자원 축 줄 읽기가 세 자리에서 기계·연료 줄을 「못 붙은 줄」 목록에도 안 올리고 버렸음 →
|
||
그 공종 단가가 인력만으로 **막히지도 사유도 없이** 싸게 섬(사용자는 값이 맞는 줄 앎).
|
||
① 규격이 이름 앞 「0.8㎥ 굴착기 | h | 0.25」(14-2 · 14-1) — 숫자로 시작해 머리글로 걸러짐
|
||
② 값·이름 둘 다 못 읽음 「디젤엔진(15HP) | 11.19kW」(12-26) · 「연료비 | 소요량 적용 | ps × 0.253ℓ × 6h」(10-7-4)
|
||
③ 수량 빈 연료 줄 「연료비 | 경유 | L | 」(10-8-3) — 숫자 없는 줄은 머리 줄로 봄
|
||
⇒ 기계·연료로 보이는 줄은 「못 맞춤 + 일부만」 — 틀린 금액보다 안 선 금액(사유 또렷이).
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from B09_Estimation.B09_Estimation_UnitPrice import cached_build
|
||
|
||
|
||
def test_기계_연료_줄이_안_붙은_다섯_공종은_일부만으로_막히고_사유() -> None:
|
||
build = cached_build()
|
||
# 14-1·14-2 는 뒤이어 시간 줄 판정표가 읽어 풀림(`test_b09_hour_rows` · 2026-09-15 ㉡-3)
|
||
for code in ("FP-12-26", "FP-10-08-03", "FP-10-07-04"):
|
||
assert code in build.partial_ratio, code
|
||
assert "기계·연료 줄" in (build.component_gaps.get(code) or ""), (
|
||
code,
|
||
build.component_gaps.get(code),
|
||
)
|
||
left = " ".join(build.unattached.get("FP-12-26", []))
|
||
assert "디젤엔진" in left and "양수기" in left, left
|
||
assert "FP-14-02" not in build.partial_ratio and "FP-14-01" not in build.partial_ratio
|
||
|
||
|
||
def test_머리_줄과_인력만인_정상_공종은_안_막힘() -> None:
|
||
build = cached_build()
|
||
for code in ("FP-09-15-02", "FP-12-12", "FP-04-02-02", "FP-09-03-02"):
|
||
assert code not in build.partial_ratio, code
|
||
|
||
|
||
def test_파쇄_모듈이_쓰는_파쇄기_줄은_막힘으로_안_남음() -> None:
|
||
build = cached_build()
|
||
assert "FP-08-11" not in build.partial_ratio
|
||
assert "기계·연료 줄" not in (build.component_gaps.get("FP-08-11") or "")
|
||
assert not any(
|
||
"파쇄기 " in label or label == "이동식 임목 파쇄기"
|
||
for label in build.unattached.get("FP-08-11", [])
|
||
)
|