Files
Aislo/resources/tester/test_b08_haul_double_count.py
T
eomsangdonandClaude Opus 5 d7cb14f416 test(B08): tmp/tests 중 tester 에 없던 47 개를 resources/tester 로 옮김
tmp/ 가 창끼리 안 건너가는 것이 확정돼(랩탑이 시간 두고 두 번 확인) 시험·예외가
저절로 건너가도록 git 안으로 옮김. 사용자 확정.

- 내용은 하나도 안 고침 — 자리만 옮김. tmp/tests 는 남겨 둠.
- 같은 이름이 이미 있던 64 개는 랩탑 것을 그대로 두고 건너뜀.
- helper_b05_*.js 둘은 랩탑이 .cjs 로 이미 올린 것과 **줄바꿈만 다른 같은 내용**이라
  복사본을 도로 뺌(시험이 .cjs 를 부름).
- resources/tester/ 에서 전체 1176 통과 · 29 건너뜀 · 실패 0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 17:15:57 +09:00

77 lines
2.6 KiB
Python

"""운반이 두 축에 실리던 자리 (2026-09-09 실측).
⚠⚠ 토공집계표는 실무 토적집계 모양이라 「무대·도자운반·덤프운반」을 함께 싣고,
인계본에는 운반표(FP-10-11·FP-10-12)가 **같은 물량으로 또 실렸다.**
실측 — 도자 17.389·61.130 · 덤프 37.511·122.417 이 두 축에 각각 있었고 **둘 다 in_bill**.
⚠ 겨누는 것 넷
① 집계 쪽 운반 줄은 **내역 줄이 아니다**
② 그래도 **값은 남는다** — 검산(무대+도자+덤프 = 총 운반토량)이 그 값을 씀
③ 사유가 적힌다 — 「내역 줄은 운반표 쪽」
④ 운반표 쪽은 그대로 내역 줄로 선다
"""
from __future__ import annotations
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(ROOT))
from B08_Quantity.B08_Quantity_Engine_Handoff import build_handoff # noqa: E402
집계 = {
"rows": [
{"group": "도자운반", "unit": "㎥", "amount": 17.39, "in_bill": True},
{"group": "덤프운반", "unit": "㎥", "amount": 37.51, "in_bill": True},
{"group": "무대(종방향유용토)", "unit": "㎥", "amount": 14.76, "in_bill": False},
{"group": "성토", "unit": "㎥", "amount": 100.0, "in_bill": True},
]
}
운반 = {
"rows": [
{
"equipment": "dozer",
"ground": "토사",
"volume_m3": 15.65,
"natural_m3": 17.39,
"conversion_c": 0.9,
"average_distance_m": 43.66,
"in_bill": True,
}
]
}
def 줄들() -> dict:
rows = build_handoff(summary_table=집계, haul_table=운반)["work_items"]
return {row["name"]: row for row in rows}
def test_집계_쪽_운반은_내역_줄이_아니다() -> None:
rows = 줄들()
assert rows["도자운반"]["in_bill"] is False
assert rows["덤프운반"]["in_bill"] is False
def test_값은_남는다() -> None:
"""⚠ 빼 버리면 검산이 안 된다 — 무대를 그렇게 둔 것과 같은 규칙."""
assert 줄들()["도자운반"]["quantity"] == 17.39
def test_사유가_적힌다() -> None:
reason = 줄들()["도자운반"]["in_bill_reason"]
assert "내역 줄은 운반표 쪽" in reason
def test_운반표_쪽은_그대로_선다() -> None:
row = 줄들()["dozer 운반"]
assert row["in_bill"] is True and row["work_item_code"] == "FP-10-11"
assert row["quantity"] == 17.39
def test_토공_줄은_안_건드린다() -> None:
"""⚠ 성토처럼 집계에만 있는 줄은 그대로 내역 줄이다 — 운반 계열만 가른다."""
assert 줄들()["성토"]["in_bill"] is True