- 운반 줄 이름: 「dozer 운반」 → 「불도저 운반」(매핑 master_name) · 「dump_truck 운반」 → 「덤프 운반」 · 「free_haul 운반」 → 「무대(종방향유용토)」(토공집계 이름) - 덤프 규격·호표 규격 L: 「L=137.13474461798225m」 → 「L=137.13m」 — 보이기만 둘째 자리 · 호표 열쇠·운반 식은 받은 거리 그대로 - 규격 칸 갈래: 이미 적힌 갈래는 한 번만(`spec_with_variant` · 숫자 경계) — 「Ø800 800」 → 「Ø800」 - 936be972 내역: 흠 줄 6 → 0 · 금액 불변 161,514,889 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
58 lines
2.9 KiB
Python
58 lines
2.9 KiB
Python
"""내역 표시 흠 묶음 — 장비 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 돌쌓기"
|