diff --git a/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py b/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py index 6a107634..a2a11363 100644 --- a/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py +++ b/B08_Quantity/B08_Quantity_Engine_UnitQuantity.py @@ -51,6 +51,8 @@ STONE_MASONRY = { "thickness_base_m": 0.45, # 평균두께 식의 밑돌 두께 "thickness_top_coeff": 0.10, # 상부 두께 계수 (0.45 + 0.10·H) "thickness_bottom_coeff": 0.40, # 하부 두께 계수 (0.45 + 0.40·H) + # ⚠ 미결 — 법은 「2~3 ㎡당 1개소 **이상**」(구조물_수량.md §물구멍)이고 2.0 은 **실무 관측값**이다. + # 범위의 한쪽 끝을 쓰는 것이라 사용자 확정 전까지 잠정이다. 식이 아니라 여기 있으니 갈아끼우면 된다. "weep_hole_area_m2": 2.0, # 물구멍 1개소당 벽면적 "weep_hole_length_m": 0.5, # 물구멍 1개소당 관 길이 "mortar_m3_per_m2": 0.009, # 줄눈 모르터 (찰쌓기만) @@ -208,13 +210,17 @@ def stone_masonry( # ⚠ 여기서 멈춘다 — 모르터를 시멘트·모래로 쪼개지 않는다(㉢). # 물구멍 — 벽면적 2㎡당 1개소, 개소당 0.5m. + # ⚠ 이것은 **관(파이프) 자재**이지 공제 대상이 아니다. 품셈 1-2-1 이 「공제하지 않는다」고 + # 말하는 물구멍은 **콘크리트 체적에서 뺄 구멍**이고, 여기 값은 그 구멍에 넣는 **관 길이**다. + # ⚠ 관종·지름은 미확정 — 법은 「지름 3~6㎝ 파이프」, 실무 관측은 Ø50. 규격이 정해지면 + # 이름에 붙인다(`물구멍 Ø50`). 지어내지 않고 규격 없는 이름으로 둔다. components.append( Component( "물구멍", "m", masonry_area / constants["weep_hole_area_m2"] * constants["weep_hole_length_m"], DESTINATION["물구멍"], - "돌쌓기 ÷ 2㎡/개소 × 0.5 m/개소", + "돌쌓기 ÷ 2㎡/개소 × 0.5 m/개소 (관 규격 미확정)", ) ) diff --git a/resources/data_material_surcharge/_manifest.json b/resources/data_material_surcharge/_manifest.json index d0b0e74a..b327f4ff 100644 --- a/resources/data_material_surcharge/_manifest.json +++ b/resources/data_material_surcharge/_manifest.json @@ -2,12 +2,12 @@ "schema_version": "1.0", "dataset_id": "data_material_surcharge_manifest", "generated_at": "2026-09-07T00:00:00+09:00", - "built_by": "수작업 — 품셈 1-3-1 재료 할증률표 전사 (지식DB 수량산출_일반.md §3)", + "built_by": "수작업 — 산림품셈 1-3-1 전사 + 건설품셈 1-3-1 대조(2026-09-07)", "files": [ { "file": "material_surcharge_2026-01-01.json", - "sha256": "77ffb9d8ae916252c725d28a4218ff7ecbff6a47bad1b00be8686663e17deb68", - "size_bytes": 2098 + "sha256": "d9a66bbadec54fa384ce9f04d0ff7081c1896bae606a059f06a742416570aac6", + "size_bytes": 4752 } ] } diff --git a/resources/data_material_surcharge/material_surcharge_2026-01-01.json b/resources/data_material_surcharge/material_surcharge_2026-01-01.json index aaf05787..6f7947bd 100644 --- a/resources/data_material_surcharge/material_surcharge_2026-01-01.json +++ b/resources/data_material_surcharge/material_surcharge_2026-01-01.json @@ -3,9 +3,15 @@ "dataset_id": "material_surcharge", "effective_date": "2026-01-01", "source": { - "doc": "산림사업 표준품셈 (산림청고시 제2025-82호) 제1장 1-3-1 재료의 할증", - "via": "resources/knowledge/technical_info/01_임도/04_수량분석정보/수량산출_일반.md", - "note": "품셈 항목에 할증이 포함·표시된 경우 중복 적용 금지 — 자재총괄 한 곳에서만 붙인다." + "primary": { + "doc": "산림사업 표준품셈 제1장 1-3-1 재료의 할증", + "via": "resources/knowledge/technical_info/01_임도/04_수량분석정보/수량산출_일반.md" + }, + "supplementary": { + "doc": "건설공사 표준품셈 1-3-1 재료의 할증('23년 보완)", + "via": "resources/knowledge/original/원가계산/건설공사_표준품셈/01_공통부문/제1장_적용기준.md", + "note": "산림품셈에 없는 자재만 보완용으로 본다(PLAN 8-5). 실린 값은 출처를 pumsem 필드로 구분." + } }, "policy": { "no_invented_values": true, @@ -17,35 +23,150 @@ "rate": 2, "condition": "정치식", "alt_rate": 3, - "alt_condition": "기타" + "alt_condition": "기타", + "pumsem": "forest" + }, + { + "material": "잔골재", + "rate": 10, + "alt_rate": 12, + "alt_condition": "기타", + "pumsem": "forest" + }, + { + "material": "채움재", + "rate": 10, + "alt_rate": 12, + "alt_condition": "기타", + "pumsem": "forest" + }, + { + "material": "굵은골재", + "rate": 3, + "alt_rate": 5, + "alt_condition": "기타", + "pumsem": "forest" + }, + { + "material": "모래", + "rate": 6, + "condition": "노반재료", + "pumsem": "forest" + }, + { + "material": "부순돌", + "rate": 4, + "condition": "노반재료", + "pumsem": "forest" + }, + { + "material": "자갈", + "rate": 4, + "condition": "노반재료", + "pumsem": "forest" + }, + { + "material": "점질토", + "rate": 6, + "condition": "노반재료", + "pumsem": "forest" + }, + { + "material": "이형철근", + "rate": 3, + "alt_rate": 7, + "alt_condition": "복잡 구조물 주철근", + "pumsem": "forest" + }, + { + "material": "원형철근", + "rate": 5, + "pumsem": "forest" + }, + { + "material": "강판", + "rate": 10, + "pumsem": "forest" + }, + { + "material": "각재", + "rate": 5, + "pumsem": "forest" + }, + { + "material": "판재", + "rate": 10, + "pumsem": "forest" }, - { "material": "잔골재", "rate": 10, "alt_rate": 12, "alt_condition": "기타" }, - { "material": "채움재", "rate": 10, "alt_rate": 12, "alt_condition": "기타" }, - { "material": "굵은골재", "rate": 3, "alt_rate": 5, "alt_condition": "기타" }, - { "material": "모래", "rate": 6, "condition": "노반재료" }, - { "material": "부순돌", "rate": 4, "condition": "노반재료" }, - { "material": "자갈", "rate": 4, "condition": "노반재료" }, - { "material": "점질토", "rate": 6, "condition": "노반재료" }, - { "material": "이형철근", "rate": 3, "alt_rate": 7, "alt_condition": "복잡 구조물 주철근" }, - { "material": "원형철근", "rate": 5 }, - { "material": "강판", "rate": 10 }, - { "material": "각재", "rate": 5 }, - { "material": "판재", "rate": 10 }, { "material": "레미콘", "rate": 2, "condition": "무근", "alt_rate": 1, - "alt_condition": "철근" + "alt_condition": "철근", + "pumsem": "forest" }, - { "material": "흄관", "rate": 3 }, - { "material": "떼", "rate": 10 }, - { "material": "초화류", "rate": 10 }, - { "material": "사방용 수목", "rate": 10 }, - { "material": "원석", "rate": 30, "condition": "마름돌용" } + { + "material": "흄관", + "rate": 3, + "pumsem": "forest" + }, + { + "material": "떼", + "rate": 10, + "pumsem": "forest" + }, + { + "material": "초화류", + "rate": 10, + "pumsem": "forest" + }, + { + "material": "사방용 수목", + "rate": 10, + "pumsem": "forest" + }, + { + "material": "원석", + "rate": 30, + "condition": "마름돌용", + "pumsem": "forest" + } ], "observed_practice": { "note": "울진 총괄집계 관측 — 참고이지 기본값이 아니다(PLAN 8-10 ★ 법대로).", - "values": { "모래": 10, "자갈": 3, "혼합석": 2, "시멘트": 2, "떼": 10 } + "values": { + "모래": 10, + "자갈": 3, + "혼합석": 2, + "시멘트": 2, + "떼": 10 + } + }, + "candidates_pending_user": { + "note": "건설품셈에서 이름은 찾았으나 **적용 조건이 우리 쓰임과 다른** 것. 지식DB는 근거·후보 가이드이지 값을 확정하는 곳이 아니므로(CLAUDE.md 3장) 엔진은 이 값을 쓰지 않고 「할증률 미확보」로 둔다. 사용자 확정 후 rates_pct 로 옮길 것.", + "items": [ + { + "material": "막자갈", + "rate": 4, + "pumsem": "const", + "listed_condition": "노상 및 노반재료(선택층·보조기층·기층)", + "our_usage": "돌쌓기 뒤채움", + "why_not_applied": "조건이 노반재료 한정이라 뒤채움에 그대로 쓸 근거가 없음" + } + ] + }, + "not_found": { + "note": "산림·건설 두 품셈의 재료 할증률표를 다 뒤졌으나 **이름이 없는** 자재. 석재 계열은 건설품셈도 해상 사석(기초·피복·뒤채움)과 원석(마름돌용)만 다룬다.", + "materials": [ + "야면석", + "고임돌", + "물구멍" + ], + "checked": [ + "산림품셈 1-3-1 전 19종", + "건설품셈 1-3-1 1~7호(콘크리트·노반·관기초·토사(해상)·사석(해상)·속채움(해상)·강재류)", + "건설품셈 제7장 돌공사 — 재료 할증률표 없음" + ] } }