- 입력이면 서는 줄(표토 두께·거리 · 임목폐기물 조사값 · 부대시설 개소 · 임목파쇄 부피 · 앞 단계 횡단·사면표) → 「입력이 필요함」 · 인계 input_missing - 자료·산식이 없는 줄(뿌리 운반 부피 · 사방 원단위 · 사면표에 성토고 칸 없음) → 「근거 없음」 · 인계 unit_data_missing(종전 input_missing = 반대 방향 거짓 사유) - 사면표가 섰는데 비탈 규준틀 0 개소 → 「해당 없음」 - 품셈 공종이 없는 부대시설은 개소를 넣어도 인계 input_missing 그대로(별도 단가) - 표 머리 「입력이 필요한 줄 N · 근거 없는 줄 M」 · 700줄 — 규준틀 재료를 `_Preparation_FrameMaterial` 로 뗌(719 → 651) - 936be972: 15줄 중 입력 7 · 근거 없음 1(뿌리 운반) · 내역 「원단위가 없습니다(우리가 만들 것)」 · 금액 불변 155,207,971 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
"""임목파쇄 — 켤 수 있는 칸 (2026-09-09 사용자 확정 5차 5번).
|
|
|
|
「근주이식·임목파쇄는 **기본 안 셈**」이되 「⚠ 현장에 따라 **파쇄가 적용될 필요 있음**」이라
|
|
**임목파쇄만** 켤 수 있게 둔다. **근주이식은 칸도 안 만든다.**
|
|
|
|
⚠ 겨누는 것 다섯
|
|
① 기본은 **줄이 아예 없다** — 빈 칸이 「세야 함」으로 읽히면 안 된다
|
|
(부대시설과 다른 자리 — 그쪽은 **법정 의무**라 줄이 늘 선다)
|
|
② 켜면 줄이 선다
|
|
③ ⚠ 켜도 **부피는 지어내지 않는다** — 넣어야 값이 선다
|
|
④ 부피를 넣으면 값이 서고 코드가 붙는다(FP-08-11 이동식 임목 파쇄)
|
|
⑤ 근주이식은 **어느 경우에도 줄이 없다**
|
|
"""
|
|
|
|
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_Preparation import ( # noqa: E402
|
|
STATUS_NEEDS_INPUT,
|
|
STATUS_READY,
|
|
build_table,
|
|
)
|
|
|
|
|
|
def 표(enabled: object = False, volume: object = None) -> dict:
|
|
table = build_table({}, [], [], None, None, {}, None, None, enabled, volume)
|
|
return {row["item"]: row for row in table["rows"]}
|
|
|
|
|
|
def test_기본은_줄이_없다() -> None:
|
|
"""⚠ 켤 자리가 없으면 물을 일도 없다 — 안 켠 프로젝트에 빈 줄을 세우지 않는다."""
|
|
assert "임목파쇄" not in 표()
|
|
|
|
|
|
def test_켜면_줄이_선다() -> None:
|
|
assert "임목파쇄" in 표(True)
|
|
|
|
|
|
def test_켜도_부피는_지어내지_않는다() -> None:
|
|
row = 표(True)["임목파쇄"]
|
|
# 부피를 넣으면 서는 줄 — 「입력이 필요함」(2026-09-14 ㉴).
|
|
assert row["amount"] is None and row["status"] == STATUS_NEEDS_INPUT
|
|
assert "부피" in row["reason"]
|
|
|
|
|
|
def test_부피를_넣으면_값이_선다() -> None:
|
|
row = 표(True, 78.0)["임목파쇄"]
|
|
assert row["amount"] == 78.0 and row["status"] == STATUS_READY
|
|
assert row["work_item_code"] == "FP-08-11"
|
|
assert row["unit"] == "㎥"
|
|
|
|
|
|
def test_근주이식은_어느_경우에도_없다() -> None:
|
|
"""확정 5차 5번 — 근주이식(FP-14-02)은 **칸도 안 만든다**."""
|
|
for enabled, volume in ((False, None), (True, None), (True, 78.0)):
|
|
assert "근주이식" not in 표(enabled, volume)
|