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>
77 lines
2.6 KiB
Python
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
|