"""내역 표시 흠 묶음 — 장비 id · 거리 14자리 · 규격 갈래 두 번 (2026-09-14 브레인 ㉰㉵). 훑기(936be972 내역)에서 잡은 것: ㉰ 운반 줄 이름이 장비 키 그대로 「dozer 운반」「dump_truck 운반」「free_haul 운반」 ㉰ 덤프 규격 칸 「토사 L=137.13474461798225m」 — 가중평균 거리를 그대로 찍음 ㉵ 배수관 규격 칸 「Ø800 800」 — 이미 적힌 관경을 갈래로 한 번 더 붙임 ⚠ 거리는 **보이기만** 줄인다 — 호표 열쇠·운반 식은 받은 거리 그대로. """ from __future__ import annotations from decimal import Decimal import B09_Estimation.B09_Estimation_BillOfQuantities # noqa: F401 — 줄 모듈은 조판 모듈이 먼저 섬 from B08_Quantity.B08_Quantity_Engine_Handoff import build_handoff from B09_Estimation.B09_Estimation_BillOfQuantities_Rows import spec_with_variant from B09_Estimation.B09_Estimation_MachineProductivity_Dump import distance_label, dump_title_code def test_운반_줄_이름에_장비_키가_안_뜬다() -> None: haul = { "rows": [ {"equipment": "free_haul", "ground": "토사", "volume_m3": 10.0, "in_bill": False}, {"equipment": "dozer", "ground": "토사", "volume_m3": 20.0, "average_distance_m": 40.0}, { "equipment": "dump_truck", "ground": "토사", "volume_m3": 30.0, "average_distance_m": 137.13474461798225, }, ] } names = [row["name"] for row in build_handoff(haul_table=haul)["work_items"]] assert "불도저 운반" in names and "덤프 운반" in names and "무대(종방향유용토)" in names assert not [ name for name in names if any(key in name for key in ("dozer", "dump_truck", "free_haul")) ] def test_거리는_둘째_자리까지_보이고_열쇠는_그대로() -> None: raw = Decimal("137.13474461798225") assert distance_label(raw) == "L=137.13m" assert distance_label(Decimal("100")) == "L=100m" assert distance_label(Decimal("60.5")) == "L=60.5m" # 호표 열쇠는 받은 거리 그대로 — 거리마다 갈리는 호표가 뭉치면 안 된다. assert dump_title_code("FP-10-12-01", raw).endswith("L137.13474461798225m") def test_규격에_적힌_갈래는_한_번만() -> None: assert spec_with_variant("Ø800", "800") == "Ø800" assert spec_with_variant("연암 · 리핑암", "리핑암") == "연암 · 리핑암" # 숫자 경계 — 「Ø1800」 에 800 은 적힌 것이 아님. assert spec_with_variant("Ø1800", "800") == "Ø1800 800" # 종전 동작 — 빈 규격 · 규격 글로 시작하는 갈래(면고르기) · 새 갈래. assert spec_with_variant("", "토사") == "토사" assert spec_with_variant("성토면", "성토면 인력") == "성토면 인력" assert spec_with_variant("H=2", "돌쌓기") == "H=2 돌쌓기"