diff --git a/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py b/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py index 4d3ef323..f2fed9bc 100644 --- a/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py +++ b/B08_Quantity/B08_Quantity_Build_WorkItemMaster.py @@ -26,6 +26,7 @@ from __future__ import annotations +import difflib import hashlib import json import re @@ -146,10 +147,16 @@ def renumber_from_body( return fixed +#: ⚠ [주] 속 **인용** — 「‘13-3. 기초다짐 및 뒤채움’ 항을 적용한다」(13-4-1 [주]④ · 13-5-2 [주]⑤). +#: 「번호. 이름」 꼴이라 제목으로 읽혀 표 셋(F0405·F0406·F0418)이 13-3 에 붙고 없는 갈래 3줄이 섰음 +#: (2026-09-17 서브 훑기 · 브레인). 닫는 따옴표 뒤에 「항·을·를」이 오면 인용. +_CITATION_RE = re.compile(r"[’”]\s*(?:항|을|를)") + + def _is_section_title(section: str, by_number: dict[str, dict[str, Any]]) -> bool: - """진짜 절 제목인가 — 「번호. 이름」, 또는 마침표 없이 번호 뒤 글이 목차 절 이름과 같음.""" + """진짜 절 제목인가 — 「번호. 이름」(인용 아님), 또는 마침표 없이 번호 뒤 글이 목차 절 이름과 같음.""" if re.match(r"^\s*\d+(?:-\d+){0,3}\.\s", section): - return True + return not _CITATION_RE.search(section) number = section_number(section) node = by_number.get(number) if number else None if node is None: @@ -158,6 +165,35 @@ def _is_section_title(section: str, by_number: dict[str, dict[str, Any]]) -> boo return "".join(tail.split()) == "".join(str(node.get("name") or "").split()) +#: 목차 이름과 본문 제목이 **글자만** 다른 자리(「깍기」·「깎기」 · 「㎝」·「cm」)를 같게 봄 — 이름 닮음 잴 때만. +_NAME_GLYPHS = (("㎝", "cm"), ("․", "·"), ("ㆍ", "·"), ("~", "~"), ("∼", "~"), ("깎", "깍")) +#: 이름 닮음 아래턱 — 부록 사례(「4-1. 소나무재선충병방제」 ↔ 목차 4-1 수확베기)는 0.09 이하 · +#: 진짜 제목의 글자 차이(「비탈면 고르기」 ↔ 「비탈면 면고르기」 0.96 · 「면벽」 ↔ 「면벅」 0.5)는 0.34 이상(2026-09-17 전수). +NAME_LIKENESS_FLOOR = 0.3 + + +def _plain(name: str) -> str: + text = "".join(str(name or "").split()) + for glyph, same in _NAME_GLYPHS: + text = text.replace(glyph, same) + return text + + +def title_names_node(section: str, node: dict[str, Any]) -> bool: + """「번호. 이름」 제목의 이름이 그 번호 목차 줄 이름을 가리키는가 — 번호만 겹친 **딴 문서 표**를 거름. + + ⚠ 부록 사례 표 일곱(F0455·F0456·F0472~F0476)이 본문 절 번호와 겹쳐 그 절에 붙어 + 없는 공종 줄(4-1 수확베기 ← 소나무재선충병방제)이 섰음(2026-09-17 브레인 헛단위). 못 붙인 표로 목록에 남김. + """ + found = re.match(r"^\s*\d+(?:-\d+){0,3}\.\s+(.+)$", section) + if found is None: + return True # 마침표 없는 제목은 `_is_section_title` 이 이미 목차 이름과 같은지 봤음 + title, name = _plain(found.group(1)), _plain(node.get("name")) + if title.startswith(name) or name.startswith(title): + return True + return difflib.SequenceMatcher(None, title, name).ratio() >= NAME_LIKENESS_FLOOR + + def section_number(section: str) -> str | None: """`"9-3-1. 인력"` → `"9-3-1"`. 번호가 없으면 `None`.""" m = re.match(r"^\s*(\d+(?:-\d+){0,3})[.\s]", section + " ") @@ -208,6 +244,8 @@ def build() -> tuple[ number = section_number(section) chapter = number.split("-")[0] if number else None node = by_number.get(number) if number else None + if node is not None and not title_names_node(section, node): + node = None # 번호만 겹친 딴 문서 표(부록 사례) — 못 붙인 표 목록으로 entry = table_entry( table, section, number, chapter, source_lines, node and node["name"], report ) diff --git a/B08_Quantity/B08_Quantity_Build_WorkItemMaster_Forms.py b/B08_Quantity/B08_Quantity_Build_WorkItemMaster_Forms.py index 51053dc7..d16fd0ce 100644 --- a/B08_Quantity/B08_Quantity_Build_WorkItemMaster_Forms.py +++ b/B08_Quantity/B08_Quantity_Build_WorkItemMaster_Forms.py @@ -123,7 +123,7 @@ FORM_JUDGMENTS: dict[str, tuple[str, str, str]] = { # ── 제13장 구조물 ─────────────────────────────────────────────── "F0400": ("13-2-3", "reference", "큰돌 직경별 뒷길이 기준(㎝)"), "F0406": ( - "13-3", + "13-4-1", # 2026-09-17 절 바로잡음 — [주]④ 인용을 13-3 제목으로 읽었던 것(표는 13-4-1 메쌓기 아래) "reference", "〈돌쌓기의 개수 및 중량의 표준〉 — [주] 인력 돌쌓기·돌붙임 기준", ), diff --git a/B09_Estimation/B09_Estimation_KnownGaps.py b/B09_Estimation/B09_Estimation_KnownGaps.py index e091ff58..66ea3b5a 100644 --- a/B09_Estimation/B09_Estimation_KnownGaps.py +++ b/B09_Estimation/B09_Estimation_KnownGaps.py @@ -19,6 +19,14 @@ from __future__ import annotations #: 공종코드 → (짧은 딱지, 사유 한 줄). 접두사로 맞춘다(갈래가 붙어도 걸리게). KNOWN_GAPS: dict[str, tuple[str, str]] = { + # ⚠ 2026-09-17 — 찰붙임 장비 표(F0418)가 [주] 인용을 제목으로 읽혀 13-3 헛단위에 붙어 있다가 + # 제자리(13-5-2)를 찾으니 **메붙임(F0417)·찰붙임(F0418) 두 표가 같은 갈래 이름(35·55·75cm 이하)으로 + # 한 단가에 더해짐**(약 두 배). 지금 이 코드를 쓰는 곳은 0 — 갈래를 메/찰로 가르기 전 쓰지 말 것. + "FP-13-05-02": ( + "메·찰 합쳐짐", + "⚠ 이 단가는 **메붙임·찰붙임 두 표가 더해진 값**입니다 — 둘 중 하나만 써야 하는 갈래라 " + "지금 값은 쓰면 안 됩니다(품셈 13-5-2 「1. 메붙임」·「2. 찰붙임」 · 갈래 가르기 대기).", + ), # ⚠ 규준틀 둘은 **B08 인계가 이미 「재료량은 [주]④ 설계수량에 따른다라 미확보」**를 싣는다. # 그러니 그 말을 되풀이하지 않고 **B09 쪽에서만 아는 것**만 보탠다 — # ㉠ 지금 선 값이 **인력 품만**이라는 것 ㉡ 손율은 원문에 이미 있다는 것. diff --git a/resources/data_master_labels/labels_2026-01-01.json b/resources/data_master_labels/labels_2026-01-01.json index 2571ce98..be56eed8 100644 --- a/resources/data_master_labels/labels_2026-01-01.json +++ b/resources/data_master_labels/labels_2026-01-01.json @@ -2168,7 +2168,7 @@ "name_ko": "공종에 못 붙인 표", "summary": "목차 어디에도 못 붙인 품셈 표.", "shape": "list", - "rows": 15, + "rows": 22, "columns": [ { "key": "pum_table_id", diff --git a/resources/data_work_item_master/_manifest.json b/resources/data_work_item_master/_manifest.json index abc5c215..51ed4a60 100644 --- a/resources/data_work_item_master/_manifest.json +++ b/resources/data_work_item_master/_manifest.json @@ -1,7 +1,7 @@ { "schema_version": "1.0", "dataset_id": "data_work_item_master_manifest", - "generated_at": "2026-09-17T13:54:34+09:00", + "generated_at": "2026-09-17T17:19:56+09:00", "built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py", "source": { "dataset_id": "pum_forest", @@ -12,8 +12,8 @@ "files": [ { "file": "work_item_master_2026-01-01.json", - "sha256": "75e452487595c824995695b25f9f3582b1c5ce68fe786353de4f9aef65101804", - "size_bytes": 956887 + "sha256": "aa065ec629bde8af403cf9246e0ef65d1870da80c6eaea14f26c06a5cd5563d5", + "size_bytes": 870603 }, { "file": "form_undetermined_2026-01-01.json", diff --git a/resources/data_work_item_master/_manifest_const.json b/resources/data_work_item_master/_manifest_const.json index c2576dd3..99e9cf4b 100644 --- a/resources/data_work_item_master/_manifest_const.json +++ b/resources/data_work_item_master/_manifest_const.json @@ -1,7 +1,7 @@ { "schema_version": "1.0", "dataset_id": "data_work_item_master_manifest", - "generated_at": "2026-09-17T13:54:35+09:00", + "generated_at": "2026-09-17T17:19:56+09:00", "built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py", "source": { "dataset_id": "pum_const", @@ -12,7 +12,7 @@ "files": [ { "file": "const_work_item_master_2026-01-01.json", - "sha256": "b0ef383aeffa442b9840836c62791a8705ad524f0b9a0a2305ff19f9efb47c38", + "sha256": "4f7d61f283d07626501ff0ca0a0446aa99a118980360e4fdcac802899e174086", "size_bytes": 3752575 }, { diff --git a/resources/data_work_item_master/const_work_item_master_2026-01-01.json b/resources/data_work_item_master/const_work_item_master_2026-01-01.json index 570e1457..26420686 100644 --- a/resources/data_work_item_master/const_work_item_master_2026-01-01.json +++ b/resources/data_work_item_master/const_work_item_master_2026-01-01.json @@ -4,7 +4,7 @@ "effective_date": "2026-01-01", "pum_edition": "2026-01-01", "toc_edition": "2026-01-01", - "generated_at": "2026-09-17T13:54:35+09:00", + "generated_at": "2026-09-17T17:19:56+09:00", "dataset_version": { "dataset_id": "pum_const", "effective_date": "2026-01-01", diff --git a/resources/data_work_item_master/work_item_master_2026-01-01.json b/resources/data_work_item_master/work_item_master_2026-01-01.json index 5f59c510..5e8968a0 100644 --- a/resources/data_work_item_master/work_item_master_2026-01-01.json +++ b/resources/data_work_item_master/work_item_master_2026-01-01.json @@ -4,7 +4,7 @@ "effective_date": "2026-01-01", "pum_edition": "2026-01-01", "toc_edition": "산림청고시제2025-82호", - "generated_at": "2026-09-17T13:54:34+09:00", + "generated_at": "2026-09-17T17:19:56+09:00", "dataset_version": { "dataset_id": "pum_forest", "effective_date": "2026-01-01", @@ -22,16 +22,16 @@ "stats": { "toc_nodes": 477, "tables_total": 475, - "tables_attached": 460, - "tables_orphan": 15, + "tables_attached": 453, + "tables_orphan": 22, "form_undetermined": 14, "basis_found": 204, "basis_missing": 115, "basis_grouped": 48, "axis_roles": { "general_provision": 78, - "group": 82, - "work_item": 306, + "group": 85, + "work_item": 303, "empty": 11 }, "keys_newly_issued": 0, @@ -52,6 +52,14 @@ ], "toc_duplicate_rows": [], "orphan_tables": [ + { + "pum_table_id": "F0455", + "section": "2-1. 풀베기, (1) 둘레베기(조림목 본수 2,700본/ha, 조림1년차)" + }, + { + "pum_table_id": "F0456", + "section": "2-2. 풀베기, (2) 모두베기(조림목 본수 2,700본/ha, 조림2년차)" + }, { "pum_table_id": "F0457", "section": "2-3. 풀베기, (3) 줄베기(조림목 본수 2,700본/ha, 조림2년차)" @@ -111,6 +119,26 @@ { "pum_table_id": "F0471", "section": "2-17. 산물임내정리" + }, + { + "pum_table_id": "F0472", + "section": "3-1. 임업용 동력기계톱, 우드그래플, 소형트럭" + }, + { + "pum_table_id": "F0473", + "section": "3-2. 임업용 동력기계톱, 스마트집재기, 우드그래플, 초소형포워더" + }, + { + "pum_table_id": "F0474", + "section": "3-3. 하베스터, 타워야더, 우드그래플, 소형포워더" + }, + { + "pum_table_id": "F0475", + "section": "4-1. 소나무재선충병방제" + }, + { + "pum_table_id": "F0476", + "section": "4-2. 참나무시들음병방제" } ], "work_items": [ @@ -4169,359 +4197,7 @@ "number": "2-1", "name": "소요재료", "sort_order": 13568, - "tables": [ - { - "pum_table_id": "F0455", - "section": "2-1. 풀베기, (1) 둘레베기(조림목 본수 2,700본/ha, 조림1년차)", - "source_line": 8031, - "pum_form": "reference", - "form_basis": "'단가산출서' — 채워 넣으라고 둔 빈 서식", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [ - "+10%" - ], - "crew_table": false, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "~(U+007E)", - "∼(U+223C)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "ha당 풀베기(둘레베기) 단가산출서(예시)" - ], - "raw_row": [ - [ - "위치 및 면적", - "1-0-1-0 또는 00임반 00소반", - "비 고", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구분", - "작업량", - "단위품 (인원,수량,요율)", - "소요품", - "단가(원)", - "할인 ㆍ 증률", - "계", - "", - "", - "", - "", - "" - ], - [ - "", - "단위작업", - "", - "단위", - "", - "단위", - "", - "종류", - "", - "", - "", - "" - ], - [ - "단 위 작 업 별", - "1. 둘레베기", - "", - "", - "", - "", - "", - "", - "", - "", - "907,772", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "907,772", - "", - "" - ], - [ - "ㆍ 둘레베기", - "2,700", - "본/㏊", - "0.18", - "인/100본", - "4.86", - "169,804", - "보통100%", - "+10%", - "907,772", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "순 원 가", - "", - "", - "", - "", - "", - "", - "", - "", - "907,772", - "" - ], - [ - "직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "907,772", - "", - "" - ], - [ - "재 료 비", - "", - "", - "", - "", - "", - "", - "", - "", - "-", - "", - "" - ], - [ - "경비(기계경비)", - "", - "", - "", - "", - "", - "", - "", - "", - "-", - "", - "" - ], - [ - "<할인․할증률 적용>", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구 분", - "할인․할증요소", - "단위작업(%)", - "비고", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "둘레베기", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 집단화 정도(1-4-3)", - "개소당 평균면적이 1~3ha 미만", - "5%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 경사도(1-4-5)", - "중경사(15∼30°)", - "5%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "", - "10%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ] - ] - } - ], + "tables": [], "work_item_code": "FP-02-01", "level": 2, "parent_code": "FP-02", @@ -5716,373 +5392,7 @@ "number": "2-2", "name": "기계손료", "sort_order": 17152, - "tables": [ - { - "pum_table_id": "F0456", - "section": "2-2. 풀베기, (2) 모두베기(조림목 본수 2,700본/ha, 조림2년차)", - "source_line": 8061, - "pum_form": "reference", - "form_basis": "'단가산출서' — 채워 넣으라고 둔 빈 서식", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [ - "+10%" - ], - "crew_table": false, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "~(U+007E)", - "∼(U+223C)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "ha당 풀베기(모두베기) 단가산출서(예시)" - ], - "raw_row": [ - [ - "위치 및 면적", - "1-0-1-0 또는 00임반 00소반", - "비 고", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구분", - "작업량", - "단위품 (인원,수량,요율)", - "소요품", - "단가(원)", - "할인 ㆍ 증률", - "계", - "", - "", - "", - "", - "" - ], - [ - "", - "단위작업", - "", - "단위", - "", - "단위", - "", - "종류", - "", - "", - "", - "" - ], - [ - "단 위 작 업 별", - "1. 묘목찾기", - "", - "", - "", - "", - "", - "", - "", - "", - "504,317", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "504,317", - "", - "" - ], - [ - "ㆍ 묘목찾기", - "2,700", - "본/㏊", - "0.10", - "인/100본", - "2.70", - "169,804", - "보통100%", - "+10%", - "504,317", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "2. 모두베기", - "", - "", - "", - "", - "", - "", - "", - "", - "755,335", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "755,335", - "", - "" - ], - [ - "ㆍ 예취기 사용", - "1.0", - "ha", - "3.10", - "인/ha", - "3.10", - "221,506", - "특별100%", - "+10%", - "755,335", - "", - "" - ], - [ - "- 재료비(예취기)", - "", - "", - "", - "", - "", - "", - "", - "", - "26,205", - "", - "" - ], - [ - "ㆍ보통휘발유(주연료)", - "3.10", - "대/㏊", - "5.00", - "ℓ/대", - "15.50", - "1,537", - "무연(ℓ)", - "", - "23,823", - "", - "" - ], - [ - "ㆍ보통휘발유(잡품)", - "23,823", - "원", - "10", - "%", - "", - "", - "", - "", - "2,382", - "", - "" - ], - [ - "- 기계경비(예취기)", - "3.10", - "대/㏊", - "0.0084", - "손료계수", - "", - "610,000", - "예취기(대)", - "", - "15,884", - "", - "" - ], - [ - "합 계", - "순 원 가", - "", - "", - "", - "", - "", - "", - "", - "", - "1,301,741", - "" - ], - [ - "직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,259,652", - "", - "" - ], - [ - "재 료 비", - "", - "", - "", - "", - "", - "", - "", - "", - "26,205", - "", - "" - ], - [ - "경비(기계경비)", - "", - "", - "", - "", - "", - "", - "", - "", - "15,884", - "", - "" - ], - [ - "<할인․할증률 적용>", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구 분", - "할인․할증요소", - "단위작업(%)", - "비고", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "묘목찾기", - "모두베기", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 집단화 정도(1-4-3)", - "개소당 평균면적이 1~3ha 미만", - "5%", - "5%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 경사도(1-4-5)", - "중경사(15∼30°)", - "5%", - "5%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "", - "10%", - "10%", - "", - "", - "", - "", - "", - "", - "", - "" - ] - ] - } - ], + "tables": [], "work_item_code": "FP-02-02", "level": 2, "parent_code": "FP-02", @@ -6830,914 +6140,6 @@ "보통인부" ] ] - }, - { - "pum_table_id": "F0472", - "section": "3-1. 임업용 동력기계톱, 우드그래플, 소형트럭", - "source_line": 8753, - "pum_form": "reference", - "form_basis": "'단가산출서' — 채워 넣으라고 둔 빈 서식", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": true, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "~(U+FF5E)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "ha당 임목수확 단가산출서(예시)" - ], - "raw_row": [ - [ - "위치 및 면적", - "1-0-1-0 또는 00임반 00소반", - "비 고", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구분", - "작업량", - "단위품 (인원,수량,요율)", - "소요품", - "단가(원)", - "할인 ㆍ 증률", - "계", - "", - "", - "", - "", - "" - ], - [ - "", - "단위작업", - "", - "단위", - "", - "단위", - "", - "종류", - "", - "", - "", - "" - ], - [ - "단 위 작 업 별", - "1. 수확베기", - "", - "", - "", - "", - "", - "", - "", - "", - "3,690,865", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "3,376,217", - "", - "" - ], - [ - "ㆍ단목", - "260.84", - "㎥/ha", - "20.17", - "㎥/인", - "12.93", - "248,681", - "벌목부", - "5%", - "3,376,217", - "", - "" - ], - [ - "- 재료비(체인톱)", - "", - "", - "", - "", - "", - "", - "", - "", - "216,898", - "", - "" - ], - [ - "ㆍ보통휘발유(주연료)", - "12.93", - "대/ha", - "5.60", - "ℓ/대", - "72.41", - "1,537", - "무연(ℓ)", - "", - "111,294", - "", - "" - ], - [ - "ㆍ보통휘발유(잡품)", - "111,294", - "원", - "40", - "%", - "", - "", - "", - "", - "44,517", - "", - "" - ], - [ - "ㆍ체인오일(일반)", - "12.93", - "대/ha", - "2.10", - "ℓ/대", - "27.15", - "2,250", - "국내산(ℓ)", - "", - "61,087", - "", - "" - ], - [ - "- 기계경비(체인톱)", - "12.93", - "대/ha", - "0.0084", - "", - "", - "900,000", - "체인톱(대)", - "", - "97,750", - "", - "" - ], - [ - "2. 집재", - "", - "", - "", - "", - "", - "", - "", - "", - "2,577,116", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,715,058", - "", - "" - ], - [ - "ㆍ우드그래플", - "203.98", - "㎥/ha", - "", - "", - "6.26", - "273,971", - "건설기계운전사", - "0%", - "1,715,058", - "", - "" - ], - [ - "1.2m", - "", - "㎥/ha", - "18.16", - "㎥/조", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "1.8m", - "", - "㎥/ha", - "25.34", - "㎥/조", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "2.1m", - "101.99", - "㎥/ha", - "28.56", - "㎥/조", - "3.57", - "", - "", - "", - "", - "50%", - "" - ], - [ - "2.7m", - "", - "㎥/ha", - "34.40", - "㎥/조", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "3.6m", - "101.99", - "㎥/ha", - "37.96", - "㎥/조", - "2.69", - "", - "", - "", - "", - "50%", - "" - ], - [ - "- 재료비(우드그래플)", - "", - "", - "", - "", - "", - "", - "", - "", - "251,708", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "6.26", - "대/ha", - "20.80", - "ℓ/대", - "130.21", - "1,487", - "경유(ℓ)", - "", - "193,622", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "193,622", - "원", - "30", - "%", - "", - "", - "", - "", - "58,086", - "", - "" - ], - [ - "- 기계경비(우드그래플)", - "6.26", - "대/ha", - "0.0015", - "손료계수", - "", - "65,000,000", - "우드그래플(대)", - "", - "610,350", - "", - "" - ], - [ - "3. 운재", - "", - "", - "", - "", - "", - "", - "", - "", - "2,273,881", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,745,195", - "", - "" - ], - [ - "ㆍ소형트럭", - "203.98", - "㎥/ha", - "32.00", - "㎥/대", - "6.37", - "273,971", - "건설기계운전사", - "0%", - "1,745,195", - "500m이하", - "" - ], - [ - "- 재료비(소형트럭)", - "", - "", - "", - "", - "", - "", - "", - "", - "184,706", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "6.37", - "대/ha", - "15.00", - "ℓ/대", - "95.55", - "1,487", - "경유(ℓ)", - "", - "142,082", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "142,082", - "원", - "30", - "%", - "", - "", - "", - "", - "42,624", - "", - "" - ], - [ - "- 기계경비(소형트럭)", - "6.37", - "대/ha", - "0.0027", - "손료계수", - "", - "20,000,000", - "소형트럭(대)", - "", - "343,980", - "", - "" - ], - [ - "", - "4. 집적", - "", - "", - "", - "", - "", - "", - "", - "", - "3,430,332", - "" - ], - [ - "4-1. 집적작업", - "", - "", - "", - "", - "", - "", - "", - "", - "2,062,517", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,372,594", - "", - "" - ], - [ - "ㆍ우드그래플", - "203.98", - "㎥/ha", - "", - "", - "5.01", - "273,971", - "건설기계운전사", - "", - "1,372,594", - "원목평균 직경24cm", - "" - ], - [ - "1.8m", - "", - "㎥/ha", - "34.48", - "인/㎥", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "2.1m", - "101.99", - "㎥/ha", - "36.89", - "인/㎥", - "2.76", - "", - "", - "", - "", - "", - "" - ], - [ - "2.7m", - "", - "㎥/ha", - "39.94", - "인/㎥", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "3.6m", - "101.99", - "㎥/ha", - "45.41", - "인/㎥", - "2.25", - "", - "", - "", - "", - "", - "" - ], - [ - "- 재료비(우드그래플)", - "", - "", - "", - "", - "", - "", - "", - "", - "201,448", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "5.01", - "대/ha", - "20.80", - "ℓ/대", - "104.21", - "1,487", - "경유(ℓ)", - "", - "154,960", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "154,960", - "원", - "30", - "%", - "", - "", - "", - "", - "46,488", - "", - "" - ], - [ - "- 기계경비(우드그래플)", - "5.01", - "대/ha", - "0.0015", - "손료계수", - "", - "65,000,000", - "우드그래플(대)", - "", - "488,475", - "", - "" - ], - [ - "4-2. 토막내기", - "", - "", - "", - "", - "", - "", - "", - "", - "1,367,815", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,245,891", - "", - "" - ], - [ - "ㆍ체인톱", - "203.98", - "㎥/ha", - "집적품과 동일 적용", - "5.01", - "248,681", - "벌목부", - "", - "1,245,891", - "", - "", - "" - ], - [ - "- 재료비(체인톱)", - "", - "", - "", - "", - "", - "", - "", - "", - "84,049", - "", - "" - ], - [ - "ㆍ보통휘발유(주연료)", - "5.01", - "대/ha", - "5.60", - "ℓ/대", - "28.06", - "1,537", - "무연(ℓ)", - "", - "43,128", - "", - "" - ], - [ - "ㆍ보통휘발유(잡품)", - "43,128", - "원", - "40", - "%", - "", - "", - "", - "", - "17,251", - "", - "" - ], - [ - "ㆍ체인오일(일반)", - "5.01", - "대/ha", - "2.10", - "ℓ/대", - "10.52", - "2,250", - "국내산(ℓ)", - "", - "23,670", - "", - "" - ], - [ - "- 기계경비(체인톱)", - "5.01", - "대/ha", - "0.0084", - "", - "", - "900,000", - "체인톱(대)", - "", - "37,875", - "", - "" - ], - [ - "합 계", - "순 원 가", - "", - "", - "", - "", - "", - "", - "", - "", - "11,972,194", - "" - ], - [ - "직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "9,454,955", - "", - "" - ], - [ - "재 료 비", - "", - "", - "", - "", - "", - "", - "", - "", - "938,809", - "", - "" - ], - [ - "경비(기계경비)", - "", - "", - "", - "", - "", - "", - "", - "", - "1,578,430", - "", - "" - ], - [ - "<할인․할증률 적용>", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구 분", - "할인․할증요소", - "단위작업(%)", - "비고", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "수확베기", - "우드그래플집재", - "소형트럭운재", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 경사도(1-4-5)", - "완(15°미만)", - "0%", - "0%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 장애물의 정도(1-4-8)", - "무릎높이 이하의 초본․관목", - "0%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 주행 장애물 상태(1-4-13)", - "주행에 어려움이 없다", - "", - "0%", - "0%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 벌도목평균경급", - "20~30cm", - "5%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 잔존목 본수", - "70본 이하", - "", - "0%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "", - "5%", - "0%", - "0%", - "", - "", - "", - "", - "", - "", - "" - ] - ] } ], "work_item_code": "FP-03-01", @@ -7789,1026 +6191,6 @@ "초급기술자" ] ] - }, - { - "pum_table_id": "F0473", - "section": "3-2. 임업용 동력기계톱, 스마트집재기, 우드그래플, 초소형포워더", - "source_line": 8828, - "pum_form": "reference", - "form_basis": "'단가산출서' — 채워 넣으라고 둔 빈 서식", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": true, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "~(U+FF5E)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "ha당 임목수확 단가산출서(예시)" - ], - "raw_row": [ - [ - "위치 및 면적", - "1-0-1-0 또는 00임반 00소반", - "비 고", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구분", - "작업량", - "단위품 (인원,수량,요율)", - "소요품", - "단가(원)", - "할인 ㆍ 증률", - "계", - "", - "", - "", - "", - "" - ], - [ - "", - "단위작업", - "", - "단위", - "", - "단위", - "", - "종류", - "", - "", - "", - "" - ], - [ - "단 위 작 업 별", - "1. 수확베기", - "", - "", - "", - "", - "", - "", - "", - "", - "3,174,550", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "2,925,607", - "", - "" - ], - [ - "ㆍ전간", - "260.84", - "㎥/ha", - "25.50", - "㎥/인", - "10.23", - "248,681", - "벌목부", - "15%", - "2,925,607", - "", - "" - ], - [ - "- 재료비(체인톱)", - "", - "", - "", - "", - "", - "", - "", - "", - "171,605", - "", - "" - ], - [ - "ㆍ보통휘발유(주연료)", - "10.23", - "대/ha", - "5.60", - "ℓ/대", - "57.29", - "1,537", - "무연(ℓ)", - "", - "88,054", - "", - "" - ], - [ - "ㆍ보통휘발유(잡품)", - "88,054", - "원", - "40", - "%", - "", - "", - "", - "", - "35,221", - "", - "" - ], - [ - "ㆍ체인오일(일반)", - "10.23", - "대/ha", - "2.10", - "ℓ/대", - "21.48", - "2,250", - "국내산(ℓ)", - "", - "48,330", - "", - "" - ], - [ - "- 기계경비(체인톱)", - "10.23", - "대/ha", - "0.0084", - "", - "", - "900,000", - "체인톱(대)", - "", - "77,338", - "", - "" - ], - [ - "2. 집재", - "", - "", - "", - "", - "", - "", - "", - "", - "7,826,747", - "", - "" - ], - [ - "2-1. 스마트집재기", - "", - "", - "", - "", - "", - "", - "", - "", - "5,307,262", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "4,682,247", - "", - "" - ], - [ - "ㆍ스마트집재기", - "203.98", - "㎥/ha", - "", - "", - "6.12", - "665,281", - "건설+특별+보통", - "15%", - "4,682,247", - "3인1조", - "" - ], - [ - "50m이하", - "67.24", - "㎥/ha", - "45.83", - "㎥/조", - "1.47", - "(273,971)", - "(건설기계운전사 1명)", - "", - "", - "33%", - "" - ], - [ - "51~100m", - "91.90", - "㎥/ha", - "32.26", - "㎥/조", - "2.85", - "(221,506)", - "(특별인부 1명)", - "", - "", - "45%", - "" - ], - [ - "101~15m", - "44.84", - "㎥/ha", - "24.89", - "㎥/조", - "1.80", - "(169,804)", - "(보통인부 1명)", - "", - "", - "22%", - "" - ], - [ - "- 재료비(집재기)", - "", - "", - "", - "", - "", - "", - "", - "", - "331,255", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "6.12", - "대/ha", - "26.00", - "ℓ/대", - "159.12", - "1,487", - "경유(ℓ)", - "", - "236,611", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "236,611", - "원", - "40", - "%", - "", - "", - "", - "", - "94,644", - "", - "" - ], - [ - "- 기계경비(집재기)", - "6.12", - "대/ha", - "0.0008", - "손료계수", - "", - "60,000,000", - "우드그래플(대)", - "", - "293,760", - "", - "" - ], - [ - "2-2. 임업용굴착기", - "", - "", - "", - "", - "", - "", - "", - "", - "2,519,485", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,676,702", - "", - "" - ], - [ - "ㆍ우드그래플", - "203.98", - "㎥/ha", - "집재품과 동일 적용", - "6.12", - "273,971", - "건설기계운전사", - "0%", - "1,676,702", - "", - "", - "" - ], - [ - "- 재료비(우드그래플)", - "", - "", - "", - "", - "", - "", - "", - "", - "246,083", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "6.12", - "대/ha", - "20.80", - "ℓ/대", - "127.30", - "1,487", - "경유(ℓ)", - "", - "189,295", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "189,295", - "원", - "30", - "%", - "", - "", - "", - "", - "56,788", - "", - "" - ], - [ - "- 기계경비(우드그래플)", - "6.12", - "대/ha", - "0.0015", - "손료계수", - "", - "65,000,000", - "우드그래플(대)", - "", - "596,700", - "", - "" - ], - [ - "3. 운재", - "", - "", - "", - "", - "", - "", - "", - "", - "2,871,133", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "2,005,467", - "", - "" - ], - [ - "ㆍ초소형포워더", - "203.98", - "㎥/ha", - "27.86", - "㎥/대", - "7.32", - "273,971", - "건설기계운전사", - "0%", - "2,005,467", - "500m이하", - "" - ], - [ - "- 재료비(초소형포워더)", - "", - "", - "", - "", - "", - "", - "", - "", - "367,906", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "7.32", - "대/ha", - "26.00", - "ℓ/대", - "190.32", - "1,487", - "경유(ℓ)", - "", - "283,005", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "283,005", - "원", - "30", - "%", - "", - "", - "", - "", - "84,901", - "", - "" - ], - [ - "- 기계경비(초소형포워더)", - "7.32", - "대/ha", - "0.0008", - "손료계수", - "", - "85,000,000", - "초소형포워더(대)", - "", - "497,760", - "", - "" - ], - [ - "4. 집적", - "", - "", - "", - "", - "", - "", - "", - "", - "3,430,332", - "", - "" - ], - [ - "4-1. 집적작업", - "", - "", - "", - "", - "", - "", - "", - "", - "2,062,517", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,372,594", - "", - "" - ], - [ - "ㆍ우드그래플", - "203.98", - "㎥/ha", - "", - "", - "5.01", - "273,971", - "건설기계운전사", - "", - "1,372,594", - "원목평균 직경24cm", - "" - ], - [ - "1.8m", - "", - "㎥/ha", - "34.48", - "인/㎥", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "2.1m", - "101.99", - "㎥/ha", - "36.89", - "인/㎥", - "2.76", - "", - "", - "", - "", - "", - "" - ], - [ - "2.7m", - "", - "㎥/ha", - "39.94", - "인/㎥", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "3.6m", - "101.99", - "㎥/ha", - "45.41", - "인/㎥", - "2.25", - "", - "", - "", - "", - "", - "" - ], - [ - "- 재료비(우드그래플)", - "", - "", - "", - "", - "", - "", - "", - "", - "201,448", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "5.01", - "대/ha", - "20.80", - "ℓ/대", - "104.21", - "1,487", - "경유(ℓ)", - "", - "154,960", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "154,960", - "원", - "30", - "%", - "", - "", - "", - "", - "46,488", - "", - "" - ], - [ - "- 기계경비(우드그래플)", - "5.01", - "대/ha", - "0.0015", - "손료계수", - "", - "65,000,000", - "우드그래플(대)", - "", - "488,475", - "", - "" - ], - [ - "4-2. 토막내기", - "", - "", - "", - "", - "", - "", - "", - "", - "1,367,815", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,245,891", - "", - "" - ], - [ - "ㆍ체인톱", - "203.98", - "㎥/ha", - "집적품과 동일품", - "5.01", - "248,681", - "벌목부", - "", - "1,245,891", - "", - "", - "" - ], - [ - "- 재료비(체인톱)", - "", - "", - "", - "", - "", - "", - "", - "", - "84,049", - "", - "" - ], - [ - "ㆍ보통휘발유(주연료)", - "5.01", - "대/ha", - "5.60", - "ℓ/대", - "28.06", - "1,537", - "무연(ℓ)", - "", - "43,128", - "", - "" - ], - [ - "ㆍ보통휘발유(잡품)", - "43,128", - "원", - "40", - "%", - "", - "", - "", - "", - "17,251", - "", - "" - ], - [ - "ㆍ체인오일(일반)", - "5.01", - "대/ha", - "2.10", - "ℓ/대", - "10.52", - "2,250", - "국내산(ℓ)", - "", - "23,670", - "", - "" - ], - [ - "- 기계경비(체인톱)", - "5.01", - "대/ha", - "0.0084", - "", - "", - "900,000", - "체인톱(대)", - "", - "37,875", - "", - "" - ], - [ - "합 계", - "순 원 가", - "", - "", - "", - "", - "", - "", - "", - "", - "17,302,762", - "" - ], - [ - "직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "13,908,508", - "", - "" - ], - [ - "재 료 비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,402,346", - "", - "" - ], - [ - "경비(기계경비)", - "", - "", - "", - "", - "", - "", - "", - "", - "1,991,908", - "", - "" - ], - [ - "<할인․할증률 적용>", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구 분", - "할인․할증요소", - "단위작업(%)", - "비고", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "수확베기", - "스마트집재기", - "초소형 포워더 운재", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 경사도(1-4-5)", - "중(15~30°미만)", - "5%", - "5%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 장애물의 정도(1-4-8)", - "가슴높이 미만의 초본․관목", - "5%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 주행 장애물 상태(1-4-13)", - "주행에 어려움이 없다", - "", - "", - "0%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 집재방향(1-4-14)", - "상향집재", - "", - "0%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 횡단집재거리(1-4-15)", - "11~20m", - "", - "10%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 벌도목평균경급", - "20~30cm", - "5%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 잔존목 본수", - "70본 이하", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "", - "15%", - "15%", - "0%", - "", - "", - "", - "", - "", - "", - "" - ] - ] } ], "work_item_code": "FP-03-02", @@ -8865,914 +6247,6 @@ "" ] ] - }, - { - "pum_table_id": "F0474", - "section": "3-3. 하베스터, 타워야더, 우드그래플, 소형포워더", - "source_line": 8912, - "pum_form": "reference", - "form_basis": "'단가산출서' — 채워 넣으라고 둔 빈 서식", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": true, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "~(U+FF5E)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "ha당 임목수확 단가산출서(예시)" - ], - "raw_row": [ - [ - "위치 및 면적", - "1-0-1-0 또는 00임반 00소반", - "비 고", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구분", - "작업량", - "단위품 (인원,수량,요율)", - "소요품", - "단가(원)", - "할인 ㆍ 증률", - "계", - "", - "", - "", - "", - "" - ], - [ - "", - "단위작업", - "", - "단위", - "", - "단위", - "", - "종류", - "", - "", - "", - "" - ], - [ - "단 위 작 업 별", - "1. 수확베기", - "", - "", - "", - "", - "", - "", - "", - "", - "3,021,941", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,208,212", - "", - "" - ], - [ - "ㆍ하베스터", - "260.84", - "㎥/ha", - "59.20", - "㎥/인", - "4.41", - "273,971", - "건설기계운전사", - "0%", - "1,208,212", - "", - "" - ], - [ - "- 재료비(하베스터)", - "", - "", - "", - "", - "", - "", - "", - "", - "749,155", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "4.41", - "대/ha", - "81.60", - "ℓ/대", - "359.86", - "1,487", - "경유(ℓ)", - "", - "535,111", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "535,111", - "원", - "40", - "%", - "", - "", - "", - "", - "214,044", - "", - "" - ], - [ - "- 기계경비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,064,574", - "", - "" - ], - [ - "ㆍ하베스터헤드", - "4.41", - "대/ha", - "0.0009", - "", - "", - "85,000,000", - "하베스터(대)", - "", - "337,365", - "", - "" - ], - [ - "ㆍ0.6㎥굴착기", - "4.41", - "대/ha", - "0.0017", - "", - "", - "97,000,000", - "무한궤도형(대)", - "", - "727,209", - "", - "" - ], - [ - "2. 집재", - "", - "", - "", - "", - "", - "", - "", - "", - "8,988,007", - "", - "" - ], - [ - "2-1. 타워야더", - "", - "", - "", - "", - "", - "", - "", - "", - "6,736,114", - "RME300T", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "5,578,333", - "", - "" - ], - [ - "ㆍ타워야더", - "203.98", - "㎥/ha", - "", - "", - "5.47", - "886,787", - "건설+특별+보통", - "15%", - "5,578,333", - "4인1조", - "" - ], - [ - "100m이하", - "159.14", - "㎥/ha", - "38.11", - "㎥/조", - "4.18", - "(273,971)", - "(건설기계운전사 1명)", - "", - "", - "78%", - "" - ], - [ - "150m이하", - "44.84", - "㎥/ha", - "34.79", - "㎥/조", - "1.29", - "(208,527)", - "(특별인부 2명)", - "", - "", - "22%", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "(161,858)", - "(보통인부 1명)", - "", - "", - "", - "" - ], - [ - "- 재료비(집재기)", - "", - "", - "", - "", - "", - "", - "", - "", - "370,101", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "5.47", - "대/ha", - "32.50", - "ℓ/대", - "177.78", - "1,487", - "경유(ℓ)", - "", - "264,358", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "264,358", - "원", - "40", - "%", - "", - "", - "", - "", - "105,743", - "", - "" - ], - [ - "- 기계경비(집재기)", - "5.47", - "대/ha", - "0.0008", - "손료계수", - "", - "180,000,000", - "REM 300T", - "", - "787,680", - "", - "" - ], - [ - "2-2. 임업용굴착기", - "", - "", - "", - "", - "", - "", - "", - "", - "2,251,893", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,498,621", - "", - "" - ], - [ - "ㆍ우드그래플", - "203.98", - "㎥/ha", - "집재품과 동일 적용", - "5.47", - "273,971", - "건설기계운전사", - "0%", - "1,498,621", - "", - "", - "" - ], - [ - "- 재료비(우드그래플)", - "", - "", - "", - "", - "", - "", - "", - "", - "219,947", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "5.47", - "대/ha", - "20.80", - "ℓ/대", - "113.78", - "1,487", - "경유(ℓ)", - "", - "169,190", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "169,190", - "원", - "30", - "%", - "", - "", - "", - "", - "50,757", - "", - "" - ], - [ - "- 기계경비(우드그래플)", - "5.47", - "대/ha", - "0.0015", - "손료계수", - "", - "65,000,000", - "우드그래플(대)", - "", - "533,325", - "", - "" - ], - [ - "3. 운재", - "", - "", - "", - "", - "", - "", - "", - "", - "996,287", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "591,777", - "", - "" - ], - [ - "ㆍ소형포워더", - "203.98", - "㎥/ha", - "94.48", - "㎥/대", - "2.16", - "273,971", - "건설기계운전사", - "0%", - "591,777", - "500m이하", - "" - ], - [ - "- 재료비(소형포워더)", - "", - "", - "", - "", - "", - "", - "", - "", - "145,310", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "2.16", - "대/ha", - "34.80", - "ℓ/대", - "75.17", - "1,487", - "경유(ℓ)", - "", - "111,777", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "111,777", - "원", - "30", - "%", - "", - "", - "", - "", - "33,533", - "", - "" - ], - [ - "- 기계경비(소형포워더)", - "2.16", - "대/ha", - "0.0008", - "손료계수", - "", - "150,000,000", - "소형포워더(대)", - "", - "259,200", - "", - "" - ], - [ - "4. 집적", - "", - "", - "", - "", - "", - "", - "", - "", - "2,062,517", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,372,594", - "", - "" - ], - [ - "ㆍ우드그래플", - "203.98", - "㎥/ha", - "", - "", - "5.01", - "273,971", - "건설기계운전사", - "", - "1,372,594", - "직경24cm", - "" - ], - [ - "1.8m", - "", - "㎥/ha", - "34.48", - "인/㎥", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "2.1m", - "101.99", - "㎥/ha", - "36.89", - "인/㎥", - "2.76", - "", - "", - "", - "", - "", - "" - ], - [ - "2.7m", - "", - "㎥/ha", - "39.94", - "인/㎥", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "3.6m", - "101.99", - "㎥/ha", - "45.41", - "인/㎥", - "2.25", - "", - "", - "", - "", - "", - "" - ], - [ - "- 재료비(우드그래플)", - "", - "", - "", - "", - "", - "", - "", - "", - "201,448", - "", - "" - ], - [ - "ㆍ경유(주연료)", - "5.01", - "대/ha", - "20.80", - "ℓ/대", - "104.21", - "1,487", - "경유(ℓ)", - "", - "154,960", - "", - "" - ], - [ - "ㆍ경유(잡품)", - "154,960", - "원", - "30", - "%", - "", - "", - "", - "", - "46,488", - "", - "" - ], - [ - "- 기계경비(우드그래플)", - "5.01", - "대/ha", - "0.0015", - "손료계수", - "", - "65,000,000", - "우드그래플(대)", - "", - "488,475", - "", - "" - ], - [ - "합 계", - "순 원 가", - "", - "", - "", - "", - "", - "", - "", - "", - "15,068,752", - "" - ], - [ - "직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "10,294,537", - "", - "" - ], - [ - "재 료 비", - "", - "", - "", - "", - "", - "", - "", - "", - "1,685,961", - "", - "" - ], - [ - "경비(기계경비)", - "", - "", - "", - "", - "", - "", - "", - "", - "3,133,254", - "", - "" - ], - [ - "<할인․할증률 적용>", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구 분", - "할인․할증요소", - "단위작업(%)", - "비고", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "하베스터", - "타워야더", - "소형 포워더 운재", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 경사도(1-4-5)", - "중(15~30°미만)", - "", - "5%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 장애물의 정도(1-4-8)", - "가슴높이 미만의 초본․관목", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 주행 장애물 상태(1-4-13)", - "주행에 어려움이 없다", - "", - "", - "0%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 집재방향(1-4-14)", - "상향집재", - "", - "0%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 횡단집재거리(1-4-15)", - "11~20m", - "", - "10%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 벌도목평균경급", - "20~30cm", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 잔존목 본수", - "70본 이하", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "", - "0%", - "15%", - "0%", - "", - "", - "", - "", - "", - "", - "" - ] - ] } ], "work_item_code": "FP-03-03", @@ -10255,1460 +6729,7 @@ "number": "4-1", "name": "수확베기", "sort_order": 23552, - "tables": [ - { - "pum_table_id": "F0475", - "section": "4-1. 소나무재선충병방제", - "source_line": 8989, - "pum_form": "reference", - "form_basis": "'단가산출서' — 채워 넣으라고 둔 빈 서식", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": true, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "소나무재선충병방제 단가산출서(예시)" - ], - "raw_row": [ - [ - "위치 및 임․소반", - "1-0-1-0 또는 00임반 00소반", - "비고", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구분", - "작업량", - "단위품 (인원, 수량, 요율)", - "소요품", - "단가", - "할인․ 증률", - "계", - "", - "", - "", - "", - "" - ], - [ - "", - "단위작업", - "", - "단위", - "", - "단위", - "", - "종류", - "", - "", - "", - "" - ], - [ - "단 위 작 업 별", - "1. 벌목조재", - "", - "", - "", - "", - "", - "", - "53,093,885", - "", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "49,562,389", - "", - "" - ], - [ - "ㆍ경급별(cm)", - "608.55", - "㎥", - "", - "", - "290.24", - "209,242", - "벌목50% 보통50%", - "-20%", - "48,584,318", - "", - "" - ], - [ - "6", - "-", - "㎥", - "1.13", - "㎥/인", - "", - "(248,681)", - "(벌목부)", - "", - "", - "", - "" - ], - [ - "8", - "0.02", - "㎥", - "1.18", - "㎥/인", - "0.02", - "(169,804)", - "(보통인부)", - "", - "", - "", - "" - ], - [ - "10", - "0.12", - "㎥", - "1.24", - "㎥/인", - "0.10", - "", - "", - "", - "", - "", - "" - ], - [ - "12", - "1.05", - "㎥", - "1.26", - "㎥/인", - "0.83", - "", - "", - "", - "", - "", - "" - ], - [ - "14", - "3.59", - "㎥", - "1.29", - "㎥/인", - "2.78", - "", - "", - "", - "", - "", - "" - ], - [ - "16", - "7.40", - "㎥", - "1.32", - "㎥/인", - "5.61", - "", - "", - "", - "", - "", - "" - ], - [ - "18", - "14.21", - "㎥", - "1.34", - "㎥/인", - "10.60", - "", - "", - "", - "", - "", - "" - ], - [ - "20", - "21.09", - "㎥", - "1.51", - "㎥/인", - "13.97", - "", - "", - "", - "", - "", - "" - ], - [ - "22", - "22.57", - "㎥", - "1.60", - "㎥/인", - "14.11", - "", - "", - "", - "", - "", - "" - ], - [ - "24", - "33.48", - "㎥", - "1.74", - "㎥/인", - "19.24", - "", - "", - "", - "", - "", - "" - ], - [ - "26", - "27.60", - "㎥", - "1.84", - "㎥/인", - "15.00", - "", - "", - "", - "", - "", - "" - ], - [ - "28", - "42.54", - "㎥", - "1.94", - "㎥/인", - "21.93", - "", - "", - "", - "", - "", - "" - ], - [ - "30", - "54.57", - "㎥", - "2.05", - "㎥/인", - "26.62", - "", - "", - "", - "", - "", - "" - ], - [ - "32", - "54.71", - "㎥", - "2.13", - "㎥/인", - "25.68", - "", - "", - "", - "", - "", - "" - ], - [ - "34", - "44.07", - "㎥", - "2.21", - "㎥/인", - "19.94", - "", - "", - "", - "", - "", - "" - ], - [ - "36", - "73.76", - "㎥", - "2.29", - "㎥/인", - "32.21", - "", - "", - "", - "", - "", - "" - ], - [ - "38", - "53.72", - "㎥", - "2.35", - "㎥/인", - "22.86", - "", - "", - "", - "", - "", - "" - ], - [ - "40", - "35.14", - "㎥", - "2.48", - "㎥/인", - "14.17", - "", - "", - "", - "", - "", - "" - ], - [ - "42", - "36.84", - "㎥", - "2.55", - "㎥/인", - "14.45", - "", - "", - "", - "", - "", - "" - ], - [ - "44", - "18.91", - "㎥", - "2.62", - "㎥/인", - "7.22", - "", - "", - "", - "", - "", - "" - ], - [ - "46", - "13.21", - "㎥", - "2.68", - "㎥/인", - "4.93", - "", - "", - "", - "", - "", - "" - ], - [ - "48", - "17.52", - "㎥", - "2.74", - "㎥/인", - "6.39", - "", - "", - "", - "", - "", - "" - ], - [ - "50이상", - "32.43", - "㎥", - "2.80", - "㎥/인", - "11.58", - "", - "", - "", - "", - "", - "" - ], - [ - "ㆍ방제실행 등록", - "1,152", - "본", - "0.005", - "인/본", - "5.76", - "169,804", - "보통인부", - "", - "978,071", - "", - "" - ], - [ - "- 재료비(체인톱)", - "", - "", - "", - "", - "", - "", - "", - "", - "2,434,398", - "", - "" - ], - [ - "ㆍ보통휘발유(주연료)", - "145.12", - "대", - "5.60", - "ℓ/대", - "812.67", - "1,537", - "무연(ℓ)", - "", - "1,249,073", - "", - "" - ], - [ - "ㆍ보통휘발유(잡품)", - "1,249,073", - "원", - "40", - "%", - "", - "", - "", - "", - "499,629", - "", - "" - ], - [ - "ㆍ체인오일(일반오일)", - "145.12", - "대", - "2.10", - "ℓ/대", - "304.75", - "2,250", - "국내산(ℓ)", - "", - "685,687", - "", - "" - ], - [ - "- 기계경비(체인톱)", - "145.12", - "대", - "0.0084", - "손료계수", - "", - "900,000", - "체인톱(대)", - "", - "1,097,107", - "", - "" - ], - [ - "2. 소운반", - "", - "", - "", - "", - "", - "", - "", - "", - "12,080,796", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "12,080,796", - "", - "" - ], - [ - "ㆍ경급별(cm)", - "478.13", - "㎥", - "", - "", - "72.17", - "209,242", - "벌목50% 보통50%", - "-20%", - "12,080,796", - "", - "" - ], - [ - "6", - "-", - "㎥", - "5.41", - "㎥/인", - "-", - "(248,681)", - "(벌목부)", - "", - "", - "", - "" - ], - [ - "8", - "-", - "㎥", - "5.50", - "㎥/인", - "-", - "(169,804)", - "(보통인부)", - "", - "", - "", - "" - ], - [ - "10", - "0.12", - "㎥", - "5.59", - "㎥/인", - "0.02", - "", - "", - "", - "", - "", - "" - ], - [ - "12", - "1.06", - "㎥", - "5.68", - "㎥/인", - "0.19", - "", - "", - "", - "", - "", - "" - ], - [ - "14", - "3.13", - "㎥", - "5.77", - "㎥/인", - "0.54", - "", - "", - "", - "", - "", - "" - ], - [ - "16", - "6.49", - "㎥", - "5.86", - "㎥/인", - "1.11", - "", - "", - "", - "", - "", - "" - ], - [ - "18", - "10.65", - "㎥", - "5.95", - "㎥/인", - "1.79", - "", - "", - "", - "", - "", - "" - ], - [ - "20", - "16.36", - "㎥", - "6.04", - "㎥/인", - "2.71", - "", - "", - "", - "", - "", - "" - ], - [ - "22", - "17.15", - "㎥", - "6.13", - "㎥/인", - "2.80", - "", - "", - "", - "", - "", - "" - ], - [ - "24", - "27.57", - "㎥", - "6.22", - "㎥/인", - "4.43", - "", - "", - "", - "", - "", - "" - ], - [ - "26", - "21.08", - "㎥", - "6.31", - "㎥/인", - "3.34", - "", - "", - "", - "", - "", - "" - ], - [ - "28", - "33.08", - "㎥", - "6.40", - "㎥/인", - "5.17", - "", - "", - "", - "", - "", - "" - ], - [ - "30", - "44.87", - "㎥", - "6.49", - "㎥/인", - "6.91", - "", - "", - "", - "", - "", - "" - ], - [ - "32", - "41.04", - "㎥", - "6.57", - "㎥/인", - "6.25", - "", - "", - "", - "", - "", - "" - ], - [ - "34", - "32.31", - "㎥", - "6.66", - "㎥/인", - "4.85", - "", - "", - "", - "", - "", - "" - ], - [ - "36", - "59.83", - "㎥", - "6.75", - "㎥/인", - "8.86", - "", - "", - "", - "", - "", - "" - ], - [ - "38", - "43.15", - "㎥", - "6.84", - "㎥/인", - "6.31", - "", - "", - "", - "", - "", - "" - ], - [ - "40", - "25.56", - "㎥", - "6.93", - "㎥/인", - "3.69", - "", - "", - "", - "", - "", - "" - ], - [ - "42", - "33.11", - "㎥", - "7.02", - "㎥/인", - "4.72", - "", - "", - "", - "", - "", - "" - ], - [ - "44", - "14.84", - "㎥", - "7.11", - "㎥/인", - "2.09", - "", - "", - "", - "", - "", - "" - ], - [ - "46", - "10.25", - "㎥", - "7.20", - "㎥/인", - "1.42", - "", - "", - "", - "", - "", - "" - ], - [ - "48", - "17.59", - "㎥", - "7.29", - "㎥/인", - "2.41", - "", - "", - "", - "", - "", - "" - ], - [ - "50이상", - "18.89", - "㎥", - "7.38", - "㎥/인", - "2.56", - "", - "", - "", - "", - "", - "" - ], - [ - "3. 무더기훈증", - "", - "", - "", - "", - "", - "", - "", - "", - "6,867,353", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "6,243,353", - "", - "" - ], - [ - "ㆍ경급별(cm)", - "865.40", - "RM", - "", - "RM/인", - "45.96", - "169,804", - "보통100%", - "-20%", - "6,243,353", - "", - "" - ], - [ - "6", - "-", - "RM", - "14.40", - "RM/인", - "-", - "", - "", - "", - "", - "", - "" - ], - [ - "8", - "-", - "RM", - "14.73", - "RM/인", - "-", - "", - "", - "", - "", - "", - "" - ], - [ - "10", - "0.22", - "RM", - "15.05", - "RM/인", - "0.01", - "", - "", - "", - "", - "", - "" - ], - [ - "12", - "1.92", - "RM", - "15.38", - "RM/인", - "0.12", - "", - "", - "", - "", - "", - "" - ], - [ - "14", - "5.67", - "RM", - "15.71", - "RM/인", - "0.36", - "", - "", - "", - "", - "", - "" - ], - [ - "16", - "11.75", - "RM", - "16.04", - "RM/인", - "0.73", - "", - "", - "", - "", - "", - "" - ], - [ - "18", - "19.28", - "RM", - "16.37", - "RM/인", - "1.18", - "", - "", - "", - "", - "", - "" - ], - [ - "20", - "29.61", - "RM", - "16.70", - "RM/인", - "1.77", - "", - "", - "", - "", - "", - "" - ], - [ - "22", - "31.04", - "RM", - "17.03", - "RM/인", - "1.82", - "", - "", - "", - "", - "", - "" - ], - [ - "24", - "49.90", - "RM", - "17.35", - "RM/인", - "2.88", - "", - "", - "", - "", - "", - "" - ], - [ - "26", - "38.15", - "RM", - "17.68", - "RM/인", - "2.16", - "", - "", - "", - "", - "", - "" - ], - [ - "28", - "59.87", - "RM", - "18.01", - "RM/인", - "3.32", - "", - "", - "", - "", - "", - "" - ], - [ - "30", - "81.21", - "RM", - "18.34", - "RM/인", - "4.43", - "", - "", - "", - "", - "", - "" - ], - [ - "32", - "74.28", - "RM", - "18.67", - "RM/인", - "3.98", - "", - "", - "", - "", - "", - "" - ], - [ - "34", - "58.48", - "RM", - "19.00", - "RM/인", - "3.08", - "", - "", - "", - "", - "", - "" - ], - [ - "36", - "108.29", - "RM", - "19.32", - "RM/인", - "5.61", - "", - "", - "", - "", - "", - "" - ], - [ - "38", - "78.10", - "RM", - "19.65", - "RM/인", - "3.97", - "", - "", - "", - "", - "", - "" - ], - [ - "40", - "46.26", - "RM", - "19.98", - "RM/인", - "2.32", - "", - "", - "", - "", - "", - "" - ], - [ - "42", - "59.93", - "RM", - "20.31", - "RM/인", - "2.95", - "", - "", - "", - "", - "", - "" - ], - [ - "44", - "26.86", - "RM", - "20.64", - "RM/인", - "1.30", - "", - "", - "", - "", - "", - "" - ], - [ - "46", - "18.55", - "RM", - "20.97", - "RM/인", - "0.88", - "", - "", - "", - "", - "", - "" - ], - [ - "48", - "31.84", - "RM", - "21.29", - "RM/인", - "1.50", - "", - "", - "", - "", - "", - "" - ], - [ - "50이상", - "34.19", - "RM", - "21.62", - "RM/인", - "1.58", - "", - "", - "", - "", - "", - "" - ], - [ - "- 재료비", - "", - "", - "", - "", - "", - "", - "", - "", - "624,000", - "", - "" - ], - [ - "ㆍ훈증 라벨(KW-H)", - "", - "", - "", - "", - "780", - "800", - "장당단가", - "", - "624,000", - "", - "" - ], - [ - "4. 잔가지줍기", - "", - "", - "", - "", - "", - "", - "", - "", - "3,129,487", - "", - "" - ], - [ - "- 직접노무비", - "1,152", - "본", - "0.016", - "본/인", - "18.43", - "169,804", - "보통100%", - "0%", - "3,129,487", - "", - "" - ], - [ - "합 계", - "순원가", - "", - "", - "", - "", - "", - "", - "", - "", - "75,171,521", - "" - ], - [ - "o 노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "71,016,025", - "", - "" - ], - [ - "o 재료비", - "", - "", - "", - "", - "", - "", - "", - "", - "3,058,389", - "", - "" - ], - [ - "o 경비(기계경비)", - "", - "", - "", - "", - "", - "", - "", - "", - "1,097,107", - "", - "" - ], - [ - "<할인․할증률 적용>", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구 분", - "할인․할증요소", - "단위작업(%)", - "비고", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "벌목조재", - "소운반", - "무더기훈증", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 장애물의 정도(1-4-8)", - "무릎높이 이하의 초본․관목", - "0%", - "0%", - "0%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 방제대상목 분포(1-4-17)", - "45본/ha당", - "-20%", - "-20%", - "-20%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 방제수종(1-4-22)", - "소나무, 해송", - "0%", - "0%", - "0%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "", - "-20%", - "-20%", - "-20%", - "", - "", - "", - "", - "", - "", - "" - ] - ] - } - ], + "tables": [], "work_item_code": "FP-04-01", "level": 2, "parent_code": "FP-04", @@ -11719,7 +6740,7 @@ "toc_number": "4-1", "toc_edition": "산림청고시제2025-82호", "path_name": "나무베기 › 수확베기", - "axis_role": "work_item" + "axis_role": "group" }, { "number": "4-1-1", @@ -11864,804 +6885,7 @@ "number": "4-2", "name": "단목베기", "sort_order": 24320, - "tables": [ - { - "pum_table_id": "F0476", - "section": "4-2. 참나무시들음병방제", - "source_line": 9106, - "pum_form": "reference", - "form_basis": "'단가산출서' — 채워 넣으라고 둔 빈 서식", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": true, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "~(U+FF5E)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "ha당 참나무시들음병방제 단가산출서(예시)" - ], - "raw_row": [ - [ - "위치 및 임․소반", - "1-0-1-0 또는 00임반 00소반", - "비고", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구분", - "작업량", - "단위품 (인원, 수량, 요율)", - "소요품", - "단가", - "할인․ 증률", - "계", - "", - "", - "", - "", - "" - ], - [ - "", - "단위작업", - "", - "단위", - "", - "단위", - "", - "종류", - "", - "", - "", - "" - ], - [ - "단 위 작 업 별", - "1. 단목베기", - "", - "", - "", - "", - "", - "", - "399,493", - "", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "378,072", - "", - "" - ], - [ - "ㆍ경급별(cm)", - "76", - "본/ha", - "", - "인/100본", - "0.88", - "248,681", - "벌목100%", - "20%", - "262,607", - "", - "" - ], - [ - "10cm이하", - "5", - "본/ha", - "0.40", - "인/100본", - "0.02", - "", - "", - "", - "", - "", - "" - ], - [ - "12~14㎝", - "11", - "본/ha", - "0.60", - "인/100본", - "0.07", - "", - "", - "", - "", - "", - "" - ], - [ - "16~18㎝", - "24", - "본/ha", - "1.00", - "인/100본", - "0.24", - "", - "", - "", - "", - "", - "" - ], - [ - "20~22㎝", - "18", - "본/ha", - "1.20", - "인/100본", - "0.22", - "", - "", - "", - "", - "", - "" - ], - [ - "24~26㎝", - "10", - "본/ha", - "1.40", - "인/100본", - "0.14", - "", - "", - "", - "", - "", - "" - ], - [ - "28~30㎝", - "5", - "본/ha", - "2.00", - "인/100본", - "0.10", - "", - "", - "", - "", - "", - "" - ], - [ - "32~34㎝", - "3", - "본/ha", - "2.90", - "인/100본", - "0.09", - "", - "", - "", - "", - "", - "" - ], - [ - "ㆍ작업보조", - "76", - "본", - "0.60", - "", - "0.46", - "169,804", - "보통인부", - "", - "78,109", - "", - "" - ], - [ - "ㆍ벌목작업안전 보조", - "0.88", - "인", - "", - "4인당1명", - "0.22", - "169,804", - "보통인부", - "", - "37,356", - "", - "" - ], - [ - "- 재료비(체인톱)", - "", - "", - "", - "", - "", - "", - "", - "", - "14,769", - "", - "" - ], - [ - "ㆍ 보통휘발유(주연료)", - "0.88", - "대", - "5.60", - "ℓ/대", - "4.93", - "1,537", - "무연(ℓ)", - "", - "7,577", - "", - "" - ], - [ - "ㆍ 보통휘발유(잡품)", - "7,577", - "원", - "40", - "%", - "", - "", - "", - "", - "3,030", - "", - "" - ], - [ - "ㆍ 체인오일(일반오일)", - "0.88", - "대", - "2.10", - "ℓ/대", - "1.85", - "2,250", - "국내산(ℓ)", - "", - "4,162", - "", - "" - ], - [ - "- 기계경비(체인톱)", - "0.88", - "대", - "0.0084", - "손료계수", - "", - "900,000", - "체인톱(대)", - "", - "6,652", - "", - "" - ], - [ - "2. 작업로설치", - "", - "", - "", - "", - "", - "", - "", - "", - "227,515", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "216,565", - "", - "" - ], - [ - "ㆍ 소작업로", - "0.45", - "km", - "2.00", - "인/km", - "0.90", - "209,242", - "벌목50% 보통50%", - "15%", - "216,565", - "", - "" - ], - [ - "ㆍ 대작업로", - "-", - "〃", - "3.00", - "〃", - "-", - "(248,681)", - "(벌목부)", - "", - "", - "", - "" - ], - [ - "", - "", - "", - "", - "", - "", - "(169,804)", - "(보통인부)", - "", - "", - "", - "" - ], - [ - "- 재료비(체인톱)", - "", - "", - "", - "", - "", - "", - "", - "", - "7,548", - "", - "" - ], - [ - "ㆍ 보통휘발유(주연료)", - "0.45", - "대", - "5.60", - "ℓ/대", - "2.52", - "1,537", - "무연(ℓ)", - "", - "3,873", - "", - "" - ], - [ - "ㆍ 보통휘발유(잡품)", - "3,873", - "원", - "40", - "%", - "", - "", - "", - "", - "1,549", - "", - "" - ], - [ - "ㆍ 체인오일(일반오일)", - "0.45", - "대", - "2.10", - "ℓ/대", - "0.95", - "2,250", - "국내산(ℓ)", - "", - "2,126", - "", - "" - ], - [ - "- 기계경비(체인톱)", - "0.45", - "대", - "0.0084", - "손료계수", - "", - "900,000", - "체인톱(대)", - "", - "3,402", - "", - "" - ], - [ - "3. 산물수집", - "", - "", - "", - "", - "", - "", - "", - "", - "1,371,337", - "", - "" - ], - [ - "- 직접노무비", - "17.85", - "㎥", - "2.65", - "㎥/인", - "6.73", - "169,804", - "보통100%", - "20%", - "1,371,337", - "", - "" - ], - [ - "4. 집적", - "", - "", - "", - "", - "", - "", - "", - "", - "157.624", - "", - "" - ], - [ - "- 직접노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "106,848", - "", - "" - ], - [ - "ㆍ 우드그래플", - "13.169", - "", - "", - "", - "0.39", - "273,971", - "", - "", - "106,848", - "", - "" - ], - [ - "1.8m", - "", - "㎥", - "31.35", - "㎥/일", - "", - "273,971", - "건설기계운전사", - "", - "", - "", - "" - ], - [ - "2.1m", - "13.169", - "〃", - "33.55", - "〃", - "0.39", - "", - "", - "", - "", - "", - "" - ], - [ - "2.7m", - "", - "〃", - "36.32", - "〃", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "3.6m", - "", - "〃", - "41.29", - "〃", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "- 재료비(굴삭기)", - "", - "", - "", - "", - "", - "", - "", - "", - "15,676", - "", - "" - ], - [ - "ㆍ 경유(주연료)", - "0.39", - "일", - "20.80", - "ℓ/대", - "8.11", - "1,487", - "경유(ℓ)", - "", - "12,059", - "", - "" - ], - [ - "ㆍ 경유(잡품)", - "12,059", - "원", - "30%", - "", - "", - "", - "", - "", - "3,617", - "", - "" - ], - [ - "- 기계경비(굴삭기)", - "0.39", - "일", - "0.0015", - "1대/일", - "", - "60,000,000", - "우드그래플", - "", - "35,100", - "", - "" - ], - [ - "합 계", - "순원가", - "", - "", - "", - "", - "", - "", - "", - "", - "2,155,969", - "" - ], - [ - "o 노무비", - "", - "", - "", - "", - "", - "", - "", - "", - "2,072,822", - "", - "" - ], - [ - "o 재료비", - "", - "", - "", - "", - "", - "", - "", - "", - "37,993", - "", - "" - ], - [ - "o 경비(기계경비)", - "", - "", - "", - "", - "", - "", - "", - "", - "45,154", - "", - "" - ], - [ - "<할인․할증률 적용>", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "구 분", - "할인․할증요소", - "단위작업(%)", - "비고", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "단목베기", - "작업로설치", - "산물수집", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 집단화정도(1-4-3)", - "개소당 평균면적이 3ha 이상", - "0%", - "", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 경사도(1-4-5)", - "급 (30°이상)", - "10%", - "10%", - "10%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 장애물의 정도(1-4-8)", - "가슴높이 이상의 초본·관목", - "10%", - "", - "10%", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "o 제거대상 식생(1-4-9)", - "보통이다 (높이 1.2m 이상이고, 직경이 4~6cm 미만)", - "", - "5%", - "", - "", - "", - "", - "", - "", - "", - "" - ], - [ - "합 계", - "", - "20%", - "15%", - "20%", - "", - "", - "", - "", - "", - "", - "" - ] - ] - } - ], + "tables": [], "work_item_code": "FP-04-02", "level": 2, "parent_code": "FP-04", @@ -12672,7 +6896,7 @@ "toc_number": "4-2", "toc_edition": "산림청고시제2025-82호", "path_name": "나무베기 › 단목베기", - "axis_role": "work_item" + "axis_role": "group" }, { "number": "4-2-1", @@ -39039,193 +33263,18 @@ "number": "13-3", "name": "기초다짐 및 뒷채움", "sort_order": 110336, - "tables": [ - { - "pum_table_id": "F0405", - "section": "13-3. 기초다짐 및 뒤채움’ 항을 적용한다.", - "source_line": 7087, - "pum_form": "requirement", - "form_basis": "값 단위 '(m)'", - "basis_quantity": null, - "basis_unit": null, - "basis_source": null, - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": false, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "∼(U+223C)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "높 이(m)", - "3 ∼ 4까지", - "4 ∼ 5.5까지", - "5.5∼7.5까지", - "7.5초과" - ], - "raw_row": [ - [ - "증가율(%)", - "30", - "40", - "60", - "80 ∼ 100" - ] - ] - }, - { - "pum_table_id": "F0406", - "section": "13-3. 기초다짐 및 뒤채움’ 항을 적용한다.", - "source_line": 7094, - "pum_form": "reference", - "form_basis": "사람 판정 — 〈돌쌓기의 개수 및 중량의 표준〉 — [주] 인력 돌쌓기·돌붙임 기준", - "basis_quantity": 1.0, - "basis_unit": "㎡", - "basis_source": "본문", - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": false, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [ - "×(U+00D7)" - ], - "capacity_formula_here": false, - "variant_key": [], - "condition_note": [ - "종별 뒷길이 단위", - "견치돌", - "깬돌 및 깬잡석", - "야면석" - ], - "raw_row": [ - [ - "25㎝(17×17)", - "개 ㎏", - "32 192", - "33 132", - "- -" - ], - [ - "30㎝(20×20)", - "개 ㎏", - "23 368", - "24 264", - "28 420" - ], - [ - "35㎝(25×25)", - "개 ㎏", - "16 480", - "17 340", - "23 575" - ], - [ - "45㎝(30×30)", - "개 ㎏", - "11 627", - "12 480", - "16 880" - ], - [ - "55㎝(35×35)", - "개 ㎏", - "8 752", - "9 504", - "11 1,100" - ], - [ - "60㎝(40×40)", - "개 ㎏", - "6 822", - "6 540", - "- -" - ], - [ - "75㎝(50×50)", - "개 ㎏", - "4 1,028", - "4 560", - "- -" - ] - ] - }, - { - "pum_table_id": "F0418", - "section": "13-3. 기초다짐 및 뒤채움”항을 적용한다.", - "source_line": 7268, - "pum_form": "requirement", - "form_basis": "직종 표기((인)·인부·공)", - "basis_quantity": 1.0, - "basis_unit": "㎡", - "basis_source": "본문", - "resource_shares": {}, - "partial_ratio": false, - "expression_cells": [], - "crew_table": false, - "spaced_names": [], - "formula_rows": [], - "special_glyphs": [], - "capacity_formula_here": false, - "variant_key": [ - "35cm 이하", - "55cm 이하", - "75cm 이하" - ], - "condition_note": [ - "명 칭", - "규 격", - "단 위", - "수량(뒷길이)" - ], - "raw_row": [ - [ - "35cm 이하", - "55cm 이하", - "75cm 이하", - "", - "", - "" - ], - [ - "석공 보통인부", - "", - "인 〃", - "0.11 0.04", - "0.10 0.03", - "0.09 0.02" - ], - [ - "굴착기+부착용 집게", - "0.6㎥", - "시간", - "0.22", - "0.21", - "0.20" - ] - ] - } - ], + "tables": [], "work_item_code": "FP-13-03", "level": 2, "parent_code": "FP-13", "parent_mode": "choose_one", - "variant_keys": [ - "35cm 이하", - "55cm 이하", - "75cm 이하" - ], + "variant_keys": [], "work_item_key": "FW-00431", "toc_code": "FP-13-03", "toc_number": "13-3", "toc_edition": "산림청고시제2025-82호", "path_name": "구조물 › 기초다짐 및 뒷채움", - "axis_role": "work_item" + "axis_role": "group" }, { "number": "13-3-1", @@ -39623,6 +33672,121 @@ "-" ] ] + }, + { + "pum_table_id": "F0405", + "section": "13-4-1. 메쌓기(인력)", + "source_line": 7087, + "pum_form": "requirement", + "form_basis": "값 단위 '(m)'", + "basis_quantity": null, + "basis_unit": null, + "basis_source": null, + "resource_shares": {}, + "partial_ratio": false, + "expression_cells": [], + "crew_table": false, + "spaced_names": [], + "formula_rows": [], + "special_glyphs": [ + "∼(U+223C)" + ], + "capacity_formula_here": false, + "variant_key": [], + "condition_note": [ + "높 이(m)", + "3 ∼ 4까지", + "4 ∼ 5.5까지", + "5.5∼7.5까지", + "7.5초과" + ], + "raw_row": [ + [ + "증가율(%)", + "30", + "40", + "60", + "80 ∼ 100" + ] + ] + }, + { + "pum_table_id": "F0406", + "section": "13-4-1. 메쌓기(인력)", + "source_line": 7094, + "pum_form": "reference", + "form_basis": "사람 판정 — 〈돌쌓기의 개수 및 중량의 표준〉 — [주] 인력 돌쌓기·돌붙임 기준", + "basis_quantity": 1.0, + "basis_unit": "㎡", + "basis_source": "본문", + "resource_shares": {}, + "partial_ratio": false, + "expression_cells": [], + "crew_table": false, + "spaced_names": [], + "formula_rows": [], + "special_glyphs": [ + "×(U+00D7)" + ], + "capacity_formula_here": false, + "variant_key": [], + "condition_note": [ + "종별 뒷길이 단위", + "견치돌", + "깬돌 및 깬잡석", + "야면석" + ], + "raw_row": [ + [ + "25㎝(17×17)", + "개 ㎏", + "32 192", + "33 132", + "- -" + ], + [ + "30㎝(20×20)", + "개 ㎏", + "23 368", + "24 264", + "28 420" + ], + [ + "35㎝(25×25)", + "개 ㎏", + "16 480", + "17 340", + "23 575" + ], + [ + "45㎝(30×30)", + "개 ㎏", + "11 627", + "12 480", + "16 880" + ], + [ + "55㎝(35×35)", + "개 ㎏", + "8 752", + "9 504", + "11 1,100" + ], + [ + "60㎝(40×40)", + "개 ㎏", + "6 822", + "6 540", + "- -" + ], + [ + "75㎝(50×50)", + "개 ㎏", + "4 1,028", + "4 560", + "- -" + ] + ] } ], "work_item_code": "FP-13-04-01", @@ -40682,6 +34846,61 @@ "0.22" ] ] + }, + { + "pum_table_id": "F0418", + "section": "13-5-2. 장비", + "source_line": 7268, + "pum_form": "requirement", + "form_basis": "직종 표기((인)·인부·공)", + "basis_quantity": 1.0, + "basis_unit": "㎡", + "basis_source": "본문", + "resource_shares": {}, + "partial_ratio": false, + "expression_cells": [], + "crew_table": false, + "spaced_names": [], + "formula_rows": [], + "special_glyphs": [], + "capacity_formula_here": false, + "variant_key": [ + "35cm 이하", + "55cm 이하", + "75cm 이하" + ], + "condition_note": [ + "명 칭", + "규 격", + "단 위", + "수량(뒷길이)" + ], + "raw_row": [ + [ + "35cm 이하", + "55cm 이하", + "75cm 이하", + "", + "", + "" + ], + [ + "석공 보통인부", + "", + "인 〃", + "0.11 0.04", + "0.10 0.03", + "0.09 0.02" + ], + [ + "굴착기+부착용 집게", + "0.6㎥", + "시간", + "0.22", + "0.21", + "0.20" + ] + ] } ], "work_item_code": "FP-13-05-02", diff --git a/resources/tester/test_work_item_key_registry.py b/resources/tester/test_work_item_key_registry.py index 1ff904e4..5c6cf67b 100644 --- a/resources/tester/test_work_item_key_registry.py +++ b/resources/tester/test_work_item_key_registry.py @@ -42,7 +42,10 @@ MASTER = OUT_DIR / "work_item_master_2026-01-01.json" #: 2026-09-17 랩탑 메인 — 목차 오기 둘을 본문 번호로 바로잡아(브레인 지시) **네 줄만** 바뀌어 새로 뜸 #: (옛 f8b8fba1…). 네 줄 모습은 `test_목차_오기는_본문_번호로_바로잡고_열쇠는_그대로` 가 잼 · #: 미판정·밑수 목록 파일은 한 글자도 안 바뀜. -BASELINE_WORK_ITEMS_SHA = "be88f730b325c290012e5a2a79ad593ce5a74ffd82464226857191fefe6647e3" +#: 2026-09-17 랩탑 메인 둘째 — 헛단위 뺌(인용을 제목으로 읽은 13-3 표 셋 · 부록 사례 번호 겹침 일곱)으로 다시 뜸 +#: (옛 be88f730…). 바뀐 줄은 13-3·4-1·4-2·2-1·2-2·3-1·3-2·3-3·13-4-1·13-5-2 의 표 귀속뿐 — +#: `test_work_item_master_toc` 가 자리를 잼 · 단가표 대조는 그 파일 머리. +BASELINE_WORK_ITEMS_SHA = "2accafe5e366c32eb6e95123642b4330e28537b2199dee851247e996fcd839da" #: 열쇠 작업이 새로 얹은 칸. 지문을 잴 때만 떼어낸다. ADDED_FIELDS = ( @@ -261,7 +264,7 @@ def test_갈래_문자열이_열쇠라_흔들림을_못박음(master: dict) -> N import collections keys = [k for it in master["work_items"] for k in (it.get("variant_keys") or [])] - assert len(keys) == 335 + assert len(keys) == 332 # 2026-09-17 헛단위 13-3 갈래 3 뺌(335 → 332) tilde = collections.Counter(ch for k in keys for ch in k if ch in "∼~") assert tilde == {"∼": 26, "~": 8}, "물결표 쓰임이 바뀜 — 열쇠가 갈렸는지 볼 것" squeezed = collections.defaultdict(set) diff --git a/resources/tester/test_work_item_master_toc.py b/resources/tester/test_work_item_master_toc.py index 6e7fab59..ba9eaed7 100644 --- a/resources/tester/test_work_item_master_toc.py +++ b/resources/tester/test_work_item_master_toc.py @@ -4,8 +4,12 @@ 뒤 줄(「무근진동기 제외」)이 앞 표(F0363 「철근, 펌프카 0-15m」)를 물고, 진짜 표(F0364)는 orphan 으로 사라졌음. 표 번호로는 안 잡힘(번호는 같았음) — **표 절 제목의 이름이 다른 줄 이름과 똑같은데 그 줄이 아닌 데 붙음**이 그 꼴. ⚠ 이름 글자만 조금 다른 자리(목차 「깍기」 · 본문 「깎기」)는 판정하지 않음 — 번호·이름이 딴 줄을 가리킬 때만. -⚠ 부록 사례 표 7(F0455·F0456·F0472~F0476)은 번호가 본문 절과 겹쳐 그 절에 붙어 있으나 모두 참조형 — - 일위대가로 안 읽혀 금액 무관(브레인 전수 판정). 자리 판정은 데스크탑 서브 몫. +⚠ 2026-09-17 둘째 — **헛단위**(목록에 없는 공종이 섬 · 서브 훑기 · 브레인): + · [주] 인용 「‘13-3. 기초다짐 및 뒤채움’ 항을 적용한다」를 제목으로 읽어 표 셋(F0405·F0406·F0418)이 13-3 에 붙음 + · 부록 사례 표 일곱(F0455·F0456·F0472~F0476)이 본문 절 번호와 겹쳐 4-1·4-2 따위에 붙음 + ⇒ 인용은 제목이 아님 · 번호만 겹치고 이름이 딴판이면 못 붙인 표 목록으로. + 단가표 대조(677 제목 전후) — 헛단위 B-FP-13-03 셋이 빠지고 **B-FP-13-05-02 가 메붙임+찰붙임 합으로 약 두 배** + (쓰는 곳 0 · `KnownGaps` 에 「쓰면 안 됨」 표시 · 갈래 가르기 대기). 나머지 단가 한 원도 안 바뀜. """ from __future__ import annotations @@ -62,3 +66,35 @@ def test_사라진_표는_목록으로_남음(master: dict) -> None: master["stats"]["tables_attached"] + len(master["orphan_tables"]) == master["stats"]["tables_total"] ) + + +APPENDIX = {"F0455", "F0456", "F0472", "F0473", "F0474", "F0475", "F0476"} + + +def test_인용은_제목이_아니라_표가_제_절에_붙음(master: dict) -> None: + by_code = {it["work_item_code"]: it for it in master["work_items"]} + tables = lambda code: [t["pum_table_id"] for t in by_code[code]["tables"]] # noqa: E731 + assert tables("FP-13-03") == [] # 헛단위 — 표 없는 묶는 마디로 + assert {"F0405", "F0406"} <= set(tables("FP-13-04-01")) + assert "F0418" in tables("FP-13-05-02") + + +def test_부록_사례_표는_번호가_겹쳐도_안_붙고_목록으로(master: dict) -> None: + attached = {t["pum_table_id"] for it in master["work_items"] for t in it["tables"]} + assert not attached & APPENDIX + assert APPENDIX <= {o["pum_table_id"] for o in master["orphan_tables"]} + by_code = {it["work_item_code"]: it for it in master["work_items"]} + assert by_code["FP-04-01"]["tables"] == [] and by_code["FP-04-02"]["tables"] == [] + + +def test_이름_닮음_잣대() -> None: + from B08_Quantity.B08_Quantity_Build_WorkItemMaster import _is_section_title, title_names_node + + assert not _is_section_title("13-3. 기초다짐 및 뒤채움’ 항을 적용한다.", {}) + assert _is_section_title( + "2-9. 어린나무가꾸기, (1) 치수림단계 (제거대상 피복도 ‘소’, 가지치기)", {} + ) + assert not title_names_node("4-1. 소나무재선충병방제", {"name": "수확베기"}) + assert title_names_node("9-19-2. 비탈면 고르기(암절취)", {"name": "비탈면 면고르기(암절취)"}) + assert title_names_node("12-13. 면벽", {"name": "면벅"}) + assert title_names_node("9-7-1. T=30㎝ 미만", {"name": "T=30cm 미만"}) diff --git a/resources/tester/test_z01_work_items.py b/resources/tester/test_z01_work_items.py index 78b71d65..b34309ca 100644 --- a/resources/tester/test_z01_work_items.py +++ b/resources/tester/test_z01_work_items.py @@ -38,7 +38,7 @@ def _get(client: TestClient, kind: str, **params) -> dict: def test_산림_평평한_잎_목록과_계산_규칙(client: TestClient) -> None: listed = client.get("/api/master-data/base-prices").json()["kinds"] forest = next(i for i in listed if i["kind"] == "work_item_forest") - assert forest["group"] == "work_item" and forest["rows"] == 627 # 갈래마다 한 줄 + assert forest["group"] == "work_item" and forest["rows"] == 620 # 갈래마다 한 줄 · 헛단위 7줄 뺌(2026-09-17) # 상자 이름은 이름표 것 — 영문 키(work_item)로 뜨던 자리(2026-09-17 브레인 ①) assert {i["group"]: i["group_label"] for i in listed} == { "base_price": "기초단가", @@ -47,12 +47,12 @@ def test_산림_평평한_잎_목록과_계산_규칙(client: TestClient) -> Non } table = _get(client, "work_item_forest", size=500, axis_role="") # 「전부」 — 총칙까지 - assert table["total"] == 627 and table["stats"] == {"work_items": 365, "units": 627} + assert table["total"] == 620 and table["stats"] == {"work_items": 360, "units": 620} assert table["editable"] == [] and set(table["locked"]) == set(table["sortable"]) rows = table["rows"] + _get(client, "work_item_forest", size=500, page=2, axis_role="")["rows"] - assert len({r["@id"] for r in rows}) == 627 + assert len({r["@id"] for r in rows}) == 620 assert ( - len({r["@key"] for r in rows}) == len({r["name"] for r in rows}) == 365 + len({r["@key"] for r in rows}) == len({r["name"] for r in rows}) == 360 ) # 잎 이름 겹침 — 경로로 풀림 · 목차 오기 바로잡아 358 → 360(12-17-2 · 12-24-1) by_code = {r["work_item_code"]: r for r in rows} assert by_code["FP-09-03-02"]["name"] == "토공 › 토사깍기 › 기계"