feat(b08): 노체다짐 칸 — 기본 꺼짐 · 켜면 토공집계 별도 줄(수량 = 성토량)
- 산출 조건 subgrade_compaction_enabled · 기본 False(9-16-2 [주]⑤ 「대규모 성토지로서 층다짐이 필요한 경우」 조건부) - 토공집계 「노체다짐」 줄 · 규격 진동롤러(자주식 10ton) · 매핑 FP-09-16-02 · 갈래 없음 - [주]③ 굴착기+진동롤러 조합 중 굴착기는 성토(포설) 줄이 셈 — 두 번 안 셈(#조합 철회) - 칸 밑에 [주]⑤ 근거 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn
This commit is contained in:
@@ -70,6 +70,14 @@
|
||||
"master_name": "노체 > 노체포설",
|
||||
"note": "실무 내역 셋을 다 봤더니 「노체포설·노체다짐」으로 가른 줄이 **어디에도 없다**(2026-09-08 데스크탑 보조). 영월은 「암성토 BACK-HOE(0.7㎥)」 한 줄이고 그 단가산출 안에 적사→성토→다짐 3단계가 들어가며, 울진은 「유용성토」·「사토 및 다짐공」, 봉화는 성토사면다짐만 따로다. ⇒ **성토 본체 한 줄(포설) + 성토면다짐(㎡) 따로**가 실무 양식이라 부모(FP-09-16)에서 자식 포설로 내렸다. 다짐은 그 단가 안 단계로 둔다."
|
||||
},
|
||||
{
|
||||
"group": "노체다짐",
|
||||
"work_item_code": "FP-09-16-02",
|
||||
"basis_unit": "㎥",
|
||||
"basis_source": "산림사업 표준품셈(고시 2025-82) 원문 L5336 「Q=1000×V×W×E×D×f/N= ㎥/시간」 — 포설(9-16-1)과 같은 체적 축이라 성토량을 그대로 밑수로 씀.",
|
||||
"master_name": "노체 > 노체다짐",
|
||||
"note": "2026-09-13 브레인 판정 — 별도 줄 · 산출 조건 칸으로 켜고 끔 · 기본 꺼짐([주]⑤ 「대규모 성토지로서 층다짐이 필요한 경우」 조건부). [주]③ 「굴착기와 진동롤러 조합」은 작업 방식 설명 — 굴착기는 포설(9-16-1) 줄, 롤러는 이 줄(B09 B-FP-09-16-02 롤러만). 갈래 없음(2026-09-14 「#조합」 철회 — X-<기계>#조합 잡재료 16% 층과 다른 뜻)."
|
||||
},
|
||||
{
|
||||
"group": "성토면다짐",
|
||||
"work_item_code": "FP-09-17-01",
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
"""노체다짐 칸 — 기본 꺼짐 · 켜면 토공집계 별도 줄 · 수량 = 성토량 (2026-09-13 판정)."""
|
||||
|
||||
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_EarthworkSummary import SummaryInput, build_rows # noqa: E402
|
||||
|
||||
TOTALS = {"fill_volume_m3": 1234.5}
|
||||
|
||||
|
||||
def _groups(enabled: bool) -> dict:
|
||||
rows = build_rows(SummaryInput(earthwork_totals=TOTALS, subgrade_compaction_enabled=enabled))
|
||||
return {row.group: row for row in rows}
|
||||
|
||||
|
||||
def test_끄면_줄_자체가_없다() -> None:
|
||||
assert "노체다짐" not in _groups(False)
|
||||
|
||||
|
||||
def test_켜면_성토량으로_선다_근거가_비고에() -> None:
|
||||
row = _groups(True)["노체다짐"]
|
||||
assert (row.unit, row.amount, row.in_bill) == ("㎥", 1234.5, True)
|
||||
assert "[주]⑤" in row.note and "층다짐이 필요한 경우" in row.note
|
||||
assert "굴착기" not in row.spec # 굴착기는 성토(포설) 줄이 셈 — 두 번 안 셈
|
||||
|
||||
|
||||
def test_인계가_9_16_2_로_잇고_갈래를_안_싣는다() -> None:
|
||||
from B08_Quantity.B08_Quantity_Engine_EarthworkSummary import build_table
|
||||
from B08_Quantity.B08_Quantity_Engine_Handoff import build_handoff
|
||||
|
||||
table = build_table(SummaryInput(earthwork_totals=TOTALS, subgrade_compaction_enabled=True))
|
||||
handed = {r["name"]: r for r in build_handoff(summary_table=table)["work_items"]}
|
||||
row = handed["노체다짐"]
|
||||
assert (row["work_item_code"], row["quantity"], row["in_bill"]) == ("FP-09-16-02", 1234.5, True)
|
||||
assert row["variant_value"] is None and row["blocked_kind"] is None
|
||||
|
||||
|
||||
def test_설정_기본은_꺼짐() -> None:
|
||||
from common_util.common_util_project_settings import default_settings
|
||||
|
||||
assert default_settings()["quantity"]["subgrade_compaction_enabled"] is False
|
||||
Reference in New Issue
Block a user