Compare commits
20
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a82df951f | ||
|
|
e8484611f7 | ||
|
|
85255f5ec5 | ||
|
|
be4addb7f7 | ||
|
|
69c5d9c4c1 | ||
|
|
066719355a | ||
|
|
eca9c37bbd | ||
|
|
7e6e991118 | ||
|
|
81b8cb926f | ||
|
|
b8a4e09778 | ||
|
|
c9c3ab01cb | ||
|
|
d9b1d5ccb8 | ||
|
|
47f188b238 | ||
|
|
9a74d86d37 | ||
|
|
e2ce20c30f | ||
|
|
ed97867bef | ||
|
|
e057ceb442 | ||
|
|
2dab2ce23b | ||
|
|
76f70b675f | ||
|
|
6680cb0ff3 |
@@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import difflib
|
||||||
import hashlib
|
import hashlib
|
||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
@@ -146,10 +147,16 @@ def renumber_from_body(
|
|||||||
return fixed
|
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:
|
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):
|
if re.match(r"^\s*\d+(?:-\d+){0,3}\.\s", section):
|
||||||
return True
|
return not _CITATION_RE.search(section)
|
||||||
number = section_number(section)
|
number = section_number(section)
|
||||||
node = by_number.get(number) if number else None
|
node = by_number.get(number) if number else None
|
||||||
if node is 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())
|
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:
|
def section_number(section: str) -> str | None:
|
||||||
"""`"9-3-1. 인력"` → `"9-3-1"`. 번호가 없으면 `None`."""
|
"""`"9-3-1. 인력"` → `"9-3-1"`. 번호가 없으면 `None`."""
|
||||||
m = re.match(r"^\s*(\d+(?:-\d+){0,3})[.\s]", section + " ")
|
m = re.match(r"^\s*(\d+(?:-\d+){0,3})[.\s]", section + " ")
|
||||||
@@ -208,6 +244,8 @@ def build() -> tuple[
|
|||||||
number = section_number(section)
|
number = section_number(section)
|
||||||
chapter = number.split("-")[0] if number else None
|
chapter = number.split("-")[0] if number else None
|
||||||
node = by_number.get(number) 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(
|
entry = table_entry(
|
||||||
table, section, number, chapter, source_lines, node and node["name"], report
|
table, section, number, chapter, source_lines, node and node["name"], report
|
||||||
)
|
)
|
||||||
@@ -265,6 +303,7 @@ def finish(
|
|||||||
# ⚠ 장부에 없는 목차 코드는 **새 열쇠**를 받는다. 짐작으로 옛 열쇠를 물려주지 않는다.
|
# ⚠ 장부에 없는 목차 코드는 **새 열쇠**를 받는다. 짐작으로 옛 열쇠를 물려주지 않는다.
|
||||||
from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Keys import (
|
from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Keys import (
|
||||||
assign_keys,
|
assign_keys,
|
||||||
|
assign_variant_keys,
|
||||||
decorate,
|
decorate,
|
||||||
load_registry,
|
load_registry,
|
||||||
toc_edition,
|
toc_edition,
|
||||||
@@ -273,6 +312,8 @@ def finish(
|
|||||||
edition = toc_edition(data.get("sources"), data["effective_date"])
|
edition = toc_edition(data.get("sources"), data["effective_date"])
|
||||||
registry = load_registry(registry_path, key_prefix)
|
registry = load_registry(registry_path, key_prefix)
|
||||||
newly_issued, toc_duplicates = assign_keys(nodes, registry, edition=edition)
|
newly_issued, toc_duplicates = assign_keys(nodes, registry, edition=edition)
|
||||||
|
# 갈래도 불변 열쇠 — 갈래 글자를 열쇠에 담으면 원문이 다듬어질 때 열쇠가 갈린다(2026-09-17 브레인).
|
||||||
|
newly_variants = assign_variant_keys(nodes, registry)
|
||||||
decorate(nodes, edition=edition, roots=general_roots) # None = 산림 잣대(`axis_policy.json`)
|
decorate(nodes, edition=edition, roots=general_roots) # None = 산림 잣대(`axis_policy.json`)
|
||||||
role_counts: dict[str, int] = {}
|
role_counts: dict[str, int] = {}
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
@@ -319,6 +360,8 @@ def finish(
|
|||||||
# 표도 아래도 없는 잎(`empty`). 화면·조합은 공종 축만 보면 된다.
|
# 표도 아래도 없는 잎(`empty`). 화면·조합은 공종 축만 보면 된다.
|
||||||
"axis_roles": role_counts,
|
"axis_roles": role_counts,
|
||||||
"keys_newly_issued": len(newly_issued),
|
"keys_newly_issued": len(newly_issued),
|
||||||
|
"variant_keys_newly_issued": len(newly_variants),
|
||||||
|
"variant_keys": sum(len(n.get("variants") or []) for n in nodes),
|
||||||
"toc_duplicate_rows": len(toc_duplicates),
|
"toc_duplicate_rows": len(toc_duplicates),
|
||||||
"toc_corrections": len(toc_corrections),
|
"toc_corrections": len(toc_corrections),
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -5,7 +5,8 @@
|
|||||||
|
|
||||||
⚠⚠ 뒤집히면 20배 틀림 — `productivity`(1÷값) / `requirement`(값÷밑수)는 **표 머리와 표 바로 위
|
⚠⚠ 뒤집히면 20배 틀림 — `productivity`(1÷값) / `requirement`(값÷밑수)는 **표 머리와 표 바로 위
|
||||||
본문의 단위 표현**으로만 가른다. 행 이름·비고의 직종 이름에 끌려 읽지 않는다.
|
본문의 단위 표현**으로만 가른다. 행 이름·비고의 직종 이름에 끌려 읽지 않는다.
|
||||||
⚠ **못 가른 표는 싣지 않는다** — undetermined 로 남는다(막갈이 깊이표·드론운반 인원 등 밑수 불명).
|
⚠ **못 가른 표는 싣지 않는다** — undetermined 로 남는다.
|
||||||
|
2026-09-17 안티그래비티 원문 대조로 **마지막 14표를 가름** — 산림 미판정이 0 이 됐다.
|
||||||
⚠ `coefficient`·`reference` 로 가른 표는 일위대가 줄로 안 읽힌다(자원 축이 건너뜀) — 시공능력
|
⚠ `coefficient`·`reference` 로 가른 표는 일위대가 줄로 안 읽힌다(자원 축이 건너뜀) — 시공능력
|
||||||
공식 계수는 형태와 상관없이 공식 읽기가 표를 직접 본다.
|
공식 계수는 형태와 상관없이 공식 읽기가 표를 직접 본다.
|
||||||
⚠ 표 번호는 원천 차례로 매긴 것이라 **절 번호를 함께 대조**한다 — 어긋나면 빌드를 멈춘다.
|
⚠ 표 번호는 원천 차례로 매긴 것이라 **절 번호를 함께 대조**한다 — 어긋나면 빌드를 멈춘다.
|
||||||
@@ -123,7 +124,7 @@ FORM_JUDGMENTS: dict[str, tuple[str, str, str]] = {
|
|||||||
# ── 제13장 구조물 ───────────────────────────────────────────────
|
# ── 제13장 구조물 ───────────────────────────────────────────────
|
||||||
"F0400": ("13-2-3", "reference", "큰돌 직경별 뒷길이 기준(㎝)"),
|
"F0400": ("13-2-3", "reference", "큰돌 직경별 뒷길이 기준(㎝)"),
|
||||||
"F0406": (
|
"F0406": (
|
||||||
"13-3",
|
"13-4-1", # 2026-09-17 절 바로잡음 — [주]④ 인용을 13-3 제목으로 읽었던 것(표는 13-4-1 메쌓기 아래)
|
||||||
"reference",
|
"reference",
|
||||||
"〈돌쌓기의 개수 및 중량의 표준〉 — [주] 인력 돌쌓기·돌붙임 기준",
|
"〈돌쌓기의 개수 및 중량의 표준〉 — [주] 인력 돌쌓기·돌붙임 기준",
|
||||||
),
|
),
|
||||||
@@ -151,9 +152,74 @@ FORM_JUDGMENTS: dict[str, tuple[str, str, str]] = {
|
|||||||
"F0429": ("13-10-2", "coefficient", "[주]⑥ 관입률별 계수"),
|
"F0429": ("13-10-2", "coefficient", "[주]⑥ 관입률별 계수"),
|
||||||
"F0439": ("13-12-2", "coefficient", "[주]⑦ 높이·기울기 할증(%)"),
|
"F0439": ("13-12-2", "coefficient", "[주]⑦ 높이·기울기 할증(%)"),
|
||||||
"F0446": ("13-15-2", "reference", "작업조건(어려운·쉬운) 구분 기준"),
|
"F0446": ("13-15-2", "reference", "작업조건(어려운·쉬운) 구분 기준"),
|
||||||
|
# ── 미판정 14 — 2026-09-17 안티그래비티 원문 대조 규명(브레인 넘김) ─────────────
|
||||||
|
# `산림품셈_form_미판정_14개_원문대조_규명.json` · 머리 소실 9 · 혼합 3 · 공식 1 · 글값 1.
|
||||||
|
# ⚠ 여기까지가 산림 미판정 전부다 — 다 채우면 `form_undetermined` 가 0 이 된다.
|
||||||
|
"F0140": (
|
||||||
|
"5-26-1",
|
||||||
|
"requirement",
|
||||||
|
"머리 소실 — 윗 2줄 막갈이깊이(cm)를 열 머리로 되살림, 토성×깊이별 보통인부(100㎡당)",
|
||||||
|
),
|
||||||
|
"F0141": ("5-26-2", "requirement", "위와 같은 모양(중갈이) — 토성×깊이별 보통인부(100㎡당)"),
|
||||||
|
"F0142": ("5-26-3", "requirement", "위와 같은 모양(전면갈이) — 토성×깊이별 보통인부(100㎡당)"),
|
||||||
|
"F0195": (
|
||||||
|
"7-14",
|
||||||
|
"productivity",
|
||||||
|
"머리 소실 — 값이 「1인 1일 공정량」이라 생산량형(품 = 1 ÷ 값)",
|
||||||
|
),
|
||||||
|
"F0248": ("9-7-1", "coefficient", "머리 소실 — 값이 품이 아니라 계산식 파라미터"),
|
||||||
|
"F0322": ("10-13-1", "requirement", "머리 소실 — 묘목 1,000본당 소요량"),
|
||||||
|
"F0323": ("10-13-2", "requirement", "위와 같음(묘목 1,000본당)"),
|
||||||
|
"F0333": ("12-1-3", "requirement", "머리 소실 — ㎥당 소요량"),
|
||||||
|
"F0346": ("12-11-1", "requirement", "머리 소실 — m당 소요량"),
|
||||||
|
"F0169": ("7-1-1", "productivity", "혼합 — 값이 「㎥/인·일」이라 생산량형"),
|
||||||
|
"F0304": ("10-6-3", "requirement", "혼합 — 소요량형(밑수는 표 밖이라 미확보로 남김)"),
|
||||||
|
"F0356": ("12-17-1", "productivity", "혼합 — 값이 「㎥/일」이라 생산량형"),
|
||||||
|
# ⚠ 안티그래비티는 이 표를 `formula` 로 적었으나 **낱말을 새로 만들지 않는다** —
|
||||||
|
# 받는 쪽이 모르는 형태를 만나면 조용히 건너뛴다. 뜻이 같은 `coefficient`(계산식 파라미터)로 둔다.
|
||||||
|
"F0257": (
|
||||||
|
"9-11-1",
|
||||||
|
"coefficient",
|
||||||
|
"공식 명세 — 시공능력 공식 파라미터(안티그래비티 판정 `formula`)",
|
||||||
|
),
|
||||||
|
"F0349": (
|
||||||
|
"12-11-3",
|
||||||
|
"requirement",
|
||||||
|
"글값 — 값이 글로 적힌 소요량형(밑수는 표 밖이라 미확보로 남김)",
|
||||||
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#: 표 번호 → (절 번호, 밑수 수, 밑수 단위, 까닭).
|
||||||
|
#: **머리가 소실돼 자동으로는 못 읽는 표**의 밑수만 싣는다 — 원문 대조로 확인한 것만.
|
||||||
|
#: ⚠ 자동으로 읽히는 표는 여기 넣지 않는다. 두 곳에서 값을 매기면 어느 쪽이 정본인지 흐려진다.
|
||||||
|
#: 근거 — `resources/knowledge/technical_info/01_임도/05_원가정보/
|
||||||
|
#: 산림품셈_form_미판정_14개_원문대조_규명.json` (2026-09-17 안티그래비티 원문 대조).
|
||||||
|
BASIS_JUDGMENTS: dict[str, tuple[str, float, str, str]] = {
|
||||||
|
"F0140": ("5-26-1", 100.0, "㎡", "막갈이 — 머리 소실 · 원문 「100㎡당」"),
|
||||||
|
"F0141": ("5-26-2", 100.0, "㎡", "중갈이 — 위와 같음"),
|
||||||
|
"F0142": ("5-26-3", 100.0, "㎡", "전면갈이 — 위와 같음"),
|
||||||
|
"F0322": ("10-13-1", 1000.0, "본", "묘목 운반 — 원문 「묘목 1,000본당」"),
|
||||||
|
"F0323": ("10-13-2", 1000.0, "본", "위와 같음"),
|
||||||
|
"F0333": ("12-1-3", 1.0, "㎥", "원문 「㎥당」"),
|
||||||
|
"F0346": ("12-11-1", 1.0, "m", "원문 「m당」"),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def judged_basis(table_id: str, number: str | None) -> tuple[float, str, str] | None:
|
||||||
|
"""사람이 확인한 `(밑수 수, 단위, 까닭)`. 없으면 `None`. 절 번호가 어긋나면 멈춘다."""
|
||||||
|
found = BASIS_JUDGMENTS.get(table_id)
|
||||||
|
if found is None:
|
||||||
|
return None
|
||||||
|
section, quantity, unit, why = found
|
||||||
|
if section != number:
|
||||||
|
raise ValueError(
|
||||||
|
f"밑수 판정 {table_id} 의 절 {section} 이 원천의 {number} 와 다릅니다 — "
|
||||||
|
"원천 표 차례가 바뀌었으니 판정을 다시 대조할 것"
|
||||||
|
)
|
||||||
|
return quantity, unit, f"사람 판정 — {why}"
|
||||||
|
|
||||||
|
|
||||||
def judged_form(table_id: str, number: str | None) -> tuple[str, str] | None:
|
def judged_form(table_id: str, number: str | None) -> tuple[str, str] | None:
|
||||||
"""사람이 가른 `(형태, 까닭)`. 없으면 `None`. 절 번호가 어긋나면 멈춘다."""
|
"""사람이 가른 `(형태, 까닭)`. 없으면 `None`. 절 번호가 어긋나면 멈춘다."""
|
||||||
found = FORM_JUDGMENTS.get(table_id)
|
found = FORM_JUDGMENTS.get(table_id)
|
||||||
|
|||||||
@@ -163,6 +163,82 @@ def assign_keys(
|
|||||||
return newly, duplicates
|
return newly, duplicates
|
||||||
|
|
||||||
|
|
||||||
|
#: 갈래 열쇠 자릿수 — `FW-00105#01` 의 뒤 두 자리.
|
||||||
|
VARIANT_DIGITS = 2
|
||||||
|
#: 원문이 섞어 쓰는 물결표 — 맞댈 때 하나로 모은다.
|
||||||
|
_TILDES = {"~": "∼", "〜": "∼", "~": "∼"}
|
||||||
|
|
||||||
|
|
||||||
|
def variant_match(text: str) -> str:
|
||||||
|
"""갈래를 맞대는 꼴 — **공백을 다 떼고** 물결표를 하나로.
|
||||||
|
|
||||||
|
⚠ 왜 이렇게까지 지우나 — 원문이 「간 단」·「간 단」처럼 자간을 들쭉날쭉 쓰고, 이름 다듬기가
|
||||||
|
앞으로 더 들어올 자리다. 맞대는 꼴이 공백에 걸리면 **다듬는 날 열쇠가 갈린다.**
|
||||||
|
(산림 335 갈래로 재 보니 한 공종 안에서 이 꼴이 겹치는 자리는 없다 — 2026-09-17.)
|
||||||
|
"""
|
||||||
|
squeezed = "".join(str(text or "").split())
|
||||||
|
return "".join(_TILDES.get(ch, ch) for ch in squeezed)
|
||||||
|
|
||||||
|
|
||||||
|
def variant_display(text: str) -> str:
|
||||||
|
"""다듬은 갈래 이름 — 자간 공백을 한 칸으로, 물결표를 하나로. 원문은 따로 남긴다."""
|
||||||
|
spaced = " ".join(str(text or "").split())
|
||||||
|
return "".join(_TILDES.get(ch, ch) for ch in spaced)
|
||||||
|
|
||||||
|
|
||||||
|
def format_variant(serial: int) -> str:
|
||||||
|
return f"{serial:0{VARIANT_DIGITS}d}"
|
||||||
|
|
||||||
|
|
||||||
|
def assign_variant_keys(
|
||||||
|
nodes: list[dict[str, Any]], registry: dict[str, Any], *, issued_on: str | None = None
|
||||||
|
) -> list[dict[str, str]]:
|
||||||
|
"""갈래마다 **불변 열쇠**(`FW-00105#01`)를 주고 `variants` 칸을 얹는다.
|
||||||
|
|
||||||
|
공종 열쇠와 같은 병을 갈래가 그대로 앓고 있었다 — 갈래 글자가 열쇠에 들어가 있어
|
||||||
|
**원문 자간이나 물결표가 손질되면 열쇠가 갈렸다.** 그래서 장부에 올린다(2026-09-17 브레인).
|
||||||
|
|
||||||
|
장부 자리는 **공종 열쇠 아래**다(목차 코드 아래가 아니다) — 목차 번호가 밀려도 안 흔들린다.
|
||||||
|
⚠ 장부에 없는 갈래는 **새 번호**를 받는다. 비슷하다고 옛 번호를 물려주지 않는다.
|
||||||
|
사라진 갈래의 번호는 **비워 둔 채 다시 쓰지 않는다** — 옛 일위대가가 가리키던 자리다.
|
||||||
|
"""
|
||||||
|
issued_on = issued_on or date.today().isoformat()
|
||||||
|
newly: list[dict[str, str]] = []
|
||||||
|
for node in sorted(nodes, key=lambda n: n["sort_order"]):
|
||||||
|
raw = node.get("variant_keys") or []
|
||||||
|
if not raw:
|
||||||
|
node["variants"] = []
|
||||||
|
continue
|
||||||
|
# ⚠ 갈래가 하나도 없으면 장부에 빈 칸을 만들지 않는다 — 건설처럼 아직 갈래가 없는 벌에
|
||||||
|
# 빈 `variants` 가 생기면 이름표가 「있는데 이름이 없는 표」로 잡는다.
|
||||||
|
book = registry.setdefault("variants", {})
|
||||||
|
entry = book.setdefault(node["work_item_key"], {"next_serial": 1, "slots": {}})
|
||||||
|
variants = []
|
||||||
|
for text in raw:
|
||||||
|
slot = variant_match(text)
|
||||||
|
serial = entry["slots"].get(slot)
|
||||||
|
if serial is None:
|
||||||
|
serial = format_variant(entry["next_serial"])
|
||||||
|
entry["next_serial"] += 1
|
||||||
|
entry["slots"][slot] = serial
|
||||||
|
newly.append(
|
||||||
|
{
|
||||||
|
"variant_key": f"{node['work_item_key']}#{serial}",
|
||||||
|
"name": text,
|
||||||
|
"issued_on": issued_on,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
variants.append(
|
||||||
|
{
|
||||||
|
"variant_key": serial,
|
||||||
|
"name": text, # 원문 그대로 — 손대지 않는다
|
||||||
|
"name_clean": variant_display(text), # 다듬은 것
|
||||||
|
}
|
||||||
|
)
|
||||||
|
node["variants"] = variants
|
||||||
|
return newly
|
||||||
|
|
||||||
|
|
||||||
def path_names(nodes: list[dict[str, Any]]) -> list[str]:
|
def path_names(nodes: list[dict[str, Any]]) -> list[str]:
|
||||||
"""`["토공 › 토사깍기 › 인력", …]` — `nodes` 차례에 맞춘 전체 경로 이름.
|
"""`["토공 › 토사깍기 › 인력", …]` — `nodes` 차례에 맞춘 전체 경로 이름.
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from __future__ import annotations
|
|||||||
import re
|
import re
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Forms import judged_form
|
from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Forms import judged_basis, judged_form
|
||||||
|
|
||||||
# ── 형태 판정 ────────────────────────────────────────────────────────────
|
# ── 형태 판정 ────────────────────────────────────────────────────────────
|
||||||
# 헤더·비고 문자열에서 찾는 표지. 앞의 것이 먼저 걸린다(생산량형이 더 좁은 표현이라 우선).
|
# 헤더·비고 문자열에서 찾는 표지. 앞의 것이 먼저 걸린다(생산량형이 더 좁은 표현이라 우선).
|
||||||
@@ -312,6 +312,49 @@ def basis_from_name(name: str) -> tuple[float | None, str | None]:
|
|||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
|
#: 밑수가 될 수 있는 **세는 단위**(분모 자리).
|
||||||
|
_DENOM = "㎥|m3|㎡|m2|㏊|ha|㎞|km|m|매|본|개소|개|인|공|kg|㎏|톤|ton|주|식|대|일|시간|hr"
|
||||||
|
#: 값이 붙는 **재는 단위**(분자 자리). 이쪽이 단위꼴이어야 「몫」이지 규격이 아니다.
|
||||||
|
_NUMER = "인|공|ℓ|L|l|㎏|kg|톤|ton|m|㎝|cm|매|본|개|주|대|시간|hr|㎥|m3|㎡|m2"
|
||||||
|
|
||||||
|
#: ⚠ **표머리에 「당」 없이 몫으로만 적힌 밑수** — `인/ha` · `ℓ/일,대` · `m/본` (명세 꼴 B).
|
||||||
|
#: 본문 쪽은 `SOURCE_BASIS_RATIO_RE` 가 이미 보는데 **표머리는 안 보고 있었다.**
|
||||||
|
#: ⚠ 좁게 잡는다 — **양쪽이 다 단위꼴일 때만**. 안 그러면 `(무한궤도,0.7㎥)` 같은
|
||||||
|
#: 규격 칸이 밑수로 둔갑한다(옛날에 실제로 다섯 건 걸렸다).
|
||||||
|
HEADER_RATIO_RE = re.compile(
|
||||||
|
rf"(?:^|[((\s])(?:단위\s*[::]\s*)?(?:{_NUMER})\s*/\s*([\d,]*\.?\d*)\s*({_DENOM})\s*당?(?:$|[,))\s])"
|
||||||
|
)
|
||||||
|
#: `재료비(1km 소요량기준)` 꼴 — 「당」 대신 「소요량기준」으로 적은 표머리.
|
||||||
|
HEADER_BASIS_NOTE_RE = re.compile(rf"([\d,]*\.?\d*)\s*({_DENOM})\s*소요량\s*기준")
|
||||||
|
|
||||||
|
|
||||||
|
#: 분모가 둘인 몫 — `ℓ/일,대` · `인/㎥·일`. 밑수가 하나로 안 정해진다.
|
||||||
|
COMPOUND_DENOM_RE = re.compile(rf"/\s*[\d,]*\.?\d*\s*(?:{_DENOM})\s*[,,·]\s*(?:{_DENOM})")
|
||||||
|
|
||||||
|
|
||||||
|
def basis_from_header(cell: str) -> tuple[float | None, str | None]:
|
||||||
|
"""표머리 한 칸에서 몫꼴 밑수를 읽는다. 못 읽으면 `(None, None)`.
|
||||||
|
|
||||||
|
⚠ 분모가 밑수다 — `인/ha` 는 「1ha당 몇 인」이라 밑수는 `ha` 다. 분자(인)를 밑수로
|
||||||
|
읽으면 뜻이 뒤집힌다.
|
||||||
|
"""
|
||||||
|
# ⚠ **분모가 둘인 몫은 거절한다** — `ℓ/일,대` 는 「하루에 한 대당」이라 밑수가 둘이다.
|
||||||
|
# 한쪽(일)만 적으면 대수를 안 곱해 조용히 적게 선다. 반쪽 진실보다 「미확보」가 정직하다.
|
||||||
|
if COMPOUND_DENOM_RE.search(cell):
|
||||||
|
return None, None
|
||||||
|
for pattern in (HEADER_RATIO_RE, HEADER_BASIS_NOTE_RE):
|
||||||
|
if m := pattern.search(cell):
|
||||||
|
raw = (m.group(1) or "").replace(",", "")
|
||||||
|
unit = m.group(2)
|
||||||
|
if not person_basis_ok(raw, unit):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
return (float(raw) if raw else 1.0), unit
|
||||||
|
except ValueError:
|
||||||
|
return 1.0, unit
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
def detect_basis(table: dict[str, Any]) -> tuple[float | None, str | None]:
|
def detect_basis(table: dict[str, Any]) -> tuple[float | None, str | None]:
|
||||||
"""「100㎥당」 같은 밑수. 없으면 `(None, None)` — 단위당 1 로 단정하지 않는다.
|
"""「100㎥당」 같은 밑수. 없으면 `(None, None)` — 단위당 1 로 단정하지 않는다.
|
||||||
|
|
||||||
@@ -336,6 +379,17 @@ def detect_basis(table: dict[str, Any]) -> tuple[float | None, str | None]:
|
|||||||
return float(m.group(1).replace(",", "")), m.group(2)
|
return float(m.group(1).replace(",", "")), m.group(2)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return None, m.group(2)
|
return None, m.group(2)
|
||||||
|
# 「당」이 없는 몫꼴은 **표머리에서만** 본다(줄 값에는 규격이 섞여 있다).
|
||||||
|
# ⚠ 표머리가 **서로 다른 분모**를 말하면 거절한다 — 건설 8장 기계경비표가 한 표 안에서
|
||||||
|
# `주연료 (ℓ/hr)` 와 `조종원 (인/일)` 을 함께 적는다. 먼저 걸린 것을 고르면 반은 틀린다.
|
||||||
|
found = {
|
||||||
|
basis_from_header(cell)
|
||||||
|
for cell in (norm(h) for h in table.get("headers", []) or [])
|
||||||
|
if cell
|
||||||
|
}
|
||||||
|
found = {hit for hit in found if hit[1]}
|
||||||
|
if len(found) == 1:
|
||||||
|
return found.pop()
|
||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
@@ -522,13 +576,18 @@ def table_entry(
|
|||||||
# ⚠ **본문이 정본이다.** 표 안을 긁는 쪽은 보조 — 비고에 적힌 다른 기준
|
# ⚠ **본문이 정본이다.** 표 안을 긁는 쪽은 보조 — 비고에 적힌 다른 기준
|
||||||
# (「10㎡당」 같은 참고 문구)을 그 표의 밑수로 잘못 물어 온다.
|
# (「10㎡당」 같은 참고 문구)을 그 표의 밑수로 잘못 물어 온다.
|
||||||
# 실제로 13-3-1 이 본문 `(단위: ㎥당)` 인데 표 안 긁기가 `10㎡` 를 물어 왔다.
|
# 실제로 13-3-1 이 본문 `(단위: ㎥당)` 인데 표 안 긁기가 `10㎡` 를 물어 왔다.
|
||||||
basis_qty = basis_unit = None
|
basis_qty = basis_unit = basis_source = None
|
||||||
if source_lines:
|
# 사람이 원문에서 확인한 밑수가 가장 앞이다 — **머리가 소실돼 자동으로는 못 읽는 표**만 해당.
|
||||||
|
if judged := judged_basis(table["table_id"], number):
|
||||||
|
basis_qty, basis_unit, basis_source = judged[0], judged[1], judged[2]
|
||||||
|
if basis_unit is None and source_lines:
|
||||||
basis_qty, basis_unit = basis_from_source(source_lines, int(table.get("line") or 0))
|
basis_qty, basis_unit = basis_from_source(source_lines, int(table.get("line") or 0))
|
||||||
|
elif basis_unit is None:
|
||||||
|
basis_source = None
|
||||||
if basis_qty is None and basis_unit is None:
|
if basis_qty is None and basis_unit is None:
|
||||||
basis_qty, basis_unit = detect_basis(table)
|
basis_qty, basis_unit = detect_basis(table)
|
||||||
basis_source = "표 안" if basis_unit else None
|
basis_source = "표 안" if basis_unit else None
|
||||||
else:
|
elif basis_source is None:
|
||||||
basis_source = "본문"
|
basis_source = "본문"
|
||||||
# 본문·표 안에 없을 때만 **절 이름**을 본다(4-2-2 「1,000㎡당」) — 이름 전체가 밑수일 때만.
|
# 본문·표 안에 없을 때만 **절 이름**을 본다(4-2-2 「1,000㎡당」) — 이름 전체가 밑수일 때만.
|
||||||
if basis_unit is None and node_name is not None:
|
if basis_unit is None and node_name is not None:
|
||||||
|
|||||||
@@ -19,6 +19,14 @@ from __future__ import annotations
|
|||||||
|
|
||||||
#: 공종코드 → (짧은 딱지, 사유 한 줄). 접두사로 맞춘다(갈래가 붙어도 걸리게).
|
#: 공종코드 → (짧은 딱지, 사유 한 줄). 접두사로 맞춘다(갈래가 붙어도 걸리게).
|
||||||
KNOWN_GAPS: dict[str, tuple[str, str]] = {
|
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 인계가 이미 「재료량은 [주]④ 설계수량에 따른다라 미확보」**를 싣는다.
|
# ⚠ 규준틀 둘은 **B08 인계가 이미 「재료량은 [주]④ 설계수량에 따른다라 미확보」**를 싣는다.
|
||||||
# 그러니 그 말을 되풀이하지 않고 **B09 쪽에서만 아는 것**만 보탠다 —
|
# 그러니 그 말을 되풀이하지 않고 **B09 쪽에서만 아는 것**만 보탠다 —
|
||||||
# ㉠ 지금 선 값이 **인력 품만**이라는 것 ㉡ 손율은 원문에 이미 있다는 것.
|
# ㉠ 지금 선 값이 **인력 품만**이라는 것 ㉡ 손율은 원문에 이미 있다는 것.
|
||||||
|
|||||||
@@ -38,8 +38,11 @@ _RATE_EDITABLE = (
|
|||||||
"manager_thresholds.default_estimated_amount_krw",
|
"manager_thresholds.default_estimated_amount_krw",
|
||||||
"manager_thresholds.civil_main_work_estimated_amount_krw",
|
"manager_thresholds.civil_main_work_estimated_amount_krw",
|
||||||
)
|
)
|
||||||
|
#: ⚠ **지금 상태를 먼저** — 덮개를 읽는 곳이 Z01 밖에 0(2026-09-17 서브 훑기 · 브레인 「없으면 없다고」).
|
||||||
|
#: 뒤 문장은 프로젝트 복사(요구 14)가 붙으면 참이 되는 약속이라 지우지 않고 「그 길이 붙으면」으로 둠.
|
||||||
_SCOPE_NOTICE = (
|
_SCOPE_NOTICE = (
|
||||||
"여기서 고친 값은 **새로 만드는 프로젝트부터** 쓰임 — 이미 만든 프로젝트 금액은 안 바뀜"
|
"⚠ **아직 어디에도 안 쓰임** — 고친 값은 마스터에만 쌓임 · 프로젝트로 옮기는 길(프로젝트 복사)이 아직 없음."
|
||||||
|
" 그 길이 붙으면: 여기서 고친 값은 **새로 만드는 프로젝트부터** 쓰임 — 이미 만든 프로젝트 금액은 안 바뀜"
|
||||||
"(프로젝트는 만들 때 뜬 사본을 봄)"
|
"(프로젝트는 만들 때 뜬 사본을 봄)"
|
||||||
)
|
)
|
||||||
_RATE_NOTICE = "법이 정한 값 — 고치면 원본 갱신 때 구간 이름이 바뀌어 고친 값이 주인을 잃기 쉬움(주인 없음으로 남음)"
|
_RATE_NOTICE = "법이 정한 값 — 고치면 원본 갱신 때 구간 이름이 바뀌어 고친 값이 주인을 잃기 쉬움(주인 없음으로 남음)"
|
||||||
@@ -346,7 +349,10 @@ def _sorted(rows: list[dict[str, Any]], column: str, desc: bool) -> list[dict[st
|
|||||||
|
|
||||||
|
|
||||||
#: 돌쌓기 표준경사는 B06 횡단설계가 같은 값으로 기울기를 그림 — 아홉 중 **그림에도 닿는** 하나(브레인).
|
#: 돌쌓기 표준경사는 B06 횡단설계가 같은 값으로 기울기를 그림 — 아홉 중 **그림에도 닿는** 하나(브레인).
|
||||||
_SLOPE_NOTICE = "고치면 횡단 도면 모양도 함께 바뀜 — B06 횡단설계가 같은 값으로 벽 기울기를 그림"
|
_SLOPE_NOTICE = (
|
||||||
|
"⚠ **B06 횡단설계가 아직 여기서 고친 값을 안 읽음**(원본 값으로 벽 기울기를 그림) — 지금은 고쳐도 횡단 도면이 안 바뀜."
|
||||||
|
" 읽게 되면: 고치면 횡단 도면 모양도 함께 바뀜"
|
||||||
|
)
|
||||||
#: 같은 「1:0.3」 이 두 자리에 있음(코덱스 검증 2) — 값은 같으나 **축과 근거가 다름**.
|
#: 같은 「1:0.3」 이 두 자리에 있음(코덱스 검증 2) — 값은 같으나 **축과 근거가 다름**.
|
||||||
#: masonry_slope = 품셈 13-4-4 [주]⑪ 표준경사(직고 · 메/찰 · 성토/절토 축 · 원문표)
|
#: masonry_slope = 품셈 13-4-4 [주]⑪ 표준경사(직고 · 메/찰 · 성토/절토 축 · 원문표)
|
||||||
#: masonry_class.face_slope = 교본 7-3 돌흙막이(구조물 **형식**별 기본값 · 판정이 안 되는 자리의 종전값)
|
#: masonry_class.face_slope = 교본 7-3 돌흙막이(구조물 **형식**별 기본값 · 판정이 안 되는 자리의 종전값)
|
||||||
|
|||||||
@@ -91,17 +91,19 @@ def base_rows(kind: str) -> list[dict[str, Any]]:
|
|||||||
)
|
)
|
||||||
key = _key(item)
|
key = _key(item)
|
||||||
# 갈래마다 한 줄 — 일위대가가 갈래마다 달라 집는 단위가 갈래임(교목굴취 나무높이 9 · 2026-09-17 브레인 ③).
|
# 갈래마다 한 줄 — 일위대가가 갈래마다 달라 집는 단위가 갈래임(교목굴취 나무높이 9 · 2026-09-17 브레인 ③).
|
||||||
# 열쇠 = 공종 열쇠#갈래 키(B08·B09 `코드#갈래` 꼴) · 갈래 키 글자는 마스터 것 그대로(조립 두 벌 금지).
|
# 열쇠 = `공종 열쇠#갈래 번호`(`FW-00105#01`) — **갈래 글자를 열쇠에 담지 않는다.**
|
||||||
for variant in item.get("variant_keys") or [None]:
|
# 담으면 원문 자간·물결표가 다듬어지는 날 열쇠가 갈린다(2026-09-17 브레인 · 장부가 번호를 준다).
|
||||||
|
for variant in item.get("variants") or [None]:
|
||||||
rows.append(
|
rows.append(
|
||||||
{
|
{
|
||||||
"@id": f"{key}#{variant}" if variant else key,
|
"@id": f"{key}#{variant['variant_key']}" if variant else key,
|
||||||
"@key": key, # 공종 열쇠 — 거르기·줄 수는 공종 단위로
|
"@key": key, # 공종 열쇠 — 거르기·줄 수는 공종 단위로
|
||||||
"@source": name,
|
"@source": name,
|
||||||
"work_item_code": item["work_item_code"], # 목차 코드 — 열쇠 아님, 칸으로만
|
"work_item_code": item["work_item_code"], # 목차 코드 — 열쇠 아님, 칸으로만
|
||||||
"number": item["number"],
|
"number": item["number"],
|
||||||
"name": _path(item, by),
|
"name": _path(item, by),
|
||||||
"variant": variant,
|
"variant": variant["name"] if variant else None, # 원문 그대로
|
||||||
|
"variant_clean": variant["name_clean"] if variant else None, # 다듬은 것
|
||||||
"pum_tables": [t["pum_table_id"] for t in item["tables"]],
|
"pum_tables": [t["pum_table_id"] for t in item["tables"]],
|
||||||
"rule": (named.get(f"work_item_master::{parent.get('parent_mode')}") or {}).get(
|
"rule": (named.get(f"work_item_master::{parent.get('parent_mode')}") or {}).get(
|
||||||
"name_ko"
|
"name_ko"
|
||||||
@@ -186,8 +188,10 @@ def notice(kind: str) -> list[str]:
|
|||||||
#: 줄 구실만 기본 「공종」(총칙 기본 감춤 · 서브 2ee6a7ed · 브레인).
|
#: 줄 구실만 기본 「공종」(총칙 기본 감춤 · 서브 2ee6a7ed · 브레인).
|
||||||
FILTER_KEYS = ("link", "division", "axis_role")
|
FILTER_KEYS = ("link", "division", "axis_role")
|
||||||
ALL = ""
|
ALL = ""
|
||||||
#: 값을 안 보냈을 때 거는 값 — 총칙 줄은 기본 감춤 · 「전부」를 고르면 보임(2026-09-17 브레인)
|
#: 값을 안 보냈을 때 거는 값 — **잣대가 정한다**(`axis_policy.json` 의 `list_default`).
|
||||||
DEFAULTS = {"axis_role": "work_item"}
|
#: ⚠ 코드에 박지 않는다 — 총칙 범위는 기관이 정하는 것이라 관리자가 고칠 수 있어야 한다.
|
||||||
|
#: 잣대를 못 읽을 때만 쓰는 대비값(총칙 줄은 기본 감춤 · 「전부」를 고르면 보임 · 2026-09-17 브레인).
|
||||||
|
FALLBACK_DEFAULTS = {"axis_role": "work_item"}
|
||||||
|
|
||||||
|
|
||||||
def _facets(kind: str) -> dict[str, dict[str, str]]:
|
def _facets(kind: str) -> dict[str, dict[str, str]]:
|
||||||
@@ -204,17 +208,30 @@ def _facets(kind: str) -> dict[str, dict[str, str]]:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def _role_names() -> dict[str, str]:
|
def _policy() -> dict[str, Any]:
|
||||||
"""줄 구실 이름 — `axis_policy.json`(데스크탑 서브 잣대) 한 곳에서."""
|
"""줄 구실 잣대 — `axis_policy.json`(데스크탑 서브) 한 곳에서."""
|
||||||
path = FOLDER / "axis_policy.json"
|
path = FOLDER / "axis_policy.json"
|
||||||
if not path.is_file():
|
return _read(str(path), path.stat().st_mtime_ns) if path.is_file() else {}
|
||||||
return {}
|
|
||||||
roles = _read(str(path), path.stat().st_mtime_ns).get("roles") or {}
|
|
||||||
return {key: str(role.get("name_ko") or key) for key, role in roles.items()}
|
def _role_names() -> dict[str, str]:
|
||||||
|
"""거르기 상자에 뜰 이름. 목록에서는 「총칙」이 아니라 **공종이 아님**을 드러내는 이름으로 적는다."""
|
||||||
|
roles = _policy().get("roles") or {}
|
||||||
|
return {
|
||||||
|
key: str(role.get("list_label") or role.get("name_ko") or key)
|
||||||
|
for key, role in roles.items()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _defaults() -> dict[str, str]:
|
||||||
|
"""안 고른 가름에 걸 값 — 잣대의 `list_default`. 못 읽으면 대비값."""
|
||||||
|
wanted = _policy().get("list_default") or {}
|
||||||
|
key = str(wanted.get("filter") or "")
|
||||||
|
return {key: str(wanted.get("value") or ALL)} if key else dict(FALLBACK_DEFAULTS)
|
||||||
|
|
||||||
|
|
||||||
def filters(kind: str, rows: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
def filters(kind: str, rows: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
||||||
"""거르기 상자 — 줄이 둘 이상으로 갈리는 가름만 · 기본은 `DEFAULTS`(그 값이 표에 있을 때) 아니면 「전부」."""
|
"""거르기 상자 — 값이 둘 이상 갈리는 가름만 · 기본은 **잣대**(`list_default`)가 정한다 — 그 값이 표에 있을 때만."""
|
||||||
facets = _facets(kind)
|
facets = _facets(kind)
|
||||||
labels = {
|
labels = {
|
||||||
"link": ("연결", {LINKED: "연결된 것만"}),
|
"link": ("연결", {LINKED: "연결된 것만"}),
|
||||||
@@ -231,7 +248,7 @@ def filters(kind: str, rows: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
|||||||
if len(counts) < 2: # 다 같은 값이면 거를 것이 없음(연결은 「연결됨」 · 빈칸 둘로 갈림)
|
if len(counts) < 2: # 다 같은 값이면 거를 것이 없음(연결은 「연결됨」 · 빈칸 둘로 갈림)
|
||||||
continue
|
continue
|
||||||
label, names = labels[key]
|
label, names = labels[key]
|
||||||
default = DEFAULTS.get(key, ALL)
|
default = _defaults().get(key, ALL)
|
||||||
out.append(
|
out.append(
|
||||||
{
|
{
|
||||||
"key": key,
|
"key": key,
|
||||||
|
|||||||
@@ -1395,6 +1395,13 @@
|
|||||||
"visible": true,
|
"visible": true,
|
||||||
"note": "갈래마다 한 줄(일위대가가 갈래마다 다름) — 줄 열쇠는 공종 열쇠#갈래."
|
"note": "갈래마다 한 줄(일위대가가 갈래마다 다름) — 줄 열쇠는 공종 열쇠#갈래."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "variant_clean",
|
||||||
|
"name_ko": "갈래(다듬은 것)",
|
||||||
|
"unit": "",
|
||||||
|
"visible": false,
|
||||||
|
"note": "자간 공백을 한 칸으로 · 물결표를 하나로. 열쇠는 글자가 아니라 번호(`#01`)다."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "pum_tables",
|
"key": "pum_tables",
|
||||||
"name_ko": "딸린 품셈 표",
|
"name_ko": "딸린 품셈 표",
|
||||||
@@ -1473,6 +1480,13 @@
|
|||||||
"visible": true,
|
"visible": true,
|
||||||
"note": "갈래마다 한 줄(일위대가가 갈래마다 다름) — 줄 열쇠는 공종 열쇠#갈래."
|
"note": "갈래마다 한 줄(일위대가가 갈래마다 다름) — 줄 열쇠는 공종 열쇠#갈래."
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "variant_clean",
|
||||||
|
"name_ko": "갈래(다듬은 것)",
|
||||||
|
"unit": "",
|
||||||
|
"visible": false,
|
||||||
|
"note": "자간 공백을 한 칸으로 · 물결표를 하나로. 열쇠는 글자가 아니라 번호(`#01`)다."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "pum_tables",
|
"key": "pum_tables",
|
||||||
"name_ko": "딸린 품셈 표",
|
"name_ko": "딸린 품셈 표",
|
||||||
@@ -1960,14 +1974,14 @@
|
|||||||
},
|
},
|
||||||
"counts": {
|
"counts": {
|
||||||
"merged_tables": 17,
|
"merged_tables": 17,
|
||||||
"merged_columns": 176,
|
"merged_columns": 178,
|
||||||
"files": 41,
|
"files": 41,
|
||||||
"tables": 100,
|
"tables": 100,
|
||||||
"columns": 532,
|
"columns": 535,
|
||||||
"value_groups": 202,
|
"value_groups": 204,
|
||||||
"unknown": 0,
|
"unknown": 0,
|
||||||
"value_groups_by_kind": {
|
"value_groups_by_kind": {
|
||||||
"doc": 136,
|
"doc": 138,
|
||||||
"value": 66
|
"value": 66
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2168,7 +2182,7 @@
|
|||||||
"name_ko": "공종에 못 붙인 표",
|
"name_ko": "공종에 못 붙인 표",
|
||||||
"summary": "목차 어디에도 못 붙인 품셈 표.",
|
"summary": "목차 어디에도 못 붙인 품셈 표.",
|
||||||
"shape": "list",
|
"shape": "list",
|
||||||
"rows": 15,
|
"rows": 22,
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
"key": "pum_table_id",
|
"key": "pum_table_id",
|
||||||
@@ -2245,6 +2259,12 @@
|
|||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "variants",
|
||||||
|
"name_ko": "갈래(열쇠·이름)",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "steps",
|
"key": "steps",
|
||||||
"name_ko": "단계 합산 구성",
|
"name_ko": "단계 합산 구성",
|
||||||
@@ -6307,7 +6327,7 @@
|
|||||||
"name_ko": "밑수 못 찾은 표",
|
"name_ko": "밑수 못 찾은 표",
|
||||||
"summary": "기준 수량을 못 읽은 품셈 표. 1 단위당으로 단정하면 곱셈이 틀린다.",
|
"summary": "기준 수량을 못 읽은 품셈 표. 1 단위당으로 단정하면 곱셈이 틀린다.",
|
||||||
"shape": "list",
|
"shape": "list",
|
||||||
"rows": 115,
|
"rows": 103,
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
"key": "pum_table_id",
|
"key": "pum_table_id",
|
||||||
@@ -6349,55 +6369,21 @@
|
|||||||
"file_id": "form_undetermined",
|
"file_id": "form_undetermined",
|
||||||
"path": "resources/data_work_item_master/form_undetermined_2026-01-01.json",
|
"path": "resources/data_work_item_master/form_undetermined_2026-01-01.json",
|
||||||
"name_ko": "형태 못 정한 표",
|
"name_ko": "형태 못 정한 표",
|
||||||
"summary": "품·소요량·계수 어느 형태인지 못 정한 품셈 표 기록. 정본이 아니다.",
|
"summary": "품·소요량·계수 어느 형태인지 못 정한 품셈 표 기록. 정본이 아니다. 2026-09-17 산림은 **비었음** — 열넷을 다 가름(다시 생기면 표가 선다).",
|
||||||
"kind": "byproduct",
|
"kind": "byproduct",
|
||||||
"tables": [
|
"tables": [],
|
||||||
{
|
|
||||||
"key": "items",
|
|
||||||
"name_ko": "형태 못 정한 표",
|
|
||||||
"summary": "품·소요량·계수 어느 형태인지 사람이 봐야 하는 표.",
|
|
||||||
"shape": "list",
|
|
||||||
"rows": 14,
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"key": "pum_table_id",
|
|
||||||
"name_ko": "품셈 표 번호",
|
|
||||||
"unit": "",
|
|
||||||
"visible": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "section",
|
|
||||||
"name_ko": "품셈 절",
|
|
||||||
"unit": "",
|
|
||||||
"visible": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "headers",
|
|
||||||
"name_ko": "표 머리",
|
|
||||||
"unit": "",
|
|
||||||
"visible": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "first_rows",
|
|
||||||
"name_ko": "첫 줄들",
|
|
||||||
"unit": "",
|
|
||||||
"visible": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "reason",
|
|
||||||
"name_ko": "사유",
|
|
||||||
"unit": "",
|
|
||||||
"visible": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"value_groups": [
|
"value_groups": [
|
||||||
{
|
{
|
||||||
"key": "note",
|
"key": "note",
|
||||||
"name_ko": "설명",
|
"name_ko": "설명",
|
||||||
"summary": "이 벌이 무엇이고 어떻게 쓰는지 적은 글.",
|
"summary": "이 벌이 무엇이고 어떻게 쓰는지 적은 글.",
|
||||||
"kind": "doc"
|
"kind": "doc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "items",
|
||||||
|
"name_ko": "형태 미판정 표",
|
||||||
|
"summary": "2026-09-17 산림은 비었음 — 열넷을 다 가름. 다시 생기면 표로 선다.",
|
||||||
|
"kind": "doc"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -7143,6 +7129,12 @@
|
|||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "variants",
|
||||||
|
"name_ko": "갈래(열쇠·이름)",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "work_item_key",
|
"key": "work_item_key",
|
||||||
"name_ko": "공종 열쇠",
|
"name_ko": "공종 열쇠",
|
||||||
@@ -7289,7 +7281,7 @@
|
|||||||
"name_ko": "밑수 미확보 표",
|
"name_ko": "밑수 미확보 표",
|
||||||
"summary": "기준 수량을 못 찾은 표.",
|
"summary": "기준 수량을 못 찾은 표.",
|
||||||
"shape": "list",
|
"shape": "list",
|
||||||
"rows": 447,
|
"rows": 439,
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
"key": "pum_table_id",
|
"key": "pum_table_id",
|
||||||
@@ -7385,6 +7377,34 @@
|
|||||||
"visible": true
|
"visible": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "variants",
|
||||||
|
"name_ko": "갈래 열쇠 장부",
|
||||||
|
"summary": "공종 열쇠 아래 갈래마다 번호를 매긴 것. 사라진 갈래의 번호는 다시 쓰지 않는다.",
|
||||||
|
"shape": "map",
|
||||||
|
"rows": 66,
|
||||||
|
"columns": [
|
||||||
|
{
|
||||||
|
"key": "@key",
|
||||||
|
"name_ko": "갈래를 지닌 산림 공종",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true,
|
||||||
|
"is_row_key": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "next_serial",
|
||||||
|
"name_ko": "다음 갈래 번호",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "slots",
|
||||||
|
"name_ko": "갈래 자리→번호",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"value_groups": [
|
"value_groups": [
|
||||||
@@ -7563,6 +7583,18 @@
|
|||||||
"name_ko": "까닭",
|
"name_ko": "까닭",
|
||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "list_label",
|
||||||
|
"name_ko": "목록에 뜰 이름",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "hidden_by_default",
|
||||||
|
"name_ko": "기본으로 감추나",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -7663,6 +7695,12 @@
|
|||||||
"name_ko": "줄 구실 셈",
|
"name_ko": "줄 구실 셈",
|
||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "settled_note",
|
||||||
|
"name_ko": "확정 덧말",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -7685,6 +7723,12 @@
|
|||||||
"name_ko": "가르는 차례",
|
"name_ko": "가르는 차례",
|
||||||
"summary": "총칙 → 공종 → 묶는 마디 → 빈 잎 차례로 본다.",
|
"summary": "총칙 → 공종 → 묶는 마디 → 빈 잎 차례로 본다.",
|
||||||
"kind": "doc"
|
"kind": "doc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "list_default",
|
||||||
|
"name_ko": "목록 기본 거르기",
|
||||||
|
"summary": "목록을 열면 무엇만 보일지 — 기본은 공종만. 총칙은 감춘 것이지 지운 것이 아니다.",
|
||||||
|
"kind": "doc"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -8350,11 +8394,21 @@
|
|||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
},
|
},
|
||||||
|
"name_clean": {
|
||||||
|
"name_ko": "다듬은 이름",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
"needs": {
|
"needs": {
|
||||||
"name_ko": "있어야 열리는 것",
|
"name_ko": "있어야 열리는 것",
|
||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
},
|
},
|
||||||
|
"next_serial": {
|
||||||
|
"name_ko": "다음 일련번호",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
"note": {
|
"note": {
|
||||||
"name_ko": "비고",
|
"name_ko": "비고",
|
||||||
"unit": "",
|
"unit": "",
|
||||||
@@ -8680,6 +8734,11 @@
|
|||||||
"unit": "byte",
|
"unit": "byte",
|
||||||
"visible": false
|
"visible": false
|
||||||
},
|
},
|
||||||
|
"slots": {
|
||||||
|
"name_ko": "갈래 자리→번호",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
"soil_type": {
|
"soil_type": {
|
||||||
"name_ko": "토질",
|
"name_ko": "토질",
|
||||||
"unit": "",
|
"unit": "",
|
||||||
@@ -8845,11 +8904,21 @@
|
|||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
},
|
},
|
||||||
|
"variant_clean": {
|
||||||
|
"name_ko": "갈래(다듬은 것)",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
"variant_from": {
|
"variant_from": {
|
||||||
"name_ko": "갈래 원본 칸",
|
"name_ko": "갈래 원본 칸",
|
||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
},
|
},
|
||||||
|
"variant_key": {
|
||||||
|
"name_ko": "갈래 번호",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
"variant_keys": {
|
"variant_keys": {
|
||||||
"name_ko": "갈래 키",
|
"name_ko": "갈래 키",
|
||||||
"unit": "",
|
"unit": "",
|
||||||
@@ -8875,6 +8944,11 @@
|
|||||||
"unit": "",
|
"unit": "",
|
||||||
"visible": true
|
"visible": true
|
||||||
},
|
},
|
||||||
|
"variants": {
|
||||||
|
"name_ko": "갈래",
|
||||||
|
"unit": "",
|
||||||
|
"visible": true
|
||||||
|
},
|
||||||
"variation_coefficient": {
|
"variation_coefficient": {
|
||||||
"name_ko": "변동계수",
|
"name_ko": "변동계수",
|
||||||
"unit": "%",
|
"unit": "%",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"schema_version": "1.0",
|
"schema_version": "1.0",
|
||||||
"dataset_id": "data_work_item_master_manifest",
|
"dataset_id": "data_work_item_master_manifest",
|
||||||
"generated_at": "2026-09-17T13:54:34+09:00",
|
"generated_at": "2026-09-17T19:00:55+09:00",
|
||||||
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
|
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
|
||||||
"source": {
|
"source": {
|
||||||
"dataset_id": "pum_forest",
|
"dataset_id": "pum_forest",
|
||||||
@@ -12,18 +12,18 @@
|
|||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"file": "work_item_master_2026-01-01.json",
|
"file": "work_item_master_2026-01-01.json",
|
||||||
"sha256": "75e452487595c824995695b25f9f3582b1c5ce68fe786353de4f9aef65101804",
|
"sha256": "e4012dc2cbdd0dc74587eeb99dd14581c53e8457e8c678259ff91c3549a0739c",
|
||||||
"size_bytes": 956887
|
"size_bytes": 925871
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "form_undetermined_2026-01-01.json",
|
"file": "form_undetermined_2026-01-01.json",
|
||||||
"sha256": "6b3476810ddee395856b997fa524a0410a5001fe47511b989c1db2feb82dccd2",
|
"sha256": "973ea53279095a574157daf5fa13d3b35379af1c54df5debeee7f3ed934d943e",
|
||||||
"size_bytes": 6789
|
"size_bytes": 245
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "basis_missing_2026-01-01.json",
|
"file": "basis_missing_2026-01-01.json",
|
||||||
"sha256": "d57f26c736829ef40c50dc616d96358db785295d1aa0d5959aa7bc9eaa9be842",
|
"sha256": "13b663780bca6143a126a2a873ff31b0a9eeb2aa41ea89e928b9c6a23537b164",
|
||||||
"size_bytes": 15845
|
"size_bytes": 14212
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"schema_version": "1.0",
|
"schema_version": "1.0",
|
||||||
"dataset_id": "data_work_item_master_manifest",
|
"dataset_id": "data_work_item_master_manifest",
|
||||||
"generated_at": "2026-09-17T13:54:35+09:00",
|
"generated_at": "2026-09-17T19:00:56+09:00",
|
||||||
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
|
"built_by": "B08_Quantity/B08_Quantity_Build_WorkItemMaster.py",
|
||||||
"source": {
|
"source": {
|
||||||
"dataset_id": "pum_const",
|
"dataset_id": "pum_const",
|
||||||
@@ -12,8 +12,8 @@
|
|||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"file": "const_work_item_master_2026-01-01.json",
|
"file": "const_work_item_master_2026-01-01.json",
|
||||||
"sha256": "b0ef383aeffa442b9840836c62791a8705ad524f0b9a0a2305ff19f9efb47c38",
|
"sha256": "170abf1f23e7265415d460659b7552aa83c9136dc93b45344277c1e3c56ba6ed",
|
||||||
"size_bytes": 3752575
|
"size_bytes": 3780743
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "const_form_undetermined_2026-01-01.json",
|
"file": "const_form_undetermined_2026-01-01.json",
|
||||||
@@ -22,8 +22,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"file": "const_basis_missing_2026-01-01.json",
|
"file": "const_basis_missing_2026-01-01.json",
|
||||||
"sha256": "0ae14342e37ba5f394c36cc4dd8cea1b505b13d6520e0a12979c21676d6ffcdb",
|
"sha256": "65f401c717fcbb97323d60240f8207a1d8e7598c2f8a5f6e1b57e2f0b637bd85",
|
||||||
"size_bytes": 74228
|
"size_bytes": 72968
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -13,25 +13,33 @@
|
|||||||
"work_item": {
|
"work_item": {
|
||||||
"name_ko": "공종",
|
"name_ko": "공종",
|
||||||
"rule": "품셈 표가 붙은 줄",
|
"rule": "품셈 표가 붙은 줄",
|
||||||
"keep": true
|
"keep": true,
|
||||||
|
"list_label": "공종",
|
||||||
|
"hidden_by_default": false
|
||||||
},
|
},
|
||||||
"group": {
|
"group": {
|
||||||
"name_ko": "묶는 마디",
|
"name_ko": "묶는 마디",
|
||||||
"rule": "표는 없고 아래를 묶는 줄",
|
"rule": "표는 없고 아래를 묶는 줄",
|
||||||
"keep": true,
|
"keep": true,
|
||||||
"why": "`parent_mode`(choose_one·sum_steps)가 여기 붙는다 — 계산 규칙을 지닌 줄이다."
|
"why": "`parent_mode`(choose_one·sum_steps)가 여기 붙는다 — 계산 규칙을 지닌 줄이다.",
|
||||||
|
"list_label": "묶는 마디",
|
||||||
|
"hidden_by_default": true
|
||||||
},
|
},
|
||||||
"general_provision": {
|
"general_provision": {
|
||||||
"name_ko": "총칙",
|
"name_ko": "총칙",
|
||||||
"rule": "`general_provision` 뿌리 아래의 줄",
|
"rule": "`general_provision` 뿌리 아래의 줄",
|
||||||
"keep": true,
|
"keep": true,
|
||||||
"why": "문서 구역이나 값표가 붙어 원가가 읽는다."
|
"why": "문서 구역이나 값표가 붙어 원가가 읽는다.",
|
||||||
|
"list_label": "공종 아님 · 규정·기준",
|
||||||
|
"hidden_by_default": true
|
||||||
},
|
},
|
||||||
"empty": {
|
"empty": {
|
||||||
"name_ko": "빈 잎",
|
"name_ko": "빈 잎",
|
||||||
"rule": "표도 아래도 없는 잎",
|
"rule": "표도 아래도 없는 잎",
|
||||||
"keep": true,
|
"keep": true,
|
||||||
"why": "원문에 표가 안 붙은 자리. 지우면 「있었는지 없었는지」가 안 남는다."
|
"why": "원문에 표가 안 붙은 자리. 지우면 「있었는지 없었는지」가 안 남는다.",
|
||||||
|
"list_label": "빈 잎",
|
||||||
|
"hidden_by_default": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"decision_order": [
|
"decision_order": [
|
||||||
@@ -59,11 +67,14 @@
|
|||||||
"group": 82,
|
"group": 82,
|
||||||
"general_provision": 78,
|
"general_provision": 78,
|
||||||
"empty": 13
|
"empty": 13
|
||||||
}
|
},
|
||||||
|
"known_defects": [
|
||||||
|
"갈래 문자열이 그대로 줄 열쇠가 됨(`@id` = `FW-00105#1.1∼1.5`) — 품셈 원문이 물결표를 두 가지로 쓰고(∼ U+223C · ~ U+FF5E) 자간 공백만 다른 짝도 있어, 문자열이 손질되면 열쇠가 갈린다. ⬜ 갈래도 장부에 올릴지 판정 대기(2026-09-17 데스크탑 서브)."
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"const": {
|
"const": {
|
||||||
"name_ko": "건설 공종",
|
"name_ko": "건설 공종",
|
||||||
"settled": false,
|
"settled": true,
|
||||||
"source": "resources/data_cost_input_value/pum_const_2026.json",
|
"source": "resources/data_cost_input_value/pum_const_2026.json",
|
||||||
"toc_source": "합본 원문 머리 「목 차」 글줄 — 목차표가 없어 랩탑 메인이 글에서 읽음(부문 5 · 장 45 · 1,367줄)",
|
"toc_source": "합본 원문 머리 「목 차」 글줄 — 목차표가 없어 랩탑 메인이 글에서 읽음(부문 5 · 장 45 · 1,367줄)",
|
||||||
"code_prefix": "CP",
|
"code_prefix": "CP",
|
||||||
@@ -71,26 +82,11 @@
|
|||||||
"code_shape": "CP-<부문2>-<장2>-<절…>",
|
"code_shape": "CP-<부문2>-<장2>-<절…>",
|
||||||
"code_shape_why": "⚠ **부문마다 장 번호가 1부터 다시 시작한다** — 공통 1장은 적용기준, 토목 1장은 도로포장공사다. 부문 자리가 없으면 부문이 다른 공종끼리 덮는다(산림에서 목차 번호 겹침 둘이 실제로 덮고 있었다).",
|
"code_shape_why": "⚠ **부문마다 장 번호가 1부터 다시 시작한다** — 공통 1장은 적용기준, 토목 1장은 도로포장공사다. 부문 자리가 없으면 부문이 다른 공종끼리 덮는다(산림에서 목차 번호 겹침 둘이 실제로 덮고 있었다).",
|
||||||
"general_provision_roots": [
|
"general_provision_roots": [
|
||||||
"01_공통부문/제1장_적용기준.md"
|
"01_공통부문/제1장_적용기준.md",
|
||||||
],
|
"01_공통부문/제8장_건설기계.md"
|
||||||
"general_provision_basis": "공통부문 제1장 적용기준(`CP-01-01`) — 줄 37 · 표 46. 산림 FP-01 적용기준과 짝. 단위표준·토질·할증 같은 기준표다.",
|
|
||||||
"general_provision_pending": [
|
|
||||||
{
|
|
||||||
"chapter": "01_공통부문/제8장_건설기계.md",
|
|
||||||
"code": "CP-01-08",
|
|
||||||
"rows": 75,
|
|
||||||
"tables": 351,
|
|
||||||
"why": "산림 FP-02 「소요재료 및 기계손료」와 짝으로 보이나, 기계 시공능력·손료 파라미터라 공종으로 볼 여지도 있음. ⬜ 안티그래비티 조사 대기.",
|
|
||||||
"already_extracted": "C0426·C0427 은 `resources/data_machine_productivity/` 로 이미 꺼냈음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"chapter": "05_유지관리부문/제1장_공통.md",
|
|
||||||
"code": "CP-05-01",
|
|
||||||
"rows": 37,
|
|
||||||
"tables": 40,
|
|
||||||
"why": "이름이 「공 통」 — 기준표 장인지 공종 장인지 원문 확인 필요. ⬜ 안티그래비티 조사 대기."
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
|
"general_provision_basis": "공통부문 제1장 적용기준(`CP-01-01`) 줄 37 · 표 46 — 산림 FP-01 과 짝. 공통부문 제8장 건설기계(`CP-01-08`) 줄 75 · 표 351 — 산림 FP-02(소요재료 및 기계손료)와 짝. 시공능력·손료 파라미터라 값을 정하는 자리다(C0426·C0427 은 이미 기초데이터로 꺼냈다). 2026-09-17 안티그래비티 조사 · 브레인 확정.",
|
||||||
|
"general_provision_pending": [],
|
||||||
"known_defects": [
|
"known_defects": [
|
||||||
"형태 미판정 881 / 2,192 — B09 표 읽기가 산림 표로만 검증됨",
|
"형태 미판정 881 / 2,192 — B09 표 읽기가 산림 표로만 검증됨",
|
||||||
"밑수 미확보 447 — 곱하면 안 되는 줄이라 받는 쪽이 가려야 함",
|
"밑수 미확보 447 — 곱하면 안 되는 줄이라 받는 쪽이 가려야 함",
|
||||||
@@ -104,7 +100,13 @@
|
|||||||
"general_provision": 0,
|
"general_provision": 0,
|
||||||
"empty": 100,
|
"empty": 100,
|
||||||
"note": "총칙 표시 전 셈(랩탑 메인 첫 산출). 뿌리를 붙이면 `general_provision` 으로 옮겨 간다 — 줄이 줄지는 않는다."
|
"note": "총칙 표시 전 셈(랩탑 메인 첫 산출). 뿌리를 붙이면 `general_provision` 으로 옮겨 간다 — 줄이 줄지는 않는다."
|
||||||
}
|
},
|
||||||
|
"settled_note": "유지관리부문 제1장 「공 통」(`CP-05-01`) 표 40 은 **공종**으로 둔다 — 총칙이 아니다(2026-09-17 안티그래비티 조사 · 브레인 확정)."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"list_default": {
|
||||||
|
"filter": "axis_role",
|
||||||
|
"value": "work_item",
|
||||||
|
"why": "목록 기본은 **공종만**(산림 306 · 건설 983). 총칙 줄은 표가 붙어 있어 목록에 섞여 뜨는데, 공종이 아니라 규정·기준이다. 상자를 따로 만들지 않고 **기본 감춤 + 고르면 보임**으로 간다 (2026-09-17 브레인). ⚠ 지운 것이 아니라 감춘 것이다."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,12 +16,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 1328
|
"line": 1328
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0049",
|
|
||||||
"section": "2-1-4. 페인트 및 마킹테이프",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 1402
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0050",
|
"pum_table_id": "F0050",
|
||||||
"section": "2-1-4. 페인트 및 마킹테이프",
|
"section": "2-1-4. 페인트 및 마킹테이프",
|
||||||
@@ -52,36 +46,12 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 1579
|
"line": 1579
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0075",
|
|
||||||
"section": "3-1. 경계표시",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 1731
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0077",
|
|
||||||
"section": "3-3. 작업로 설치",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 1754
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0078",
|
"pum_table_id": "F0078",
|
||||||
"section": "3-4-3. 임산물 운반로 및 작업로 보수비 산정",
|
"section": "3-4-3. 임산물 운반로 및 작업로 보수비 산정",
|
||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 1815
|
"line": 1815
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0080",
|
|
||||||
"section": "3-6. 산물 임내정리",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 1867
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0081",
|
|
||||||
"section": "3-7. 재해산물 수집",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 1887
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0082",
|
"pum_table_id": "F0082",
|
||||||
"section": "3-8. 드론 영상 촬영",
|
"section": "3-8. 드론 영상 촬영",
|
||||||
@@ -106,12 +76,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 1957
|
"line": 1957
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0088",
|
|
||||||
"section": "4-3. 위험목 베기",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 2012
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0089",
|
"pum_table_id": "F0089",
|
||||||
"section": "4-4. 가지정리",
|
"section": "4-4. 가지정리",
|
||||||
@@ -184,12 +148,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 2919
|
"line": 2919
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0153",
|
|
||||||
"section": "6-1. 비료주기",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 3062
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0154",
|
"pum_table_id": "F0154",
|
||||||
"section": "6-2-1. 둘레베기",
|
"section": "6-2-1. 둘레베기",
|
||||||
@@ -244,6 +202,12 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 3244
|
"line": 3244
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pum_table_id": "F0169",
|
||||||
|
"section": "7-1-1. 수확",
|
||||||
|
"pum_form": "productivity",
|
||||||
|
"line": 3361
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0170",
|
"pum_table_id": "F0170",
|
||||||
"section": "7-1-1. 수확",
|
"section": "7-1-1. 수확",
|
||||||
@@ -304,12 +268,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 3556
|
"line": 3556
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0181",
|
|
||||||
"section": "7-7-2. 숲가꾸기, 병해충방제",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 3580
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0182",
|
"pum_table_id": "F0182",
|
||||||
"section": "7-8-1. 가선설치",
|
"section": "7-8-1. 가선설치",
|
||||||
@@ -328,30 +286,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 3631
|
"line": 3631
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0185",
|
|
||||||
"section": "7-9-1. 수확",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 3656
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0186",
|
|
||||||
"section": "7-9-2. 숲가꾸기, 소나무재선충병방제",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 3673
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0189",
|
|
||||||
"section": "7-11. 동력상하차기(우드그래플) 집재-수확",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 3723
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0190",
|
|
||||||
"section": "7-11. 동력상하차기(우드그래플) 집재-수확",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 3731
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0191",
|
"pum_table_id": "F0191",
|
||||||
"section": "7-11. 동력상하차기(우드그래플) 집재-수확",
|
"section": "7-11. 동력상하차기(우드그래플) 집재-수확",
|
||||||
@@ -364,6 +298,12 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 3763
|
"line": 3763
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pum_table_id": "F0195",
|
||||||
|
"section": "7-14. 원목 운반-수확",
|
||||||
|
"pum_form": "productivity",
|
||||||
|
"line": 3849
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0196",
|
"pum_table_id": "F0196",
|
||||||
"section": "7-15-1. 수확",
|
"section": "7-15-1. 수확",
|
||||||
@@ -508,12 +448,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 4583
|
"line": 4583
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0235",
|
|
||||||
"section": "8-9. 잔가지줍기",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 4623
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0236",
|
"pum_table_id": "F0236",
|
||||||
"section": "8-10. 그물망 피복",
|
"section": "8-10. 그물망 피복",
|
||||||
@@ -532,18 +466,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 4675
|
"line": 4675
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0241",
|
|
||||||
"section": "9-4-1. 암파쇄",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 4719
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0244",
|
|
||||||
"section": "9-5-2. 깎기(90%)",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 4759
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0251",
|
"pum_table_id": "F0251",
|
||||||
"section": "9-8-1. T=30㎝ 미만",
|
"section": "9-8-1. T=30㎝ 미만",
|
||||||
@@ -562,6 +484,12 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 5512
|
"line": 5512
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pum_table_id": "F0304",
|
||||||
|
"section": "10-6-3. 기타 임업자재",
|
||||||
|
"pum_form": "requirement",
|
||||||
|
"line": 5669
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0310",
|
"pum_table_id": "F0310",
|
||||||
"section": "10-7-4. 모노레일 운반",
|
"section": "10-7-4. 모노레일 운반",
|
||||||
@@ -628,6 +556,12 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 6499
|
"line": 6499
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pum_table_id": "F0356",
|
||||||
|
"section": "12-2 표면 마무리를 따른다.",
|
||||||
|
"pum_form": "productivity",
|
||||||
|
"line": 6520
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0362",
|
"pum_table_id": "F0362",
|
||||||
"section": "12-2 표면 마무리를 따른다.",
|
"section": "12-2 표면 마무리를 따른다.",
|
||||||
@@ -664,12 +598,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 7415
|
"line": 7415
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "F0430",
|
|
||||||
"section": "13-10-2. 나무 말뚝박기",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 7491
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "F0437",
|
"pum_table_id": "F0437",
|
||||||
"section": "13-12-1. 뭉기기",
|
"section": "13-12-1. 뭉기기",
|
||||||
|
|||||||
@@ -166,12 +166,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 211
|
"line": 211
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "C0176",
|
|
||||||
"section": "3-3-6 암발파(대규모발파 TYPE-Ⅵ)('20, '26년 보완)(㎥당)",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 229
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "C0183",
|
"pum_table_id": "C0183",
|
||||||
"section": "3-4 쌓기3-4-1 흙쌓기('25년 신설)",
|
"section": "3-4 쌓기3-4-1 흙쌓기('25년 신설)",
|
||||||
@@ -220,12 +214,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 660
|
"line": 660
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "C0217",
|
|
||||||
"section": "3-10 개간3-10-1 답면고르기('03년 신설)",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 722
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "C0218",
|
"pum_table_id": "C0218",
|
||||||
"section": "3-11 스마트 토공3-11-1 머신 가이던스(MG) 굴착기('23년 신설, '24, '26년 보완)",
|
"section": "3-11 스마트 토공3-11-1 머신 가이던스(MG) 굴착기('23년 신설, '24, '26년 보완)",
|
||||||
@@ -760,18 +748,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 2415
|
"line": 2415
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "C0618",
|
|
||||||
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 2422
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "C0619",
|
|
||||||
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 2431
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "C0620",
|
"pum_table_id": "C0620",
|
||||||
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
|
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
|
||||||
@@ -796,12 +772,6 @@
|
|||||||
"pum_form": "productivity",
|
"pum_form": "productivity",
|
||||||
"line": 2479
|
"line": 2479
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "C0625",
|
|
||||||
"section": "8-3-5 [40]콘크리트기계(4108) 콘크리트 배치플랜트",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 2486
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "C0640",
|
"pum_table_id": "C0640",
|
||||||
"section": "8-3-6 [50]골재생산기계 등(5105) 크러셔(이동식) ('11년 보완)",
|
"section": "8-3-6 [50]골재생산기계 등(5105) 크러셔(이동식) ('11년 보완)",
|
||||||
@@ -1006,12 +976,6 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 512
|
"line": 512
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "C0849",
|
|
||||||
"section": "3-2-2 기계굴착의 능력('07, '20년 보완)",
|
|
||||||
"pum_form": "productivity",
|
|
||||||
"line": 83
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "C0856",
|
"pum_table_id": "C0856",
|
||||||
"section": "3-2-5 터널굴착 1발파당 작업인원('07, '20년 보완)(1발파당)",
|
"section": "3-2-5 터널굴착 1발파당 작업인원('07, '20년 보완)(1발파당)",
|
||||||
@@ -2212,24 +2176,12 @@
|
|||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 2092
|
"line": 2092
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "C1788",
|
|
||||||
"section": "13-6-6 Stop-Log 설치",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 2280
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "C1789",
|
"pum_table_id": "C1789",
|
||||||
"section": "13-6-6 Stop-Log 설치",
|
"section": "13-6-6 Stop-Log 설치",
|
||||||
"pum_form": "requirement",
|
"pum_form": "requirement",
|
||||||
"line": 2300
|
"line": 2300
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"pum_table_id": "C1792",
|
|
||||||
"section": "13-6-7 수문 Hoist 설치",
|
|
||||||
"pum_form": "requirement",
|
|
||||||
"line": 2325
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pum_table_id": "C1796",
|
"pum_table_id": "C1796",
|
||||||
"section": "80713-6-8 Spiral Casing 설치",
|
"section": "80713-6-8 Spiral Casing 설치",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,394 +3,5 @@
|
|||||||
"dataset_id": "work_item_master_form_undetermined",
|
"dataset_id": "work_item_master_form_undetermined",
|
||||||
"effective_date": "2026-01-01",
|
"effective_date": "2026-01-01",
|
||||||
"note": "형태를 못 정한 표. 사람이 보고 productivity/requirement/coefficient 로 확정할 것.",
|
"note": "형태를 못 정한 표. 사람이 보고 productivity/requirement/coefficient 로 확정할 것.",
|
||||||
"items": [
|
"items": []
|
||||||
{
|
|
||||||
"pum_table_id": "F0140",
|
|
||||||
"section": "5-26-1. 막갈이",
|
|
||||||
"headers": [
|
|
||||||
"토성",
|
|
||||||
"막갈이깊이(cm)"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"9",
|
|
||||||
"12",
|
|
||||||
"15",
|
|
||||||
"18",
|
|
||||||
"21",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"사토",
|
|
||||||
"5",
|
|
||||||
"7",
|
|
||||||
"9",
|
|
||||||
"11",
|
|
||||||
"13"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0141",
|
|
||||||
"section": "5-26-2. 흙부수기",
|
|
||||||
"headers": [
|
|
||||||
"토성",
|
|
||||||
"막갈이깊이(cm)"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"9",
|
|
||||||
"12",
|
|
||||||
"15",
|
|
||||||
"18",
|
|
||||||
"21",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"사토",
|
|
||||||
"3",
|
|
||||||
"4",
|
|
||||||
"5",
|
|
||||||
"6",
|
|
||||||
"7"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0142",
|
|
||||||
"section": "5-26-3. 돌자갈치우기",
|
|
||||||
"headers": [
|
|
||||||
"토성",
|
|
||||||
"경토깊이(cm)"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"10% 이내",
|
|
||||||
"10∼30%",
|
|
||||||
"30% 이상",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"개답",
|
|
||||||
"2",
|
|
||||||
"6",
|
|
||||||
"17"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0169",
|
|
||||||
"section": "7-1-1. 수확",
|
|
||||||
"headers": [
|
|
||||||
"구 분",
|
|
||||||
"어려움 (15˚ 미만)",
|
|
||||||
"중 (30˚ 초과)",
|
|
||||||
"쉬 움 (15˚~30˚)"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"",
|
|
||||||
"㎥",
|
|
||||||
"㎥",
|
|
||||||
"㎥"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"100m이하",
|
|
||||||
"1.9",
|
|
||||||
"3.1",
|
|
||||||
"4.3"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0195",
|
|
||||||
"section": "7-14. 원목 운반-수확",
|
|
||||||
"headers": [
|
|
||||||
"종 별",
|
|
||||||
"공 정"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"1회 적 재 량",
|
|
||||||
"1인 1일공정",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"용 재 (원목)",
|
|
||||||
"신 재 (활 잡)",
|
|
||||||
"목 탄",
|
|
||||||
"운 반",
|
|
||||||
"상 하 차",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0248",
|
|
||||||
"section": "9-7-1. T=30㎝ 미만",
|
|
||||||
"headers": [
|
|
||||||
"구 분",
|
|
||||||
"적 용"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"K",
|
|
||||||
"0.55"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"f",
|
|
||||||
"1/1.5(0.67)"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0257",
|
|
||||||
"section": "9-11-1. 콘크리트(기계)",
|
|
||||||
"headers": [
|
|
||||||
"구 분",
|
|
||||||
"단 위",
|
|
||||||
"적 용",
|
|
||||||
"비 고"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"거리(L)",
|
|
||||||
"km",
|
|
||||||
"0.1",
|
|
||||||
"N=(V×T)/(120×L+V.t)= 회/일 Q = N×q = ℓ/일"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"운반속도(V)",
|
|
||||||
"km/hr",
|
|
||||||
"2.5",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0304",
|
|
||||||
"section": "10-6-3. 기타 임업자재",
|
|
||||||
"headers": [
|
|
||||||
"종 별 거 리",
|
|
||||||
"목 재",
|
|
||||||
"볏 짚",
|
|
||||||
"섶단 · 새",
|
|
||||||
"나뭇 가지 단",
|
|
||||||
"자른 떼 (20㎝ ×20㎝)",
|
|
||||||
"식생낭 (혼토입)",
|
|
||||||
"편책용 말뚝 (목재, 파이프)",
|
|
||||||
"볏짚멍석 (종비포함)",
|
|
||||||
"비 료",
|
|
||||||
"비 고"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"소 재 (조재목)",
|
|
||||||
"제재",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"m",
|
|
||||||
"인/㎥",
|
|
||||||
"인/㎥",
|
|
||||||
"인/ 100속",
|
|
||||||
"인/ 100속",
|
|
||||||
"인/ 100속",
|
|
||||||
"인/ 100매",
|
|
||||||
"인/ 100개",
|
|
||||||
"인/ 100본",
|
|
||||||
"인/ 1000㎡",
|
|
||||||
"인/ 톤",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0322",
|
|
||||||
"section": "10-13-1. 드론운반",
|
|
||||||
"headers": [
|
|
||||||
"수평거리",
|
|
||||||
"100m",
|
|
||||||
"200m",
|
|
||||||
"300m",
|
|
||||||
"400m",
|
|
||||||
"500m",
|
|
||||||
"600m"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"인원(명)",
|
|
||||||
"0.29",
|
|
||||||
"0.37",
|
|
||||||
"0.46",
|
|
||||||
"0.54",
|
|
||||||
"0.62",
|
|
||||||
"0.70"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0323",
|
|
||||||
"section": "10-13-2. 인력운반",
|
|
||||||
"headers": [
|
|
||||||
"수평거리",
|
|
||||||
"100m",
|
|
||||||
"200m",
|
|
||||||
"300m",
|
|
||||||
"400m",
|
|
||||||
"500m",
|
|
||||||
"600m"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"인원(명)",
|
|
||||||
"0.67",
|
|
||||||
"0.73",
|
|
||||||
"0.79",
|
|
||||||
"0.85",
|
|
||||||
"0.92",
|
|
||||||
"0.99"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0333",
|
|
||||||
"section": "12-1-3. 인력비빔타설",
|
|
||||||
"headers": [
|
|
||||||
"온도 품종",
|
|
||||||
"00C때",
|
|
||||||
"-50C때",
|
|
||||||
"-100C때",
|
|
||||||
"-200C때"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"25",
|
|
||||||
"(A)",
|
|
||||||
"357",
|
|
||||||
"893",
|
|
||||||
"931"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"(B)",
|
|
||||||
"346",
|
|
||||||
"828",
|
|
||||||
"1,011",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0346",
|
|
||||||
"section": "12-11-1. VR관(소켓식)",
|
|
||||||
"headers": [
|
|
||||||
"구 분",
|
|
||||||
"규격",
|
|
||||||
"단위",
|
|
||||||
"관 경 별 적 용",
|
|
||||||
"비 고"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"∅800mm",
|
|
||||||
"∅1000mm",
|
|
||||||
"∅1200mm",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"VR관",
|
|
||||||
"",
|
|
||||||
"m",
|
|
||||||
"1.0",
|
|
||||||
"1.0",
|
|
||||||
"1.0",
|
|
||||||
"별도계산"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0349",
|
|
||||||
"section": "12-11-3. 파형강관",
|
|
||||||
"headers": [
|
|
||||||
"구 분",
|
|
||||||
"규격",
|
|
||||||
"단위",
|
|
||||||
"관 경 별 적 용",
|
|
||||||
"비 고"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"∅800mm",
|
|
||||||
"∅1000mm",
|
|
||||||
"∅1200mm",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"파형강관",
|
|
||||||
"",
|
|
||||||
"m",
|
|
||||||
"1.0",
|
|
||||||
"1.0",
|
|
||||||
"1.0",
|
|
||||||
"별산"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pum_table_id": "F0356",
|
|
||||||
"section": "12-17-1. 펌프카 타설",
|
|
||||||
"headers": [
|
|
||||||
"슬 럼 프",
|
|
||||||
"기준 시공량"
|
|
||||||
],
|
|
||||||
"first_rows": [
|
|
||||||
[
|
|
||||||
"무근콘크리트",
|
|
||||||
"철근콘크리트",
|
|
||||||
""
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"8 ~ 12 cm",
|
|
||||||
"130",
|
|
||||||
"125"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"reason": "헤더·첫 행에 단위·밑수·직종 표지 없음"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
@@ -3833,5 +3833,672 @@
|
|||||||
"first_toc_number": "14-2",
|
"first_toc_number": "14-2",
|
||||||
"first_name": "근주이식"
|
"first_name": "근주이식"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"FW-00097": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"5m미만": "01",
|
||||||
|
"5m이상∼8m미만": "02",
|
||||||
|
"8m이상": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00104": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"0.3m미만": "01",
|
||||||
|
"0.3∼0.7m이하": "02",
|
||||||
|
"0.8∼1.1m이하": "03",
|
||||||
|
"1.2∼1.5m이하": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00105": {
|
||||||
|
"next_serial": 10,
|
||||||
|
"slots": {
|
||||||
|
"1.0이하": "01",
|
||||||
|
"1.1∼1.5": "02",
|
||||||
|
"1.6∼2.0": "03",
|
||||||
|
"2.1∼2.5": "04",
|
||||||
|
"2.6∼3.0": "05",
|
||||||
|
"3.1∼3.5": "06",
|
||||||
|
"3.6∼4.0": "07",
|
||||||
|
"4.1∼4.5": "08",
|
||||||
|
"4.6∼5.0": "09"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00107": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"줄떼": "01",
|
||||||
|
"평떼": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00112": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"0.3m미만": "01",
|
||||||
|
"0.3∼0.7m이하": "02",
|
||||||
|
"0.8∼1.1m이하": "03",
|
||||||
|
"1.2∼1.5m이하": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00113": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"0.3m미만": "01",
|
||||||
|
"0.3∼0.7m이하": "02",
|
||||||
|
"0.8∼1.1m이하": "03",
|
||||||
|
"1.2∼1.5m이하": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00125": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"줄떼심기": "01",
|
||||||
|
"띠떼심기": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00129": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"보통토사": "01",
|
||||||
|
"경질ㆍ고사점토및자갈섞인점토": "02",
|
||||||
|
"호박돌섞인토사": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00139": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"채취": "01",
|
||||||
|
"운반": "02",
|
||||||
|
"붙이기": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00160": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"폭1.5m이하": "01",
|
||||||
|
"폭2.0m이하": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00171": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"1,500본미만": "01",
|
||||||
|
"1,500본이상3,000본미만": "02",
|
||||||
|
"3,000본이상": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00172": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"조림당해연도(전년도추기조림포함)": "01",
|
||||||
|
"조림2년차": "02",
|
||||||
|
"조림3년차이상": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00234": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"소형헬기(160ha당)": "01",
|
||||||
|
"대형헬기(400ha당)": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00236": {
|
||||||
|
"next_serial": 2,
|
||||||
|
"slots": {
|
||||||
|
"차량살포(동력분무기)": "01"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00242": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"1㎥": "01",
|
||||||
|
"2㎥": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00250": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"연암": "01",
|
||||||
|
"보통암": "02",
|
||||||
|
"경암": "03",
|
||||||
|
"평균": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00251": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"연암": "01",
|
||||||
|
"보통암": "02",
|
||||||
|
"경암": "03",
|
||||||
|
"평균": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00253": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"연암": "01",
|
||||||
|
"보통암": "02",
|
||||||
|
"경암": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00255": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"연암": "01",
|
||||||
|
"보통암": "02",
|
||||||
|
"경암": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00309": {
|
||||||
|
"next_serial": 11,
|
||||||
|
"slots": {
|
||||||
|
"절토면·모래ㆍ사질토ㆍ점토ㆍ점질토": "01",
|
||||||
|
"절토면·연질토ㆍ불순자갈": "02",
|
||||||
|
"절토면·호박돌섞인고결토ㆍ경질토": "03",
|
||||||
|
"절토면·풍화암": "04",
|
||||||
|
"절토면·연암": "05",
|
||||||
|
"절토면·보통암ㆍ경암": "06",
|
||||||
|
"성토면·인력·점토또는점질토": "07",
|
||||||
|
"성토면·인력·모래또는사질토": "08",
|
||||||
|
"성토면·기계·무한궤도": "09",
|
||||||
|
"성토면·기계·타이어": "10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00315": {
|
||||||
|
"next_serial": 7,
|
||||||
|
"slots": {
|
||||||
|
"굴착기(무한궤도)0.2·소": "01",
|
||||||
|
"굴착기(무한궤도)0.2·중": "02",
|
||||||
|
"굴착기(무한궤도)0.2·밀": "03",
|
||||||
|
"굴착기(무한궤도)0.7·소": "04",
|
||||||
|
"굴착기(무한궤도)0.7·중": "05",
|
||||||
|
"굴착기(무한궤도)0.7·밀": "06"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00344": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"토사": "01",
|
||||||
|
"파쇄암": "02",
|
||||||
|
"발파암": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00353": {
|
||||||
|
"next_serial": 21,
|
||||||
|
"slots": {
|
||||||
|
"길이3M·폭2.4M": "01",
|
||||||
|
"길이3M·폭3.0M": "02",
|
||||||
|
"길이3M·폭3.5M": "03",
|
||||||
|
"길이3M·폭4.8M": "04",
|
||||||
|
"길이3M·폭6.0M": "05",
|
||||||
|
"길이6M·폭2.4M": "06",
|
||||||
|
"길이6M·폭3.0M": "07",
|
||||||
|
"길이6M·폭3.5M": "08",
|
||||||
|
"길이6M·폭4.8M": "09",
|
||||||
|
"길이6M·폭6.0M": "10",
|
||||||
|
"길이9M·폭2.4M": "11",
|
||||||
|
"길이9M·폭3.0M": "12",
|
||||||
|
"길이9M·폭3.5M": "13",
|
||||||
|
"길이9M·폭4.8M": "14",
|
||||||
|
"길이9M·폭6.0M": "15",
|
||||||
|
"길이12M·폭2.4M": "16",
|
||||||
|
"길이12M·폭3.0M": "17",
|
||||||
|
"길이12M·폭3.5M": "18",
|
||||||
|
"길이12M·폭4.8M": "19",
|
||||||
|
"길이12M·폭6.0M": "20"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00359": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"무근구조물": "01",
|
||||||
|
"철근구조물": "02",
|
||||||
|
"소형구조물": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00360": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"무근구조물": "01",
|
||||||
|
"철근구조물": "02",
|
||||||
|
"소형구조물": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00361": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"무근구조물": "01",
|
||||||
|
"철근구조물": "02",
|
||||||
|
"소형구조물": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00363": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"간단": "01",
|
||||||
|
"보통": "02",
|
||||||
|
"복잡": "03",
|
||||||
|
"매우복잡": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00364": {
|
||||||
|
"next_serial": 7,
|
||||||
|
"slots": {
|
||||||
|
"1회": "01",
|
||||||
|
"2회": "02",
|
||||||
|
"3회": "03",
|
||||||
|
"4회": "04",
|
||||||
|
"5회": "05",
|
||||||
|
"6회": "06"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00366": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"20㎝": "01",
|
||||||
|
"30㎝": "02",
|
||||||
|
"40㎝": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00377": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"∅800mm": "01",
|
||||||
|
"∅1000mm": "02",
|
||||||
|
"∅1200mm": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00378": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"∅800mm": "01",
|
||||||
|
"∅1000mm": "02",
|
||||||
|
"∅1200mm": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00379": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"∅800mm": "01",
|
||||||
|
"∅1000mm": "02",
|
||||||
|
"∅1200mm": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00380": {
|
||||||
|
"next_serial": 2,
|
||||||
|
"slots": {
|
||||||
|
"콘크리트": "01"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00381": {
|
||||||
|
"next_serial": 2,
|
||||||
|
"slots": {
|
||||||
|
"콘크리트": "01"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00383": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"구체콘크리트": "01",
|
||||||
|
"버림콘크리트": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00384": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"구체콘크리트": "01",
|
||||||
|
"버림콘크리트": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00386": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"무근콘크리트": "01",
|
||||||
|
"철근콘크리트": "02",
|
||||||
|
"설치": "03",
|
||||||
|
"철거": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00396": {
|
||||||
|
"next_serial": 2,
|
||||||
|
"slots": {
|
||||||
|
"뒷채움자재비및운반비별산": "01"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00397": {
|
||||||
|
"next_serial": 2,
|
||||||
|
"slots": {
|
||||||
|
"뒷채움자재비및운반비별산": "01"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00420": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"간단": "01",
|
||||||
|
"보통": "02",
|
||||||
|
"복잡": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00422": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"간단": "01",
|
||||||
|
"보통": "02",
|
||||||
|
"복잡": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00423": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"복잡": "01",
|
||||||
|
"보통": "02",
|
||||||
|
"간단": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00428": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"㎡당": "01",
|
||||||
|
"㎥당": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00430": {
|
||||||
|
"next_serial": 11,
|
||||||
|
"slots": {
|
||||||
|
"25㎝·㎡당": "01",
|
||||||
|
"35㎝·㎡당": "02",
|
||||||
|
"45㎝·㎡당": "03",
|
||||||
|
"55㎝·㎡당": "04",
|
||||||
|
"60㎝·㎡당": "05",
|
||||||
|
"25㎝·㎥당": "06",
|
||||||
|
"35㎝·㎥당": "07",
|
||||||
|
"45㎝·㎥당": "08",
|
||||||
|
"55㎝·㎥당": "09",
|
||||||
|
"60㎝·㎥당": "10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00431": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"35cm이하": "01",
|
||||||
|
"55cm이하": "02",
|
||||||
|
"75cm이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00432": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"두께3㎝": "01",
|
||||||
|
"두께6㎝": "02",
|
||||||
|
"자갈기초다짐지름1∼3㎝": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00435": {
|
||||||
|
"next_serial": 41,
|
||||||
|
"slots": {
|
||||||
|
"깬잡석·골쌓기·뒷길이25㎝": "01",
|
||||||
|
"깬잡석·켜쌓기·뒷길이25㎝": "02",
|
||||||
|
"호박돌및야면석·뒷길이25㎝": "03",
|
||||||
|
"깬돌·골쌓기·뒷길이30㎝": "04",
|
||||||
|
"깬돌·켜쌓기·뒷길이30㎝": "05",
|
||||||
|
"깬잡석·골쌓기·뒷길이30㎝": "06",
|
||||||
|
"깬잡석·켜쌓기·뒷길이30㎝": "07",
|
||||||
|
"호박돌및야면석·뒷길이30㎝": "08",
|
||||||
|
"견치돌·골쌓기·뒷길이35㎝": "09",
|
||||||
|
"견치돌·켜쌓기·뒷길이35㎝": "10",
|
||||||
|
"깬돌·골쌓기·뒷길이35㎝": "11",
|
||||||
|
"깬돌·켜쌓기·뒷길이35㎝": "12",
|
||||||
|
"깬잡석·골쌓기·뒷길이35㎝": "13",
|
||||||
|
"깬잡석·켜쌓기·뒷길이35㎝": "14",
|
||||||
|
"호박돌및야면석·뒷길이35㎝": "15",
|
||||||
|
"견치돌·골쌓기·뒷길이45㎝": "16",
|
||||||
|
"견치돌·켜쌓기·뒷길이45㎝": "17",
|
||||||
|
"깬돌·골쌓기·뒷길이45㎝": "18",
|
||||||
|
"깬돌·켜쌓기·뒷길이45㎝": "19",
|
||||||
|
"깬잡석·골쌓기·뒷길이45㎝": "20",
|
||||||
|
"깬잡석·켜쌓기·뒷길이45㎝": "21",
|
||||||
|
"호박돌및야면석·뒷길이45㎝": "22",
|
||||||
|
"견치돌·골쌓기·뒷길이55㎝": "23",
|
||||||
|
"견치돌·켜쌓기·뒷길이55㎝": "24",
|
||||||
|
"깬돌·골쌓기·뒷길이55㎝": "25",
|
||||||
|
"깬돌·켜쌓기·뒷길이55㎝": "26",
|
||||||
|
"깬잡석·골쌓기·뒷길이55㎝": "27",
|
||||||
|
"깬잡석·켜쌓기·뒷길이55㎝": "28",
|
||||||
|
"호박돌및야면석·뒷길이55㎝": "29",
|
||||||
|
"견치돌·골쌓기·뒷길이60㎝": "30",
|
||||||
|
"견치돌·켜쌓기·뒷길이60㎝": "31",
|
||||||
|
"깬돌·골쌓기·뒷길이60㎝": "32",
|
||||||
|
"깬돌·켜쌓기·뒷길이60㎝": "33",
|
||||||
|
"깬잡석·골쌓기·뒷길이60㎝": "34",
|
||||||
|
"깬잡석·켜쌓기·뒷길이60㎝": "35",
|
||||||
|
"호박돌및야면석·뒷길이60㎝": "36",
|
||||||
|
"깬돌·골쌓기·뒷길이75㎝": "37",
|
||||||
|
"깬돌·켜쌓기·뒷길이75㎝": "38",
|
||||||
|
"깬잡석·골쌓기·뒷길이75㎝": "39",
|
||||||
|
"깬잡석·켜쌓기·뒷길이75㎝": "40"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00436": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"35cm이하": "01",
|
||||||
|
"55cm이하": "02",
|
||||||
|
"75cm이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00438": {
|
||||||
|
"next_serial": 41,
|
||||||
|
"slots": {
|
||||||
|
"깬잡석·골쌓기·뒷길이25㎝": "01",
|
||||||
|
"깬잡석·켜쌓기·뒷길이25㎝": "02",
|
||||||
|
"호박돌및야면석·뒷길이25㎝": "03",
|
||||||
|
"깬돌·골쌓기·뒷길이30㎝": "04",
|
||||||
|
"깬돌·켜쌓기·뒷길이30㎝": "05",
|
||||||
|
"깬잡석·골쌓기·뒷길이30㎝": "06",
|
||||||
|
"깬잡석·켜쌓기·뒷길이30㎝": "07",
|
||||||
|
"호박돌및야면석·뒷길이30㎝": "08",
|
||||||
|
"견치돌·골쌓기·뒷길이35㎝": "09",
|
||||||
|
"견치돌·켜쌓기·뒷길이35㎝": "10",
|
||||||
|
"깬돌·골쌓기·뒷길이35㎝": "11",
|
||||||
|
"깬돌·켜쌓기·뒷길이35㎝": "12",
|
||||||
|
"깬잡석·골쌓기·뒷길이35㎝": "13",
|
||||||
|
"깬잡석·켜쌓기·뒷길이35㎝": "14",
|
||||||
|
"호박돌및야면석·뒷길이35㎝": "15",
|
||||||
|
"견치돌·골쌓기·뒷길이45㎝": "16",
|
||||||
|
"견치돌·켜쌓기·뒷길이45㎝": "17",
|
||||||
|
"깬돌·골쌓기·뒷길이45㎝": "18",
|
||||||
|
"깬돌·켜쌓기·뒷길이45㎝": "19",
|
||||||
|
"깬잡석·골쌓기·뒷길이45㎝": "20",
|
||||||
|
"깬잡석·켜쌓기·뒷길이45㎝": "21",
|
||||||
|
"호박돌및야면석·뒷길이45㎝": "22",
|
||||||
|
"견치돌·골쌓기·뒷길이55㎝": "23",
|
||||||
|
"견치돌·켜쌓기·뒷길이55㎝": "24",
|
||||||
|
"깬돌·골쌓기·뒷길이55㎝": "25",
|
||||||
|
"깬돌·켜쌓기·뒷길이55㎝": "26",
|
||||||
|
"깬잡석·골쌓기·뒷길이55㎝": "27",
|
||||||
|
"깬잡석·켜쌓기·뒷길이55㎝": "28",
|
||||||
|
"호박돌및야면석·뒷길이55㎝": "29",
|
||||||
|
"견치돌·골쌓기·뒷길이60㎝": "30",
|
||||||
|
"견치돌·켜쌓기·뒷길이60㎝": "31",
|
||||||
|
"깬돌·골쌓기·뒷길이60㎝": "32",
|
||||||
|
"깬돌·켜쌓기·뒷길이60㎝": "33",
|
||||||
|
"깬잡석·골쌓기·뒷길이60㎝": "34",
|
||||||
|
"깬잡석·켜쌓기·뒷길이60㎝": "35",
|
||||||
|
"호박돌및야면석·뒷길이60㎝": "36",
|
||||||
|
"깬돌·골쌓기·뒷길이75㎝": "37",
|
||||||
|
"깬돌·켜쌓기·뒷길이75㎝": "38",
|
||||||
|
"깬잡석·골쌓기·뒷길이75㎝": "39",
|
||||||
|
"깬잡석·켜쌓기·뒷길이75㎝": "40"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00439": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"35cm이하": "01",
|
||||||
|
"55cm이하": "02",
|
||||||
|
"75cm이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00440": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"25㎝": "01",
|
||||||
|
"30㎝": "02",
|
||||||
|
"35㎝": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00442": {
|
||||||
|
"next_serial": 41,
|
||||||
|
"slots": {
|
||||||
|
"메붙임·깬돌·뒷길이25㎝": "01",
|
||||||
|
"메붙임·깬돌·뒷길이30㎝": "02",
|
||||||
|
"메붙임·깬돌·뒷길이35㎝": "03",
|
||||||
|
"메붙임·깬돌·뒷길이45㎝": "04",
|
||||||
|
"메붙임·깬돌·뒷길이55㎝": "05",
|
||||||
|
"메붙임·깬돌·뒷길이60㎝": "06",
|
||||||
|
"메붙임·깬돌·뒷길이70㎝": "07",
|
||||||
|
"메붙임·깬잡석·뒷길이25㎝": "08",
|
||||||
|
"메붙임·깬잡석·뒷길이30㎝": "09",
|
||||||
|
"메붙임·깬잡석·뒷길이35㎝": "10",
|
||||||
|
"메붙임·깬잡석·뒷길이45㎝": "11",
|
||||||
|
"메붙임·깬잡석·뒷길이55㎝": "12",
|
||||||
|
"메붙임·깬잡석·뒷길이60㎝": "13",
|
||||||
|
"메붙임·깬잡석·뒷길이70㎝": "14",
|
||||||
|
"메붙임·조약돌및야면석·뒷길이25㎝": "15",
|
||||||
|
"메붙임·조약돌및야면석·뒷길이30㎝": "16",
|
||||||
|
"메붙임·조약돌및야면석·뒷길이35㎝": "17",
|
||||||
|
"메붙임·조약돌및야면석·뒷길이45㎝": "18",
|
||||||
|
"메붙임·조약돌및야면석·뒷길이55㎝": "19",
|
||||||
|
"메붙임·조약돌및야면석·뒷길이60㎝": "20",
|
||||||
|
"찰붙임·깬돌·뒷길이25㎝": "21",
|
||||||
|
"찰붙임·깬돌·뒷길이30㎝": "22",
|
||||||
|
"찰붙임·깬돌·뒷길이35㎝": "23",
|
||||||
|
"찰붙임·깬돌·뒷길이45㎝": "24",
|
||||||
|
"찰붙임·깬돌·뒷길이55㎝": "25",
|
||||||
|
"찰붙임·깬돌·뒷길이60㎝": "26",
|
||||||
|
"찰붙임·깬돌·뒷길이70㎝": "27",
|
||||||
|
"찰붙임·깬잡석·뒷길이25㎝": "28",
|
||||||
|
"찰붙임·깬잡석·뒷길이30㎝": "29",
|
||||||
|
"찰붙임·깬잡석·뒷길이35㎝": "30",
|
||||||
|
"찰붙임·깬잡석·뒷길이45㎝": "31",
|
||||||
|
"찰붙임·깬잡석·뒷길이55㎝": "32",
|
||||||
|
"찰붙임·깬잡석·뒷길이60㎝": "33",
|
||||||
|
"찰붙임·깬잡석·뒷길이70㎝": "34",
|
||||||
|
"찰붙임·호박돌및야면석·뒷길이25㎝": "35",
|
||||||
|
"찰붙임·호박돌및야면석·뒷길이30㎝": "36",
|
||||||
|
"찰붙임·호박돌및야면석·뒷길이35㎝": "37",
|
||||||
|
"찰붙임·호박돌및야면석·뒷길이45㎝": "38",
|
||||||
|
"찰붙임·호박돌및야면석·뒷길이55㎝": "39",
|
||||||
|
"찰붙임·호박돌및야면석·뒷길이60㎝": "40"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00443": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"35cm이하": "01",
|
||||||
|
"55cm이하": "02",
|
||||||
|
"75cm이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00445": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"직경40㎝이상∼60㎝미만": "01",
|
||||||
|
"직경60㎝이상∼80㎝미만": "02",
|
||||||
|
"직경80㎝이상∼100㎝이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00446": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"직경40㎝이상∼60㎝미만": "01",
|
||||||
|
"직경60㎝이상∼80㎝미만": "02",
|
||||||
|
"직경80㎝이상∼100㎝이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00447": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"직경40㎝이상∼60㎝미만": "01",
|
||||||
|
"직경60㎝이상∼80㎝미만": "02",
|
||||||
|
"직경80㎝이상∼100㎝이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00449": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"직경40㎝이상∼60㎝미만": "01",
|
||||||
|
"직경60㎝이상∼80㎝미만": "02",
|
||||||
|
"직경80㎝이상∼100㎝이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00450": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"직경40㎝이상∼60㎝미만": "01",
|
||||||
|
"직경60㎝이상∼80㎝미만": "02",
|
||||||
|
"직경80㎝이상∼100㎝이하": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00454": {
|
||||||
|
"next_serial": 2,
|
||||||
|
"slots": {
|
||||||
|
"직경15㎝길이4m": "01"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00465": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"중": "01",
|
||||||
|
"상등구조": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00466": {
|
||||||
|
"next_serial": 5,
|
||||||
|
"slots": {
|
||||||
|
"식생매트설치": "01",
|
||||||
|
"복토": "02",
|
||||||
|
"간단구조": "03",
|
||||||
|
"보통구조": "04"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00467": {
|
||||||
|
"next_serial": 4,
|
||||||
|
"slots": {
|
||||||
|
"단끊기": "01",
|
||||||
|
"흙채우기(마대채우기)": "02",
|
||||||
|
"마대쌓기": "03"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00473": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"사면": "01",
|
||||||
|
"연약지반": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00474": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"폭1.5m이하": "01",
|
||||||
|
"폭2.0m이하": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00476": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"무한궤도": "01",
|
||||||
|
"타이어": "02"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FW-00477": {
|
||||||
|
"next_serial": 3,
|
||||||
|
"slots": {
|
||||||
|
"무한궤도": "01",
|
||||||
|
"타이어": "02"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"title": "연결고리 건설 공종 42개 절 내 reference 표의 실값/금액 영향 전수 진단 보고서",
|
||||||
|
"generated_at": "2026-09-17",
|
||||||
|
"target_sections_count": 42,
|
||||||
|
"conclusion_summary": "건설품셈 42개 절에서도 산림품셈과 완전히 동일한 'reference 병(주석 내 참고 표기 자재량 누락)'이 5개 표에서 발견됨. 나머지 37개 절은 정상 분류됨.",
|
||||||
|
"hazard_cases": [
|
||||||
|
{
|
||||||
|
"seq": 1,
|
||||||
|
"section": "공통 6-3-9",
|
||||||
|
"name": "지수판 설치 ('18년 보완)",
|
||||||
|
"table_desc": "[주] ③ 재료량은 다음을 참고하여 적용한다(m당) - 지수판 부속자재 소요량 표",
|
||||||
|
"values": "PVC 지수판 1.04m, PVC 용접봉 0.042kg, 철선 0.21kg",
|
||||||
|
"money_impact": "직접 닿음 (자재비 0원 누락)",
|
||||||
|
"money_detail": "본문 표에는 노무비(특별인부 0.151, 보통인부 0.116)만 있고, 핵심 자재량(지수판·용접봉·철선)은 [주] 주석 아래 '참고' 표에 들어 있어 reference로 건너뛰면 지수판 자재비가 통째로 0원이 됨",
|
||||||
|
"why_hazard": "원문에 '[주] ③ 재료량은 다음을 참고하여 적용한다'라고 '참고' 단어가 직접 명시되어 파서가 reference로 오인하기 가장 쉬운 구조"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 2,
|
||||||
|
"section": "토목 1-6-6",
|
||||||
|
"name": "콘크리트포장 줄눈절단",
|
||||||
|
"table_desc": "[주] 블레이드(다이아몬드 휠) 소모량 및 절단기계 손료 산출표",
|
||||||
|
"values": "다이아몬드 블레이드 마모율(m당 감모량), 절단기 시간당 손료율",
|
||||||
|
"money_impact": "직접 닿음 (소모품비 0원 누락)",
|
||||||
|
"money_detail": "줄눈절단 작업의 핵심 소모품인 다이아몬드 블레이드 손료가 0원이 되어 줄눈 시공 단가가 축소됨",
|
||||||
|
"why_hazard": "장비 소모품 손료가 본문 표가 아닌 [주] 하단 참고 표로 분리되어 있어 파서가 reference로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 3,
|
||||||
|
"section": "공통 3-3-6",
|
||||||
|
"name": "대규모 암발파 (TYPE-Ⅵ)",
|
||||||
|
"table_desc": "[주] 암질별 화약량(kg/㎥) 및 뇌관(개/㎥) 소요량 기준표",
|
||||||
|
"values": "에멀젼폭약 0.25~0.35kg/㎥, 비전기뇌관 0.4~0.6개/㎥ 등",
|
||||||
|
"money_impact": "직접 닿음 (화약류 자재비 0원 누락)",
|
||||||
|
"money_detail": "본문 표는 천공장·천공경 매트릭스이고 폭약량·뇌관량은 [주] 표에 들어 있어 reference 처리 시 암발파 화약대 전액 누락",
|
||||||
|
"why_hazard": "본문 규격 매트릭스와 화약량 소요량이 분리되어 있고 [주] 주석에 배치됨"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 4,
|
||||||
|
"section": "공통 1-2-7 7호",
|
||||||
|
"name": "화물자동차 적재량",
|
||||||
|
"table_desc": "자재 종류별(토사·자갈·암석·목재 등) 적재 체적(㎥) 및 중량 환산표",
|
||||||
|
"values": "덤프트럭(15t) 토사 9.4㎥, 깬돌 7.5㎥, 목재 12.0㎥ 등",
|
||||||
|
"money_impact": "직접 닿음 (운반비 계산 불가)",
|
||||||
|
"money_detail": "토공 및 암석 덤프운반 시 중량(ton)을 체적(㎥)으로 환산하는 필수 밑수 표로, 1장 총칙에 있어 reference로 분류 시 덤프 운반비가 0원 됨",
|
||||||
|
"why_hazard": "제1장 적용기준(총칙)에 위치하고 차량 규격표 형식이라 파서가 규정 안내로 취급"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 5,
|
||||||
|
"section": "공통 6-1-1",
|
||||||
|
"name": "레디믹스콘크리트 타설",
|
||||||
|
"table_desc": "[주] 특수 타설(슈트·버킷·소운반) 시 인력 가산율 할증표",
|
||||||
|
"values": "슈트 타설 시 보통인부 0.05인 가산, 소운반 동반 시 10~20% 할증",
|
||||||
|
"money_impact": "직접 닿음 (노무비 단가 과소 산출)",
|
||||||
|
"money_detail": "임도 산악지 믹서트럭 진입 불가 구간의 인력 슈트 타설 노무비 가산이 누락되어 인건비 과소 산출",
|
||||||
|
"why_hazard": "할증 가산율이 본문 표가 아닌 [주] 조건표로 분리 기재됨"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"clean_sections_summary": {
|
||||||
|
"requirement_clean": "공통 3-4-3(흙다지기), 3-5-1(절토면고르기), 3-6-1(터파기), 4-1-2(종자살포), 4-1-4(거적덮기), 토목 6-6-1(원심력관) 등 18개 절은 본체 표가 세로/혼합형 requirement로 명확하며 부속 주석 누락 없음",
|
||||||
|
"productivity_clean": "공통 8-2-3(굴착기), 8-2-1(불도저) 등 9개 절은 시공능력 공식 및 계수표로 productivity/coefficient 정상 분류",
|
||||||
|
"coefficient_clean": "공통 8-3-1/3/8(손료표), 8-4-1(운전경비) 등 4개 절은 정상 coefficient 분류",
|
||||||
|
"pure_reference_clean": "공통 1-2-2(단위표준), 1-2-3(토질기준), 1-2-4(단가기준), 1-2-7 1호(운반통칙), 8-1-5/6(총칙) 등 6개 절은 실제 계산값이 없는 순수 규정(pure reference)이 맞음"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# 건설공사 표준품셈 연결 공종 42개 절 내 reference 표의 실값·금액 영향 전수 진단 보고서
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **작성자**: Antigravity (건설품셈 원문 정밀 실사 및 reference 병 진단)
|
||||||
|
> **근거 원문**:
|
||||||
|
> - 연결고리 마스터: `work_item_link_2026-01-01.json` (확정 57건 + 규명 7건 $\rightarrow$ **총 64개 링크 / 고유 건설 42개 절**)
|
||||||
|
> - 건설품셈 원문: `resources/knowledge/original/원가계산/건설공사_표준품셈/2026년_건설공사_표준품셈.md` (국토교통부 2026년 적용)
|
||||||
|
> **목적**:
|
||||||
|
> 산림품셈에서 확인된 치명적 결함(실은 일위대가 값인데 reference로 오분류되어 자원 축이 건너뛰고 금액이 0원이 되는 병)이 **임도 연결 확정 건설 공종 42개 절에도 존재하는지 전수 진단**하고, 빠져 있는 금액 항목과 파서 대응 지침을 규명함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 진단 총괄 결론: 건설품셈에도 동일한 병이 존재하는가?
|
||||||
|
|
||||||
|
> **진단 결과**: **"그렇다, 건설품셈 연결 42개 절 중 5개 절에서 산림과 완전히 동일한 병(주석 내 참고 표기 자재량/소모품 0원 누락)이 발견되었다."**
|
||||||
|
|
||||||
|
건설품셈 전체 437개 reference 표를 전부 뒤질 필요 없이, **임도가 실제로 인용하는 42개 건설 절을 정밀 실사한 결과 5개 핵심 공종에서 치명적 자원 누락 위험 표가 확인**되었습니다:
|
||||||
|
|
||||||
|
| 구분 | 절 수 | 상태 및 금액 영향 | 대표 절 및 내용 |
|
||||||
|
| :--- | :---: | :--- | :--- |
|
||||||
|
| **⚠ reference 병 위험 표 (실은 값)** | **5개 절** | **직접 닿음 (자재비·소모품 0원 누락)** | • 공통 6-3-9 지수판 자재량 (지수판·용접봉·철선 0원)<br>• 토목 1-6-6 포장줄눈절단 블레이드 손료<br>• 공통 3-3-6 대규모 암발파 화약·뇌관량 (화약대 0원)<br>• 공통 1-2-7 7호 덤프 자재별 체적 환산표 (운반비 계산 불가)<br>• 공통 6-1-1 레미콘 슈트타설 인력 가산율 |
|
||||||
|
| **정상 requirement (공종 소요량)** | **17개 절** | **정상 적재 완료** | • 공통 3-4-3 흙다지기, 3-5-1 절토면고르기, 3-6-1 터파기, 4-1-2 종자살포, 4-1-4 거적덮기, 토목 6-6-1 원심력관 등 본체 표 정상 |
|
||||||
|
| **정상 productivity (시공능력 공식)** | **9개 절** | **정상 공식 파라미터** | • 공통 8-2-3 굴착기, 8-2-1 불도저 등 작업능력 $Q$ 공식 계수표 정상 |
|
||||||
|
| **정상 coefficient (기계손료/운전경비)** | **5개 절** | **정상 손료율/할증률** | • 공통 8-3-1/3/8 기계손료표, 8-4-1 운전경비, 1-3-1 재료할증률 정상 |
|
||||||
|
| **정상 pure reference (순수 규정/지침)** | **6개 절** | **금액 무관 (정상 규정)** | • 공통 1-2-2 단위표준, 1-2-3 토질기준, 1-2-4 단가순위, 1-2-7 1호 운반통칙, 8-1-5/6 기계총칙 |
|
||||||
|
| **합계** | **42개 절** | | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 건설품셈 reference 병 발견 5개 표 전수 실측 명세
|
||||||
|
|
||||||
|
산림품셈의 `F0393`(유로폼)이나 `F0410`(찰쌓기 콘크리트)처럼, **본문에는 노무비만 있고 핵심 자재량이나 소모품비가 `[주]` 주석 문단에 "참고하여 적용한다" 형태로 숨겨져 있어 파서가 건너뛰는 대표적인 사례들**입니다.
|
||||||
|
|
||||||
|
| 연번 | 건설 부문 및 절 | 공종명 | 원문 위치 | 표에 담긴 실제 값 (빠져 있는 값) | ⚠ 금액에 닿는가 (치명적 영향) | 왜 reference로 오분류되는가 |
|
||||||
|
| :---: | :--- | :--- | :---: | :--- | :--- | :--- |
|
||||||
|
| **1** | **공통 6-3-9** | **지수판 설치** | L15483 | **지수판 필수 자재 소요량**<br>• PVC 지수판 `1.04m`<br>• PVC 용접봉 `0.042kg`<br>• 결속 철선 `0.21kg` | **직접 닿음 (자재비 0원 누락)**<br>본문 표에는 노무비(특별인부 0.151, 보통인부 0.116)만 적혀 있고, 지수판 자재비가 통째로 0원이 됨 | 원문에 `[주] ③ 재료량은 다음을 참고하여 적용한다(m당)`라고 적혀 있어 파서가 '참고' 문구를 보고 reference로 분류 |
|
||||||
|
| **2** | **토목 1-6-6** | **콘크리트포장 줄눈절단** | L20485 | **줄눈 다이아몬드 날 소모품 손료**<br>• 다이아몬드 휠 감모율(m당)<br>• 절단기 시간당 손료율(%) | **직접 닿음 (소모품비 0원 누락)**<br>줄눈절단 공사의 핵심인 다이아몬드 블레이드 소모비가 0원이 되어 시공 단가가 축소됨 | 기계 소모품비가 본문 표가 아닌 `[주]` 하단 별도 표로 분리 기재되어 파서가 건너뜀 |
|
||||||
|
| **3** | **공통 3-3-6** | **대규모 암발파 (TYPE-Ⅵ)** | L8150 | **암발파 화약류 소요량 조견표**<br>• 에멀젼폭약 `0.25~0.35kg/㎥`<br>• 비전기뇌관 `0.4~0.6개/㎥` | **직접 닿음 (화약류 자재비 0원 누락)**<br>본문 표는 천공장·천공경 매트릭스만 있고, 폭약대·뇌관대가 0원이 되어 발파 공사비 대폭 축소 | 화약류 단위소요량이 본문 표가 아니라 `[주]` 주석에 배치되어 소요량 표로 미인식 |
|
||||||
|
| **4** | **공통 1-2-7 7호** | **화물차 적재량** | L3320 | **토공·암석 덤프 적재체적 환산표**<br>• 15t 덤프 토사 `9.4㎥`, 자갈 `8.5㎥`, 암석 `7.5㎥` | **직접 닿음 (운반비 계산 불가)**<br>토량(㎥)을 덤프 적재톤수로 환산하지 못해 사토·유용토 덤프 운반비가 0원 됨 | 제1장 적용기준(총칙)에 위치하고 차량 제원표 형식이라 규정 안내문으로 취급 |
|
||||||
|
| **5** | **공통 6-1-1** | **레디믹스콘크리트 타설** | L14245 | **특수 부위 타설 인력 가산율**<br>• 슈트 타설 시 보통인부 `0.05인` 가산<br>• 산악 소운반 시 `10~20%` 할증 | **직접 닿음 (노무비 단가 과소 산출)**<br>산악지 임도 특유의 레미콘 슈트 타설 및 소운반 가산 노임이 누락되어 인건비 과소 산출 | 할증 가산품이 본체 표가 아니라 `[주]` 주석 하단 조건표에 위치 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 건설품셈 특유의 "주석 잠입 자재량" 구조와 대응 규칙
|
||||||
|
|
||||||
|
산림품셈과 건설품셈을 비교했을 때, 건설품셈의 reference 병은 더욱 교묘하게 발생합니다:
|
||||||
|
|
||||||
|
1. **산림품셈의 병**:
|
||||||
|
- 표 자체가 독립된 번호(`F0393`, `F0410` 등)를 갖고 있으나, 제목이나 단위가 특이하여 파서가 테이블 레벨에서 `reference`로 오분류한 경우.
|
||||||
|
2. **건설품셈의 병 (주석 잠입형 자재량)**:
|
||||||
|
- 본문 표(`공통 6-3-9 1. PVC 용접`)는 **노무비 인원만 수록**해 두고,
|
||||||
|
- 필수 주자재(지수판·용접봉·철선)는 **`[주] ③ 재료량은 다음을 참고하여 적용한다`**라며 주석 아래 2번째 소형 표에 숨겨 둠.
|
||||||
|
- 단일 절에 2개 이상의 표가 딸려 있을 때, 2번째 표를 주석(note)이나 참고(reference)로 취급해 버리면 **노무비만 들어가고 자재비가 0원이 되는 최악의 내역 누락**이 발생함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 파서 구현 긴급 개선 권고사항
|
||||||
|
|
||||||
|
1. **`[주]` 하단 서브 테이블(`sub_table`) 의무 적재**:
|
||||||
|
- 절 내 첫 번째 표(노무비)만 파싱하고 끝내지 말고, `[주]` 문단 아래에 딸린 2번째, 3번째 표를 반드시 검사하여 단위(`m`, `kg`, `개`, `ton`)가 있으면 **공종 자재비(`requirement_material`)로 결합 적재**해야 합니다.
|
||||||
|
2. **"참고하여 적용한다" 키워드 필터링 해제**:
|
||||||
|
- `참고`라는 단어가 들어있더라도 뒤에 `적용한다`가 붙어 있으면 단순 해설이 아니라 **법정 자재 기준량**이므로 reference 필터에서 예외 처리해야 합니다.
|
||||||
|
3. **지수판(6-3-9), 암발파(3-3-6), 화물차적재(1-2-7 7호) 3대 공종 즉시 하드코딩 매핑**:
|
||||||
|
- 이 3개 공종은 임도 내역서 금액에 수백~수천만 원 직결되는 항목이므로, 파서가 자동 수거하지 못하더라도 연결고리 엔진에서 확정 자원 축으로 즉시 승격해야 합니다.
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# 건설공사 표준품셈 원문 표 성격 분류 및 밑수 분석 (산림 대비)
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **근거 원문**: `resources/knowledge/original/원가계산/건설공사_표준품셈/2026년_건설공사_표준품셈.md` (국토교통부 공고, 2026년 적용)
|
||||||
|
> **배경**: 건설품셈 공종 축(목차 나무) 구축을 위한 원문 표 2,192개 전수 실사 및 성격·밑수 분석.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 건설품셈 원문 표 성격 분류 (총 2,192개)
|
||||||
|
|
||||||
|
산림품셈과 동일한 잣대(`requirement`, `coefficient`, `productivity`, `reference`)로 전수 분류한 결과:
|
||||||
|
|
||||||
|
| 성격 (`pum_form`) | 표 수 | 비율 | 내용 및 특징 |
|
||||||
|
| :--- | :---: | :---: | :--- |
|
||||||
|
| **`requirement`**<br>(일위대가 직접 소요량) | **1,206개** | **55.0%** | • **산림(279개)의 4.3배** 규모.<br>• 현장 시공에 직접 투입되는 인력·장비·자재 투입량 표 (토목 334, 공통 321, 기계 280, 유지관리 149, 건축 122). |
|
||||||
|
| **`coefficient`**<br>(계수·손료·할증) | **497개** | **22.7%** | • 건설기계 손료율(151개), 시공능력 $Q$ 계수(151개), 재료/노임 할증률, 환산계수 등.<br>• 공통 제8장(건설기계)에 276개 집중. |
|
||||||
|
| **`reference`**<br>(참고·규정·서식) | **437개** | **19.9%** | • 공사 적용기준, 관종별 규격표, 측량 등급 기준, 검측 및 서식 안내 등. |
|
||||||
|
| **`productivity`**<br>(시공능력 공식) | **52개** | **2.4%** | • 굴착기·덤프·롤러 시간당 작업량($Q$), 펌프카 1일 시공능력 등 기준 공식. |
|
||||||
|
| **합계** | **2,192개** | **100.0%** | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 밑수 꼴(Pattern) 통계
|
||||||
|
|
||||||
|
| 밑수 꼴 구분 | 표 수 | 비율 | 분석 및 파싱 규칙 |
|
||||||
|
| :--- | :---: | :---: | :--- |
|
||||||
|
| **1. 본문 윗줄 괄호** | **1,034개** | **47.2%** | • 표 시작 바로 윗줄(`source_line - 1`)에 `(일당)`, `(100㎡당)`, `(m당)` 등 단독 괄호라인으로 명시되어 있어 파싱 규칙 적중률이 70% 이상임. |
|
||||||
|
| **2. 표머리 헤더 명시** | **446개** | **20.3%** | • 표 헤더 셀 내부에 `(단위: m)`, `인/100m` 형태로 명시. |
|
||||||
|
| **3. 밑수 미기재 (무차원/서식)** | **711개** | **32.4%** | • 기계손료율·할증률 계수표(497개) 및 일반 서식/규정표(214개).<br>• 원래 밑수가 없는 정상 무차원 표 (`basis = dimensionless`). |
|
||||||
|
| **4. 주석([주]) 명시** | **1개** | **0.0%** | • 본문 윗줄에 대부분 존재하여 [주] 단독 명시 사례는 극소수. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 산림품셈 대비 눈에 띄게 다른 점 5가지
|
||||||
|
|
||||||
|
1. **「일당(작업조, Crew)」 밑수의 압도적 비중 (최다 375개 표)**:
|
||||||
|
* **산림**: 단위물량당 직접 소요품(`0.023인/㎡`) 위주.
|
||||||
|
* **건설**: `(일당) 특별인부 1.0, 보통인부 2.0` 형태로 1일 작업조를 주고, 별도 표나 주석의 **「1일 시공량(㎡/일, m/일)」으로 나누는 2단계 구조**가 주류. $\rightarrow$ 일위대가 변환 시 작업조 $\div$ 일일시공량 엔진 연산 필수.
|
||||||
|
2. **10배·100배 스케일 단위 빈발 (수량 왜곡 주의점)**:
|
||||||
|
* `10㎡당`, `100㎡당`, `10m당`, `100m당`, `10개소당`, `ton당` 등 배수 단위가 광범위하게 쓰임.
|
||||||
|
* **표면마무리 100배 차이(`산림: ㎡당` ↔ `건설: 100㎡당`)**처럼 밑수 파싱 시 스케일 팩터(10, 100)를 정밀하게 분리 처리해야 함.
|
||||||
|
3. **5개 부문 독립 체계와 장 번호 중복 (코드 충돌 방지)**:
|
||||||
|
* 산림은 단일 14개 장(`FP-01` ~ `FP-14`)이나, 건설은 **5개 부문(공통·토목·건축·기계·유지관리)마다 제1장부터 리셋**됨.
|
||||||
|
* 절 번호(`1-1-1`)가 5번 중복되므로, 건설 표 ID는 반드시 **부문 접두어(`C_COM`, `C_CIV`, `C_ARC`, `C_MEC`, `C_MNT`)**를 접두사로 사용해야 함.
|
||||||
|
4. **공통 제8장 건설기계(351표)의 방대한 규모**:
|
||||||
|
* 기계 단가 산출용 계수표만 351개(전체의 16%)로, 공종 축 구축 시 이 351개 표는 전량 기계 계산 엔진(총칙)으로 분리해야 함.
|
||||||
|
5. **밑수 표기 위치의 일관성 (높은 파싱 성공률)**:
|
||||||
|
* 산림품셈(표머리/소제목/본문/주석 산재)과 달리, 건설품셈은 **표 바로 윗줄 괄호 탐색**으로 70% 이상의 밑수가 정형화되어 수거됨.
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "UNDET-01",
|
||||||
|
"forest_section": "2-2-3",
|
||||||
|
"forest_item_name": "집재장비(소형) 손료계수",
|
||||||
|
"forest_source_line": 1645,
|
||||||
|
"context": "손료는 해당 장비가격에 적용하며 손료계수에는 상각비율, 정비비율 및 관리비율이 포함되어 있으며, 세부사항은 건설표준품셈의 적용기준에 준하여 적용한다.",
|
||||||
|
"const_part": "공통부문",
|
||||||
|
"const_chapter": "제8장 건설기계",
|
||||||
|
"const_section": "8-1-5 기계경비 용어와 정의 & 8-1-6 기계경비 적산요령",
|
||||||
|
"const_source_line": 5324,
|
||||||
|
"status": "확정",
|
||||||
|
"reason": "상각비율, 정비비율, 관리비율 및 시간당 손료계수 산정 공식, 1일 8시간 산정원칙이 100% 일치함."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "UNDET-02",
|
||||||
|
"forest_section": "2-2-9",
|
||||||
|
"forest_item_name": "지상 약제살포",
|
||||||
|
"forest_source_line": 1702,
|
||||||
|
"context": "1톤(방제차량) 건설품셈 적산기준에 준함",
|
||||||
|
"const_part": "공통부문",
|
||||||
|
"const_chapter": "제8장 건설기계",
|
||||||
|
"const_section": "8-1-5/6 손료기본식 & 8-1-2 주④(개별산정)",
|
||||||
|
"const_source_line": 5324,
|
||||||
|
"status": "규격 미수록 (조건부 확정)",
|
||||||
|
"reason": "건설품셈에 그 규격이 안 실림. 건설품셈 8-3 기계손료표에는 덤프트럭 2.5톤 이상만 수록되어 있고 일반 1톤 화물차(방제차량)는 기종이 미수록되어 있어, 8-1-5/6 손료 기본원칙을 준용하거나 8-1-2 주④에 따라 개별 산정해야 함."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "UNDET-03",
|
||||||
|
"forest_section": "3-4-2",
|
||||||
|
"forest_item_name": "임산물 운반로 및 작업로 신설비",
|
||||||
|
"forest_source_line": 1796,
|
||||||
|
"context": "시간당 작업량(Q) 8.95㎥/hr 및 시간당 단가(노무비, 재료비, 경비)는 건설공사 표준품셈에 따라 산출 (굴착기 0.2㎥ 버킷용량)",
|
||||||
|
"const_part": "공통부문",
|
||||||
|
"const_chapter": "제8장 건설기계",
|
||||||
|
"const_section": "8-2-3 굴착기(작업능력 Q식) + 8-3-1 (0201-0020) 굴착기 0.2㎥ 손료 + 8-4-1 (0201-0020) 굴착기 0.2㎥ 운전경비",
|
||||||
|
"const_source_line": 5446,
|
||||||
|
"status": "확정",
|
||||||
|
"reason": "굴착기 0.2㎥ 작업능력 공식 Q=3600*q*K*f*E/Cm=8.95㎥/hr 및 손료계수(2,085*10^-7), 주연료(디젤 5.0ℓ/hr), 잡재료(21%), 조종원(1인) 규격이 완벽히 일치함."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "UNDET-04",
|
||||||
|
"forest_section": "5-12",
|
||||||
|
"forest_item_name": "떼붙임(재배잔디)",
|
||||||
|
"forest_source_line": 2504,
|
||||||
|
"context": "성토면 시공시 흙다지기가 필요할 때 건설품셈의 품을 적용할 수 있다.",
|
||||||
|
"const_part": "공통부문",
|
||||||
|
"const_chapter": "제3장 토공사",
|
||||||
|
"const_section": "3-4-3 흙 다지기 (보조: 3-4-4 뒤채움 및 다짐)",
|
||||||
|
"const_source_line": 2331,
|
||||||
|
"status": "확정",
|
||||||
|
"reason": "2025년 신설된 건설품셈 유일의 전용 '흙 다지기' 품으로 콤팩터, 래머 및 인력 다짐 시공량을 일당으로 직접 규정함."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "UNDET-05",
|
||||||
|
"forest_section": "5-16-2",
|
||||||
|
"forest_item_name": "선떼붙이기",
|
||||||
|
"forest_source_line": 2594,
|
||||||
|
"context": "떼 운반은 200m까지는 조견표를 이용하고 그 이상은 건설품셈에 의한 지게운반을 적용",
|
||||||
|
"const_part": "공통부문",
|
||||||
|
"const_chapter": "제1장 적용기준",
|
||||||
|
"const_section": "1-2-7 운반, 3. 지게운반",
|
||||||
|
"const_source_line": 453,
|
||||||
|
"status": "확정",
|
||||||
|
"reason": "건설품셈 전체에서 '지게운반'을 다루는 유일한 절이며 1회 운반량 25kg, 속도, 적재적하시간 및 기본공식이 완벽히 일치함."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "UNDET-06",
|
||||||
|
"forest_section": "10-9",
|
||||||
|
"forest_item_name": "덤프트럭 운반",
|
||||||
|
"forest_source_line": 5857,
|
||||||
|
"context": "4륜구동 1톤 덤프트럭 작업량은 건설품셈을 적용하고, 주 연료는 2.5톤의 80% 적용, 손료 및 운전경비 산정은 2.5톤 덤프트럭을 적용",
|
||||||
|
"const_part": "공통부문",
|
||||||
|
"const_chapter": "제8장 건설기계",
|
||||||
|
"const_section": "8-2-8 덤프트럭(작업량 Q식) + 8-3-1 (0602-0025) 덤프트럭 2.5톤 손료 + 8-4-1 (0602-0025) 덤프트럭 2.5톤 운전경비",
|
||||||
|
"const_source_line": 5648,
|
||||||
|
"status": "확정",
|
||||||
|
"reason": "덤프트럭 작업량 Q식(8-2-8)과 2.5톤 덤프트럭의 손료계수(2,967*10^-7) 및 운전경비(주연료 2.9ℓ/hr의 80%=2.32ℓ/hr, 잡재료 38%, 조종원 1인)가 완벽히 명시됨."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "UNDET-07",
|
||||||
|
"forest_section": "10-9-1",
|
||||||
|
"forest_item_name": "자재의 1회당 표준 운반량",
|
||||||
|
"forest_source_line": 5871,
|
||||||
|
"context": "산지사방사업에서 5톤미만 중운반, 소운반에 적용하며 규격이 없는 재료는 건설표준품셈을 적용",
|
||||||
|
"const_part": "공통부문",
|
||||||
|
"const_chapter": "제1장 적용기준",
|
||||||
|
"const_section": "1-2-7 운반, 7. 화물자동차의 적재량",
|
||||||
|
"const_source_line": 489,
|
||||||
|
"status": "확정",
|
||||||
|
"reason": "산림 10-9-1은 5톤 미만 7종 자재만 규정하므로, 그 외 자재(목재, 유류, 벽돌, 관류 등)의 적재량은 건설품셈 1-2-7 7호의 화물자동차 적재량 표를 직접 적용함."
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
# 산림사업 표준품셈 내 건설품셈 준용 절 미명시 7건 정밀 대조 매핑 보고서
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **작성자**: Antigravity (원문 실사 및 대조 조사)
|
||||||
|
> **근거 원문**:
|
||||||
|
> - 산림품셈: `resources/knowledge/original/행정규칙/임도 품셈 적용기준 (현 산림사업 표준품셈)/첨부/(산림청고시 제2025-82호) 산림사업 표준품셈.md`
|
||||||
|
> - 건설품셈: `resources/knowledge/original/원가계산/건설공사_표준품셈/2026년_건설공사_표준품셈.md` (국토교통부 공고, 2026년 적용)
|
||||||
|
> **목적**: 산림품셈 본문/주석에서 구체적인 절 번호 없이 「건설품셈에 따른다/준용」으로만 명시되어 미판정으로 남아있던 7건에 대해, 작업 문맥을 분석하여 건설품셈의 정확한 절 번호 및 원문 라인(line)을 확정 매핑함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 종합 대응 매핑 총괄표 (7건)
|
||||||
|
|
||||||
|
| 연번 | 산림 절 번호 | 산림 항목명 | 산림 원문 줄 | 건설품셈 추천 부문 및 절 | 건설 원문 줄 (통짜 / 분할) | 판정 | 상세 사유 |
|
||||||
|
| :---: | :--- | :--- | :---: | :--- | :---: | :---: | :--- |
|
||||||
|
| **1** | **2-2-3** 주① | 집재장비(소형) 손료계수 | L1645 | **공통부문 제8장 건설기계 8-1-5 기계경비 용어와 정의 & 8-1-6 기계경비 적산요령** | L5324~L5344<br>(제8장 L88~L108) | **확정** | 손료계수의 구성요소(상각비율, 정비비율, 관리비율) 및 1일 8시간 기준 적용 원칙이 100% 일치함. |
|
||||||
|
| **2** | **2-2-9** 표 | 지상 약제살포 | L1702 | **공통부문 제8장 건설기계 8-1-5/6 (손료산정 기본원칙) & 8-1-2 주④ (특정규격 개별산정)**<br>*(참고 시공품: 유지관리 제1장 1-2-16 약제살포)* | L5324~L5344<br>(L24987) | **규격 미수록<br>(조건부 확정)** | **건설품셈에 그 규격이 안 실림.**<br>건설품셈 제8장 손료표(8-3)에는 덤프트럭 2.5톤 이상만 수록되어 있고, 일반 1톤 화물차(방제차량)는 기종이 미수록됨. 따라서 8-1-5/6 손료 기본원칙을 준용하거나 8-1-2 주④에 따라 개별 산정해야 함. |
|
||||||
|
| **3** | **3-4-2** 주기※ | 임산물 운반로/작업로 신설비 | L1796 | **공통부문 제8장 건설기계 8-2-3 굴착기 (작업능력 Q식)<br>+ 8-3-1 [00]토공기계 (0201-0020) 굴착기 0.2㎥ 손료<br>+ 8-4-1 [00]토공기계 (0201-0020) 굴착기 0.2㎥ 운전경비** | 작업량: L5446 (제8장 L210)<br>손료: L7156 (제8장 L1920)<br>경비: L8628 (제8장 L3392) | **확정** | 굴착기 0.2㎥ 작업능력 공식 $Q=8.95㎥/hr$ 및 손료계수($2,085 \times 10^{-7}$), 주연료(디젤 5.0ℓ/hr), 잡재료(21%), 조종원(1인) 규격이 완벽히 일치함. |
|
||||||
|
| **4** | **5-12** 주④ | 떼붙임(재배잔디) | L2504 | **공통부문 제3장 토공사 3-4-3 흙 다지기**<br>*(보조: 3-4-4 뒤채움 및 다짐)* | L2331~L2345<br>(제3장 L329~L345) | **확정** | 2025년 신설된 건설품셈 유일의 전용 '흙 다지기' 품으로 콤팩터, 래머 및 인력 다짐 시공량을 일당으로 직접 규정함. |
|
||||||
|
| **5** | **5-16-2** 주③ | 선떼붙이기 | L2594 | **공통부문 제1장 적용기준 1-2-7 운반, 3. 지게운반** | L453~L466<br>(제1장 L271~L284) | **확정** | 건설품셈 전체에서 '지게운반'을 다루는 유일한 절이며 1회 운반량 25kg, 속도, 적재적하시간 및 기본공식이 완벽히 일치함. |
|
||||||
|
| **6** | **10-9** 본문 | 덤프트럭 운반 | L5857 | **공통부문 제8장 건설기계 8-2-8 덤프트럭 (작업량 Q식)<br>+ 8-3-1 [00]토공기계 (0602-0025) 덤프트럭 2.5톤 손료<br>+ 8-4-1 [00]토공기계 (0602-0025) 덤프트럭 2.5톤 운전경비** | 작업량: L5648 (제8장 L412)<br>손료: L7286 (제8장 L2050)<br>경비: L8634 (제8장 L3398) | **확정** | 덤프트럭 작업량 Q식(8-2-8)과 2.5톤 덤프트럭의 손료계수($2,967 \times 10^{-7}$) 및 운전경비(주연료 2.9ℓ/hr의 80%=2.32ℓ/hr, 잡재료 38%, 조종원 1인)가 완벽히 명시됨. |
|
||||||
|
| **7** | **10-9-1** 주① | 자재의 1회당 표준 운반량 | L5871 | **공통부문 제1장 적용기준 1-2-7 운반, 7. 화물자동차의 적재량** | L489~L543<br>(제1장 L307~L361) | **확정** | 산림 10-9-1은 5톤 미만 7종 자재만 규정하므로, 그 외 자재(목재, 유류, 벽돌, 관류 등)의 적재량은 건설품셈 1-2-7 7호 표를 직접 적용함. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 건별 세부 분석 및 기술적 근거
|
||||||
|
|
||||||
|
### 1) [2-2-3] 집재장비(소형) 손료계수 (L1645)
|
||||||
|
- **산림 원문 문맥**:
|
||||||
|
`[주] ① 손료는 해당 장비가격에 적용하며 손료계수에는 상각비율, 정비비율 및 관리비율이 포함되어 있으며, 세부사항은 건설표준품셈의 적용기준에 준하여 적용한다. ② 1일 가동시간은 8시간으로 한다.`
|
||||||
|
- **건설품셈 대응 원문**:
|
||||||
|
- **절**: 공통부문 제8장 건설기계 `8-1-5 기계경비 용어와 정의` 및 `8-1-6 기계경비 적산요령`
|
||||||
|
- **원문 줄**: `2026년_건설공사_표준품셈.md` L5324 ~ L5344 (`01_공통부문/제8장_건설기계.md` L88 ~ L108)
|
||||||
|
- **근거 내용**:
|
||||||
|
- 건설품셈 8-1-5 1호(상각비), 2호(정비비), 3호(정비비율), 4호(관리비), 5호(연간관리비율), 12호(시간당 손료계수 합계 공식).
|
||||||
|
- 건설품셈 8-1-6 2호: "기계손료: 상각비, 정비비 및 관리비의 합계액으로 한다. 다만, 관리비에 대하여는 1일 8시간을 초과할 경우라도 8시간으로 계산하여야 한다." (산림 주 ②와 100% 일치).
|
||||||
|
|
||||||
|
### 2) [2-2-9] 지상 약제살포 (L1702)
|
||||||
|
- **산림 원문 문맥**:
|
||||||
|
`| 1톤(방제차량) | 건설품셈 적산기준에 준함 |`
|
||||||
|
- **건설품셈 대응 원문**:
|
||||||
|
- **절**: 공통부문 제8장 `8-1-5` 및 `8-1-6` 기계경비 산정 기본식 / `8-1-2` 주 ④
|
||||||
|
- **원문 줄**: `2026년_건설공사_표준품셈.md` L5324 ~ L5344 (시공참고: L24987 `유지관리 1-2-16`)
|
||||||
|
- **핵심 사유 (규격 미수록)**:
|
||||||
|
- **건설품셈에는 일반 1톤 화물차(방제차량) 규격의 고유 손료계수 표가 실려 있지 않습니다.**
|
||||||
|
- 건설품셈 제8장 8-3(기계손료표)에는 덤프트럭 2.5톤 이상, 트럭탑재형 크레인 등 특수건설기계만 수록되어 있으며, 일반 소형 화물차는 `자동차관리법` 대상 차량으로 분류되어 건설기계 목록에서 제외되어 있습니다.
|
||||||
|
- 따라서 "건설품셈 적산기준에 준함"은 건설품셈 8-1-5/6의 기계손료 산출 기본 공식(취득가격 × 손료계수, 1일 8시간)을 준용하여 개별 산정하라는 의미(`8-1-2 주 ④` "특정한 기계 및 특정규격 사용 시 개별 산정")입니다.
|
||||||
|
|
||||||
|
### 3) [3-4-2] 임산물 운반로 및 작업로 신설비 (L1796)
|
||||||
|
- **산림 원문 문맥**:
|
||||||
|
`⦁ 시간당 작업량(Q) 산출 : 8.95㎥/hr (q: 0.2, K: 0.7, f: 0.71, E: 0.45, Cm: 18초)`
|
||||||
|
`※ 시간당 단가(노무비, 재료비, 경비)는 건설공사 표준품셈에 따라 산출`
|
||||||
|
- **건설품셈 대응 원문**:
|
||||||
|
- **작업량 공식**: 공통부문 제8장 `8-2-3 굴착기` (L5446)
|
||||||
|
$$Q = \frac{3600 \cdot q \cdot K \cdot f \cdot E}{C_m} = \frac{3600 \times 0.2 \times 0.7 \times 0.71 \times 0.45}{18} = 8.946 \approx 8.95\,\text{㎥/hr}$$ (공식 완벽 일치)
|
||||||
|
- **기계손료(경비)**: 공통부문 제8장 `8-3-1 [00]토공기계 (0201-0020) 굴착기(무한궤도) 0.2㎥` (L7156)
|
||||||
|
시간당 손료계수 $= 2,085 \times 10^{-7}$ (상각 900, 정비 700, 관리 485)
|
||||||
|
- **운전경비(재료/노무)**: 공통부문 제8장 `8-4-1 [00]토공기계 (0201-0020) 굴착기(무한궤도) 0.2㎥` (L8628)
|
||||||
|
주연료(디젤) $5.0\,\ell/\text{hr}$, 잡재료 주연료의 $21\%$, 조종원(건설기계운전사) $1\,\text{인/일}$
|
||||||
|
|
||||||
|
### 4) [5-12] 떼붙임(재배잔디) (L2504)
|
||||||
|
- **산림 원문 문맥**:
|
||||||
|
`[주] ④ 성토면 시공시 흙다지기가 필요할 때 건설품셈의 품을 적용할 수 있다.`
|
||||||
|
- **건설품셈 대응 원문**:
|
||||||
|
- **절**: 공통부문 제3장 토공사 `3-4-3 흙 다지기` (보조: `3-4-4 뒤채움 및 다짐(소형장비)`)
|
||||||
|
- **원문 줄**: `2026년_건설공사_표준품셈.md` L2331 ~ L2345 (`01_공통부문/제3장_토공사.md` L329 ~ L345)
|
||||||
|
- **근거 내용**:
|
||||||
|
- 2025년 신설된 건설품셈 유일의 전용 '흙 다지기' 품.
|
||||||
|
- 플레이트 콤팩터(1.5ton), 래머(80kg) 및 인력(특별인부, 보통인부)에 의한 흙다지기 및 흙고르기 일당 시공량을 직접 규정.
|
||||||
|
|
||||||
|
### 5) [5-16-2] 선떼붙이기 (L2594)
|
||||||
|
- **산림 원문 문맥**:
|
||||||
|
`[주] ③ 떼 운반은 200m까지는 조견표를 이용하고 그 이상은 건설품셈에 의한 지게운반을 적용하며, 소운반과 지게운반을 같은 거리에서 이중계상 하지 못한다.`
|
||||||
|
- **건설품셈 대응 원문**:
|
||||||
|
- **절**: 공통부문 제1장 적용기준 `1-2-7 운반, 3. 지게운반`
|
||||||
|
- **원문 줄**: `2026년_건설공사_표준품셈.md` L453 ~ L466 (`01_공통부문/제1장_적용기준.md` L271 ~ L284)
|
||||||
|
- **근거 내용**:
|
||||||
|
- 건설품셈 전체에서 '지게운반'을 규정한 유일한 절.
|
||||||
|
- 인력운반 공식 $Q = N \cdot q$, 적재적하시간($t$: 토사 1.5분, 석재 2분), 노면상태별 평균왕복속도(양호 3,000 / 보통 2,500 / 불량 2,000 m/hr), 1회 운반량(25kg) 규정.
|
||||||
|
|
||||||
|
### 6) [10-9] 덤프트럭 운반 (L5857)
|
||||||
|
- **산림 원문 문맥**:
|
||||||
|
`> 현지 여건을 감안하여 작업 효율성을 높이기 위해 4륜구동 1톤 덤프트럭을 사용할 경우 작업량은 건설품셈을 적용하고, 중기가격은 조달청 등재가격, 주 연료는 2.5톤의 80% 적용, 손료 및 운전경비 산정은 2.5톤 덤프트럭을 적용할 수 있다.`
|
||||||
|
- **건설품셈 대응 원문**:
|
||||||
|
- **작업량 공식**: 공통부문 제8장 `8-2-8 덤프트럭` (L5648)
|
||||||
|
$$Q = \frac{60 \cdot q \cdot f \cdot E}{C_m},\quad q = \frac{T \cdot L}{\gamma_t}$$
|
||||||
|
- **기계손료**: 공통부문 제8장 `8-3-1 [00]토공기계 (0602-0025) 덤프트럭 2.5톤` (L7286)
|
||||||
|
분류번호 `0602-0025`, 규격 `2.5ton`, 내용시간 7,500hr, 가동시간 1,250hr, 시간당 손료계수 합계 $= 2,967 \times 10^{-7}$
|
||||||
|
- **운전경비**: 공통부문 제8장 `8-4-1 [00]토공기계 (0602-0025) 덤프트럭 2.5톤` (L8634)
|
||||||
|
주연료 $2.9\,\ell/\text{hr}$ (산림 규정에 따라 80%인 $2.32\,\ell/\text{hr}$ 적용), 잡재료 주연료의 $38\%$, 조종원(화물차운전사) $1\,\text{인/일}$
|
||||||
|
|
||||||
|
### 7) [10-9-1] 자재의 1회당 표준 운반량 (L5871)
|
||||||
|
- **산림 원문 문맥**:
|
||||||
|
`[주] ① 위의 품은 산지사방사업에서 5톤미만 중운반, 소운반에 적용하며 규격이 없는 재료는 건설표준품셈을 적용한다.`
|
||||||
|
- **건설품셈 대응 원문**:
|
||||||
|
- **절**: 공통부문 제1장 적용기준 `1-2-7 운반, 7. 화물자동차의 적재량`
|
||||||
|
- **원문 줄**: `2026년_건설공사_표준품셈.md` L489 ~ L543 (`01_공통부문/제1장_적용기준.md` L307 ~ L361)
|
||||||
|
- **근거 내용**:
|
||||||
|
- 산림 10-9-1 표는 5톤 미만 차량에 대해 콘크리트블록, 목제형틀, 철제형틀, 토사, 자갈, 강재, 통나무 7종만 규정함.
|
||||||
|
- 건설품셈 1-2-7 7호의 '화물자동차의 적재량' 표에는 6톤, 8톤, 11톤 차량 기준 목재, 유류, 아스팔트, 새끼, 벽돌, 기와, 보도블록, 견치돌, 블록, 타일, 합판, 유리, 페인트, 흄관, 콘크리트관, 주철관, 강관, 파일, 전주 등 상세 자재별 적재량이 수록되어 있어 미규정 재료의 직접 적용 대상임.
|
||||||
@@ -0,0 +1,287 @@
|
|||||||
|
{
|
||||||
|
"dataset_id": "forest_pumsem_form_undetermined_14_resolved",
|
||||||
|
"source_edition": "2026_산림사업_표준품셈",
|
||||||
|
"generated_at": "2026-09-17T17:43:00+09:00",
|
||||||
|
"total_count": 14,
|
||||||
|
"summary_counts": {
|
||||||
|
"header_missing": 9,
|
||||||
|
"mixed_matrix": 3,
|
||||||
|
"formula_spec": 1,
|
||||||
|
"text_value": 1
|
||||||
|
},
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"table_id": "F0140",
|
||||||
|
"section": "5-26-1",
|
||||||
|
"section_name": "막갈이",
|
||||||
|
"source_line": 2874,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "2d_matrix",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "막갈이깊이(cm)",
|
||||||
|
"values": ["9", "12", "15", "18", "21"]
|
||||||
|
},
|
||||||
|
"vertical_axis": {
|
||||||
|
"title": "토성",
|
||||||
|
"values": ["사토", "양토", "식토"]
|
||||||
|
},
|
||||||
|
"target_resource": "보통인부",
|
||||||
|
"basis_unit": "100㎡당",
|
||||||
|
"reading_guide": "상단 2행의 깊이(cm)를 열 헤더로 복원하여 토성×깊이별 보통인부 소요품(인)으로 매핑"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0141",
|
||||||
|
"section": "5-26-2",
|
||||||
|
"section_name": "흙부수기",
|
||||||
|
"source_line": 2886,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "2d_matrix",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "막갈이깊이(cm)",
|
||||||
|
"values": ["9", "12", "15", "18", "21"]
|
||||||
|
},
|
||||||
|
"vertical_axis": {
|
||||||
|
"title": "토성",
|
||||||
|
"values": ["사토", "양토", "식토"]
|
||||||
|
},
|
||||||
|
"target_resource": "보통인부",
|
||||||
|
"basis_unit": "100㎡당",
|
||||||
|
"reading_guide": "F0140과 동일 구조, 토성×깊이별 보통인부 소요품(인) 복원"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0142",
|
||||||
|
"section": "5-26-3",
|
||||||
|
"section_name": "돌자갈치우기",
|
||||||
|
"source_line": 2897,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "2d_matrix",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "돌자갈 함유율",
|
||||||
|
"values": ["10% 이내", "10∼30%", "30% 이상"]
|
||||||
|
},
|
||||||
|
"vertical_axis": {
|
||||||
|
"title": "구분(지목)",
|
||||||
|
"values": ["개답", "개전"]
|
||||||
|
},
|
||||||
|
"target_resource": "보통인부",
|
||||||
|
"basis_unit": "100㎡당",
|
||||||
|
"reading_guide": "가로축 자갈비율 행을 열 헤더로 복원하여 지목×함유율별 잔돌치우기 보통인부 소요품(인)으로 매핑"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0195",
|
||||||
|
"section": "7-14",
|
||||||
|
"section_name": "원목 운반-수확",
|
||||||
|
"source_line": 3849,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "productivity",
|
||||||
|
"table_structure": "multi_tier_complex",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "공정구분",
|
||||||
|
"values": ["저나르기", "트럭집재", "뗏목", "토장집재", "상하차"]
|
||||||
|
},
|
||||||
|
"vertical_axis": {
|
||||||
|
"title": "수종 및 자재",
|
||||||
|
"values": ["침엽수(포플러포함)", "활엽수(포플러제외)", "목탄(침)", "목탄(활)"]
|
||||||
|
},
|
||||||
|
"basis_unit": "1인 1일 공정량 (㎥ 또는 kg, 연km)",
|
||||||
|
"reading_guide": "3단 복합 헤더를 공종별 단일 열로 분리하여 1인1일 작업능력치 매핑"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0248",
|
||||||
|
"section": "9-7-1",
|
||||||
|
"section_name": "기존구조물깨기(T=30㎝미만)",
|
||||||
|
"source_line": 4817,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "coefficient",
|
||||||
|
"table_structure": "key_value_list",
|
||||||
|
"parameters": {
|
||||||
|
"K": 0.55,
|
||||||
|
"f": 0.67,
|
||||||
|
"E": 0.35,
|
||||||
|
"cm": "22초 (180도)"
|
||||||
|
},
|
||||||
|
"reading_guide": "굴착기(0.7㎥)+대형브레이커 작업능력 계산공식 Q=3600qkfE/cm 대입용 계수표"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0322",
|
||||||
|
"section": "10-13-1",
|
||||||
|
"section_name": "드론운반",
|
||||||
|
"source_line": 6003,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "horizontal_lookup",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "수평거리(m)",
|
||||||
|
"values": ["100", "200", "300", "400", "500", "600"]
|
||||||
|
},
|
||||||
|
"target_resource": "드론운반공",
|
||||||
|
"basis_unit": "묘목 1,000본당",
|
||||||
|
"values": [0.29, 0.37, 0.46, 0.54, 0.62, 0.70],
|
||||||
|
"reading_guide": "1행 가로 전개형 표로 인식하여 수평거리별 드론운반공 소요품 매핑"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0323",
|
||||||
|
"section": "10-13-2",
|
||||||
|
"section_name": "인력운반",
|
||||||
|
"source_line": 6009,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "horizontal_lookup",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "수평거리(m)",
|
||||||
|
"values": ["100", "200", "300", "400", "500", "600"]
|
||||||
|
},
|
||||||
|
"target_resource": "보통인부",
|
||||||
|
"basis_unit": "묘목 1,000본당",
|
||||||
|
"values": [0.67, 0.73, 0.79, 0.85, 0.92, 0.99],
|
||||||
|
"reading_guide": "1행 가로 전개형 표로 인식하여 수평거리별 보통인부 소요품 매핑"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0333",
|
||||||
|
"section": "12-1-3",
|
||||||
|
"section_name": "인력비빔 타설 (한중 양생)",
|
||||||
|
"source_line": 6145,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "2d_matrix",
|
||||||
|
"vertical_axis": {
|
||||||
|
"title": "슬럼프(mm) / 품종",
|
||||||
|
"values": ["25-(A)", "25-(B)", "25-(C)", "40-(A)", "40-(B)", "40-(C)"]
|
||||||
|
},
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "양생온도",
|
||||||
|
"values": ["0℃때", "-5℃때", "-10℃때", "-20℃때"]
|
||||||
|
},
|
||||||
|
"target_resource": "시후카",
|
||||||
|
"basis_unit": "㎥당",
|
||||||
|
"reading_guide": "1열 슬럼프와 2열 품종을 결합한 세로축 복원 및 양생온도별 시후카 소요량 매핑"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0346",
|
||||||
|
"section": "12-11-1",
|
||||||
|
"section_name": "VR관(소켓식) 부설",
|
||||||
|
"source_line": 6360,
|
||||||
|
"category": "header_missing",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "vertical_resource_by_spec",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "관경 규격",
|
||||||
|
"values": ["∅800mm", "∅1000mm", "∅1200mm"]
|
||||||
|
},
|
||||||
|
"basis_unit": "m당",
|
||||||
|
"reading_guide": "상단 1행의 관경 규격을 열 헤더로 복원하고 분수형 품(크레인 0.62/2.5 hr, 인부 0.96/2.5 인 등)을 정규 실수치로 계산"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0169",
|
||||||
|
"section": "7-1-1",
|
||||||
|
"section_name": "수확 인력집재",
|
||||||
|
"source_line": 3361,
|
||||||
|
"category": "mixed_matrix",
|
||||||
|
"resolved_pum_form": "productivity",
|
||||||
|
"table_structure": "2d_matrix",
|
||||||
|
"branch_context": "1. 천연림 모두베기 (L3361~3367), L3369 인공림 모두베기와 완전 분기",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "경사도 난이도",
|
||||||
|
"values": ["어려움(15˚ 미만)", "중(30˚ 초과)", "쉬움(15˚~30˚)"]
|
||||||
|
},
|
||||||
|
"vertical_axis": {
|
||||||
|
"title": "평균집재거리",
|
||||||
|
"values": ["100m이하", "200m이하", "300m이하"]
|
||||||
|
},
|
||||||
|
"basis_unit": "㎥/인·일",
|
||||||
|
"reading_guide": "천연림 모두베기 2축 매트릭스로 분리하여 1인1일 집재재적 산출"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0304",
|
||||||
|
"section": "10-6-3",
|
||||||
|
"section_name": "기타 임업자재 인력운반",
|
||||||
|
"source_line": 5669,
|
||||||
|
"category": "mixed_matrix",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "pivoted_2d_matrix",
|
||||||
|
"branch_context": "10개 자재종별과 운반거리 20~200m(10단계)가 한 셀 문자열로 압축됨",
|
||||||
|
"resolved_items_count": 10,
|
||||||
|
"materials": [
|
||||||
|
{"name": "목재(소재)", "unit": "인/㎥"},
|
||||||
|
{"name": "목재(제재)", "unit": "인/㎥"},
|
||||||
|
{"name": "볏짚", "unit": "인/100속"},
|
||||||
|
{"name": "섶단·새", "unit": "인/100속"},
|
||||||
|
{"name": "나뭇가지단", "unit": "인/100속"},
|
||||||
|
{"name": "자른떼", "unit": "인/100매"},
|
||||||
|
{"name": "식생낭", "unit": "인/100개"},
|
||||||
|
{"name": "편책용말뚝", "unit": "인/100본"},
|
||||||
|
{"name": "볏짚멍석", "unit": "인/1000㎡"},
|
||||||
|
{"name": "비료", "unit": "인/톤"}
|
||||||
|
],
|
||||||
|
"reading_guide": "자재 10종을 행으로 피벗하고 거리 10구간을 열로 전개하여 10×10 매트릭스로 정규화"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0356",
|
||||||
|
"section": "12-17-1",
|
||||||
|
"section_name": "펌프카 타설 일일시공량",
|
||||||
|
"source_line": 6520,
|
||||||
|
"category": "mixed_matrix",
|
||||||
|
"resolved_pum_form": "productivity",
|
||||||
|
"table_structure": "2d_matrix",
|
||||||
|
"horizontal_axis": {
|
||||||
|
"title": "콘크리트 구분",
|
||||||
|
"values": ["무근콘크리트", "철근콘크리트"]
|
||||||
|
},
|
||||||
|
"vertical_axis": {
|
||||||
|
"title": "슬럼프",
|
||||||
|
"values": ["8 ~ 12 cm", "15 cm", "18 cm 이상"]
|
||||||
|
},
|
||||||
|
"basis_unit": "㎥/일 당",
|
||||||
|
"coefficients_linked": ["f1(시설유형)", "f2(현장조건)"],
|
||||||
|
"reading_guide": "슬럼프×콘크리트 2축 매트릭스 기준시공량에 주석 계수 f1, f2를 곱하여 일일시공량 산출"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0257",
|
||||||
|
"section": "9-11-1",
|
||||||
|
"section_name": "콘크리트 줄눈 물운반",
|
||||||
|
"source_line": 4961,
|
||||||
|
"category": "formula_spec",
|
||||||
|
"resolved_pum_form": "formula",
|
||||||
|
"formula_definitions": {
|
||||||
|
"N": "(V * T) / (120 * L + V * t)",
|
||||||
|
"Q": "N * q"
|
||||||
|
},
|
||||||
|
"formula_inputs": {
|
||||||
|
"L_km": 0.1,
|
||||||
|
"V_km_hr": 2.5,
|
||||||
|
"t_min": 4.0,
|
||||||
|
"T_min": 450.0,
|
||||||
|
"q_liter": 25.0
|
||||||
|
},
|
||||||
|
"reading_guide": "계산식에 고정변수를 대입하여 1일 물운반량 Q(리터/일)를 도출한 후, 줄눈절단 소요수량(30L/m)과 연동하여 보통인부 품 산정"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"table_id": "F0349",
|
||||||
|
"section": "12-11-3",
|
||||||
|
"section_name": "파형강관 관부설",
|
||||||
|
"source_line": 6406,
|
||||||
|
"category": "text_value",
|
||||||
|
"resolved_pum_form": "requirement",
|
||||||
|
"table_structure": "vertical_resource_with_flags",
|
||||||
|
"text_value_rules": [
|
||||||
|
{
|
||||||
|
"resource": "파형강관",
|
||||||
|
"raw_text": "별산",
|
||||||
|
"action": "flag_is_separate_cost",
|
||||||
|
"description": "자재비는 내역서 자재대에서 별도 계상"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resource": "커플링밴드",
|
||||||
|
"raw_text": "필요시적용",
|
||||||
|
"action": "flag_conditional_addition",
|
||||||
|
"default_ratio": "1EA / 6m",
|
||||||
|
"description": "주석 ①에 따라 6m당 1EA 조건부 가산"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reading_guide": "텍스트 값을 숫자로 강제 변환하지 않고 별산 및 조건부 플래그로 보존 처리"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,242 @@
|
|||||||
|
---
|
||||||
|
title: 산림품셈 form 미판정 14개 원문대조 실사 및 규명 명세서
|
||||||
|
category: 05_원가정보
|
||||||
|
status: verified
|
||||||
|
last_updated: 2026-09-17
|
||||||
|
sources:
|
||||||
|
- resources/data_work_item_master/work_item_master_2026-01-01.json
|
||||||
|
- resources/knowledge/original/행정규칙/임도 품셈 적용기준 (현 산림사업 표준품셈)/첨부/(산림청고시 제2025-82호) 산림사업 표준품셈.md
|
||||||
|
- resources/knowledge/technical_info/01_임도/05_원가정보/form_미판정_895_분류.md
|
||||||
|
---
|
||||||
|
|
||||||
|
# 산림품셈 form 미판정 14개 원문대조 실사 및 규명 명세서
|
||||||
|
|
||||||
|
본 문서는 `work_item_master_2026-01-01.json`에서 `pum_form=undetermined`(미판정)으로 분류된 산림품셈 14개 표 전체에 대해 2026년 산림사업 표준품셈 원문 고시 전문을 행 단위로 정밀 대조하여 헤더 복원, 구조 분기점, 수식 산정법, 글값 처리 규칙을 확정한 기술 명세서이다.
|
||||||
|
|
||||||
|
> ⚠ **규칙 준수**: 본 문서는 원문에서 무엇을 어떻게 읽어야 하는지 명세를 제공하며, 데이터 원장 JSON의 직접 수정은 개발 담당 AI(클로드 창)에서 수행한다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 종합 요약표
|
||||||
|
|
||||||
|
| 표 ID | 절 번호 | 공종명 | 원문 행 | 분류 유형 | 규명 핵심 및 복원 규칙 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| **F0140** | 5-26-1 | 막갈이 | L2874 | 머리 소실 | 2단 헤더: 가로축 막갈이깊이(9, 12, 15, 18, 21 cm) × 세로축 토성(사토, 양토, 식토). 보통인부 소요품. |
|
||||||
|
| **F0141** | 5-26-2 | 흙부수기 | L2886 | 머리 소실 | 2단 헤더: 가로축 막갈이깊이(9, 12, 15, 18, 21 cm) × 세로축 토성(사토, 양토, 식토). 보통인부 소요품. |
|
||||||
|
| **F0142** | 5-26-3 | 돌자갈치우기 | L2897 | 머리 소실 | 2단 헤더: 가로축 자갈함유율(10%이내, 10~30%, 30%이상) × 세로축 지목(개답, 개전). 보통인부 소요품. |
|
||||||
|
| **F0195** | 7-14 | 원목 운반-수확 | L3849 | 머리 소실 | 복합 3단 헤더: 가로 공종구분(저나르기, 트럭집재, 뗏목, 토장집재) × 수종별 1인 1일 공정량(㎥). |
|
||||||
|
| **F0248** | 9-7-1 | 콘크리트깨기(T<30㎝) | L4817 | 머리 소실 | 굴착기 0.7㎥ 작업능력 산정용 계수표: K=0.55, f=0.67, E=0.35, cm=22초. 공식 $Q=3600qkfE/cm$ 대입용. |
|
||||||
|
| **F0322** | 10-13-1 | 드론운반 | L6003 | 머리 소실 | 1행 가로 룩업표: 가로 수평거리(100~600m, 100m 단위)에 따른 드론운반공 인원(명/1,000본당). |
|
||||||
|
| **F0323** | 10-13-2 | 인력운반 | L6009 | 머리 소실 | 1행 가로 룩업표: 가로 수평거리(100~600m, 100m 단위)에 따른 보통인부 인원(명/1,000본당). |
|
||||||
|
| **F0333** | 12-1-3 | 한중 양생 시후카 | L6145 | 머리 소실 | 슬럼프(25, 40mm) 및 시멘트 품종(A, B, C종) × 양생온도별(0℃, -5℃, -10℃, -20℃) 시후카 소요량표. |
|
||||||
|
| **F0346** | 12-11-1 | VR관(소켓식) 부설 | L6360 | 머리 소실 | 2단 헤더: 관경(D800, D1000, D1200)에 따른 자재(VR관, 고무링, 지수활제) 및 크레인/배관공/인부 품. |
|
||||||
|
| **F0169** | 7-1-1 | 수확 인력집재 | L3361 | 혼합 행렬 | 천연림 모두베기 기준표. 경사도 3구간(어려움, 중, 쉬움) × 평균거리(100, 200, 300m) 2축 매트릭스. |
|
||||||
|
| **F0304** | 10-6-3 | 기타 임업자재 운반 | L5669 | 혼합 행렬 | 10종 임업자재(목재, 볏짚, 섶단 등) × 운반거리 20~200m 10단계가 압축된 다단 매트릭스. 자재별 피벗 분해 필요. |
|
||||||
|
| **F0356** | 12-17-1 | 펌프카 타설 일일시공량 | L6520 | 혼합 행렬 | 슬럼프 3단계(8~12, 15, 18cm이상) × 콘크리트구분(무근, 철근) 2축 매트릭스 일일시공량(㎥/일). |
|
||||||
|
| **F0257** | 9-11-1 | 콘크리트 줄눈 물운반 | L4961 | 공식·계수 | 인력 물운반 일일작업량($Q$) 산정 공식: $N=(V \times T)/(120L+Vt)$, $Q=N \times q$. 변수 대입식. |
|
||||||
|
| **F0349** | 12-11-3 | 파형강관 관부설 | L6406 | 글값 처리 | 비고란 지시어: 파형강관(`별산` $\rightarrow$ 자재대 별도계상), 커플링밴드(`필요시적용` $\rightarrow$ 6m당 1EA 조건부 가산). |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 세부 규명 내역
|
||||||
|
|
||||||
|
### A. 표 머리 소실 9개 표
|
||||||
|
|
||||||
|
#### 1. F0140 (5-26-1. 막갈이, 원문 L2874)
|
||||||
|
- **원문 위치**: 원문 L2874~L2880
|
||||||
|
- **원문 헤더 및 구조**:
|
||||||
|
```markdown
|
||||||
|
| 토성 | 막갈이깊이(cm) | | | | |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| | 9 | 12 | 15 | 18 | 21 |
|
||||||
|
| 사토 | 5 | 7 | 9 | 11 | 13 |
|
||||||
|
| 양토 | 6 | 8 | 11 | 13 | 15 |
|
||||||
|
| 식토 | 8 | 11 | 13 | 15 | 18 |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- 단위: 본문 토공 기준 (100㎡당 보통인부 소요품, 인)
|
||||||
|
- 첫 번째 열은 `토성`(사토, 양토, 식토) 조건.
|
||||||
|
- 가로 열은 `막갈이깊이(cm)` (9, 12, 15, 18, 21cm).
|
||||||
|
- 셀 수치는 `보통인부(인)` 수량임. 2행의 깊이 숫자를 데이터가 아닌 열 헤더로 복원해야 함.
|
||||||
|
|
||||||
|
#### 2. F0141 (5-26-2. 흙부수기, 원문 L2886)
|
||||||
|
- **원문 위치**: 원문 L2886~L2892
|
||||||
|
- **원문 헤더 및 구조**:
|
||||||
|
```markdown
|
||||||
|
| 토성 | 막갈이깊이(cm) | | | | |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| | 9 | 12 | 15 | 18 | 21 |
|
||||||
|
| 사토 | 3 | 4 | 5 | 6 | 7 |
|
||||||
|
| 양토 | 4 | 5 | 6 | 7 | 8 |
|
||||||
|
| 식토 | 5 | 6 | 7 | 8 | 9 |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- F0140과 동일한 2단 헤더 구조.
|
||||||
|
- 토성 × 깊이에 따른 흙부수기 `보통인부(인)` 수량.
|
||||||
|
|
||||||
|
#### 3. F0142 (5-26-3. 돌자갈치우기, 원문 L2897)
|
||||||
|
- **원문 위치**: 원문 L2897~L2902
|
||||||
|
- **원문 헤더 및 구조**:
|
||||||
|
```markdown
|
||||||
|
| 구분(지목) | 경토깊이(cm) 돌자갈 함유율 | | |
|
||||||
|
|---|---|---|---|
|
||||||
|
| | 10% 이내 | 10∼30% | 30% 이상 |
|
||||||
|
| 개답 | 2 | 6 | 17 |
|
||||||
|
| 개전 | 0.5 | 3.5 | 6.5 |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- 첫 열은 `구분/지목`(개답, 개전), 가로 헤더는 `돌자갈 함유비율`(10% 이내, 10~30%, 30% 이상).
|
||||||
|
- 셀 수치는 잔돌 제거 `보통인부(인)` 수량.
|
||||||
|
|
||||||
|
#### 4. F0195 (7-14. 원목 운반-수확, 원문 L3849)
|
||||||
|
- **원문 위치**: 원문 L3849~L3855
|
||||||
|
- **원문 구조**:
|
||||||
|
- 종별(용재 원목, 신재 활잡, 목탄) × 공정(저나르기, 트럭집재, 뗏목, 토장집재, 상하차).
|
||||||
|
- 수종별(침엽수, 활엽수) 1회 적재량 및 1인 1일 공정량(㎥/인·일 또는 kg/인·일, 연km)이 복합 셀로 구성됨.
|
||||||
|
- 파서가 긴 텍스트와 분수형 규격을 한 셀로 뭉갠 것이 원인이므로, 공종별 단일 열(column)로 분리해야 함.
|
||||||
|
|
||||||
|
#### 5. F0248 (9-7-1. T=30㎝ 미만 [주]⑥ 굴착기 작업능력 산정, 원문 L4817)
|
||||||
|
- **원문 위치**: 원문 L4817~L4823
|
||||||
|
- **원문 구조**:
|
||||||
|
```markdown
|
||||||
|
| 구 분 | 적 용 |
|
||||||
|
|---|---|
|
||||||
|
| 버킷계수(K) | 0.55 |
|
||||||
|
| 체적환산계수(f) | 1/1.5 (0.67) |
|
||||||
|
| 작업효율(E) | 0.35 |
|
||||||
|
| 사이클타임(㎝) | 22″ (180°) |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- 본 표는 자원 투입표(requirement)가 아닌, 주석 ③의 시간당 작업능력 공식 $Q = \frac{3600 \cdot q \cdot k \cdot f \cdot E}{cm}$ 에 대입되는 **계수(coefficient) 명세표**임.
|
||||||
|
- `pum_form=coefficient`로 재분류해야 함.
|
||||||
|
|
||||||
|
#### 6. F0322 (10-13-1. 드론운반, 원문 L6003)
|
||||||
|
- **원문 위치**: 원문 L6003~L6006
|
||||||
|
- **원문 구조**:
|
||||||
|
```markdown
|
||||||
|
| 수평거리 | 100m | 200m | 300m | 400m | 500m | 600m |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| 인원(명) | 0.29 | 0.37 | 0.46 | 0.54 | 0.62 | 0.70 |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- 단위: 묘목 1,000본 운반 기준 (본문 계산식: `드론운반공/1,000본 = ④ × X ÷ 360 ÷ 5`).
|
||||||
|
- 행 축이 수량/품 이름(`드론운반공`, 명)이고, 열 축이 수평거리(m)인 **가로 전개형 단일 자원표(horizontal_lookup)**임.
|
||||||
|
|
||||||
|
#### 7. F0323 (10-13-2. 인력운반, 원문 L6009)
|
||||||
|
- **원문 위치**: 원문 L6009~L6012
|
||||||
|
- **원문 구조**:
|
||||||
|
```markdown
|
||||||
|
| 수평거리 | 100m | 200m | 300m | 400m | 500m | 600m |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| 인원(명) | 0.67 | 0.73 | 0.79 | 0.85 | 0.92 | 0.99 |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- F0322와 동일하게 묘목 1,000본 인력운반 기준 `보통인부(인)` 가로 전개형 단일 자원표임.
|
||||||
|
|
||||||
|
#### 8. F0333 (12-1-3. 인력비빔 타설 [주]⑪ 한중 양생, 원문 L6145)
|
||||||
|
- **원문 위치**: 원문 L6145~L6153
|
||||||
|
- **원문 구조**:
|
||||||
|
```markdown
|
||||||
|
| 슬럼프(mm) | 품종 | 0℃때 | -5℃때 | -10℃때 | -20℃때 |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| 25 | (A) | 357 | 893 | 931 | - |
|
||||||
|
| | (B) | 346 | 828 | 1,011 | - |
|
||||||
|
| | (C) | 340 | 779 | 1,049 | - |
|
||||||
|
| 40 | (A) | 335 | 838 | 1,032 | - |
|
||||||
|
| | (B) | 323 | 775 | 1,101 | - |
|
||||||
|
| | (C) | 318 | 728 | 1,157 | - |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- 단위: ㎥당 시후카(열량자재) 소요량.
|
||||||
|
- 1열의 슬럼프(25, 40)와 2열의 품종(A, B, C)이 2단 복합 세로축이고, 가로축은 양생온도임.
|
||||||
|
|
||||||
|
#### 9. F0346 (12-11-1. VR관(소켓식), 원문 L6360)
|
||||||
|
- **원문 위치**: 원문 L6360~L6371
|
||||||
|
- **원문 헤더 복원**:
|
||||||
|
```markdown
|
||||||
|
| 구 분 | 규격 | 단위 | ∅800mm | ∅1000mm | ∅1200mm | 비 고 |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| VR관 | - | m | 1.0 | 1.0 | 1.0 | 별도계산 |
|
||||||
|
| 고무링 | - | 개 | 1.0 | 1.0 | 1.0 | - |
|
||||||
|
| 지수활제 | - | g | 140 | 180 | 240 | - |
|
||||||
|
| 크레인 | 10ton | hr | 0.62/2.5 | 0.76/2.5 | 0.90/2.5 | - |
|
||||||
|
| 배관공 | - | 인 | 0.26/2.5 | 0.35/2.5 | 0.46/2.5 | - |
|
||||||
|
| 보통인부 | - | 인 | 0.96/2.5 | 1.78/2.5 | 2.35/2.5 | - |
|
||||||
|
```
|
||||||
|
- **판정 및 읽는 법**:
|
||||||
|
- 단위: m당.
|
||||||
|
- 관경(800, 1000, 1200mm)이 가로로 펼쳐진 표준 가로전개형 자원 투입표임. 분수 품(`0.62/2.5` 등)은 시간당 실작업능력 나눗셈 계산값($0.248\text{ hr}$)으로 산출함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B. 다단·가로형 혼합 행렬 3개 표
|
||||||
|
|
||||||
|
#### 1. F0169 (7-1-1. 수확 인력집재, 원문 L3361)
|
||||||
|
- **원문 위치**: 원문 L3361~L3367
|
||||||
|
- **구조**:
|
||||||
|
- `1. 천연림 모두베기`: 경사도 3구간(어려움<15°, 중>30°, 쉬움 15~30°) × 평균집재거리(100m이하, 200m이하, 300m이하).
|
||||||
|
- 단위: 1인 1일당 집재재적 (㎥/인·일).
|
||||||
|
- 분기: L3369의 `2. 인공림 모두베기`와 L3379의 `3. 골라베기`가 별도 절/소제목으로 이어지므로, F0169는 천연림 모두베기 1개 매트릭스로 완결됨.
|
||||||
|
|
||||||
|
#### 2. F0304 (10-6-3. 기타 임업자재 인력운반, 원문 L5669)
|
||||||
|
- **원문 위치**: 원문 L5669~L5674
|
||||||
|
- **구조**:
|
||||||
|
- 자재 10종: 소재(인/㎥), 제재(인/㎥), 볏짚(인/100속), 섶단·새(인/100속), 나뭇가지단(인/100속), 자른떼(인/100매), 식생낭(인/100개), 편책용말뚝(인/100본), 볏짚멍석(인/1000㎡), 비료(인/톤).
|
||||||
|
- 운반거리: 20m ~ 200m (20m 단위 10단계).
|
||||||
|
- **해소 규칙**:
|
||||||
|
- 10개 자재종별을 행(row)으로 두고 10개 거리구간을 열(column)로 전치(pivot)하면 10×10 표준 매트릭스로 정규화됨.
|
||||||
|
|
||||||
|
#### 3. F0356 (12-17-1. 펌프카 타설 일일시공량, 원문 L6520)
|
||||||
|
- **원문 위치**: 원문 L6520~L6526
|
||||||
|
- **구조**:
|
||||||
|
- 행(슬럼프): `8 ~ 12 cm`, `15 cm`, `18 cm 이상` (3구간).
|
||||||
|
- 열(콘크리트): `무근콘크리트` (130, 135, 145 ㎥/일), `철근콘크리트` (125, 130, 140 ㎥/일).
|
||||||
|
- **결합 규칙**:
|
||||||
|
- 산출 공식: $\text{일일 시공량}(Q) = \text{기준시공량} \times f_1 \times f_2$.
|
||||||
|
- 주석의 시설유형 계수($f_1 = 1.4, 1.0, 0.8, 0.3$) 및 현장조건 계수($f_2$)와 연동됨.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### C. 공식·설명 합침 1개 표
|
||||||
|
|
||||||
|
#### F0257 (9-11-1. 콘크리트 줄눈절단 물운반, 원문 L4961)
|
||||||
|
- **원문 위치**: 원문 L4961~L4969
|
||||||
|
- **수식 및 변수 정의**:
|
||||||
|
- $N = \frac{V \times T}{120 \times L + V \times t} \quad (\text{회/일})$
|
||||||
|
- $Q = N \times q \quad (\ell/\text{일})$
|
||||||
|
- 변수값:
|
||||||
|
- $L = 0.1 \text{ km}$ (운반거리)
|
||||||
|
- $V = 2.5 \text{ km/hr}$ (운반속도)
|
||||||
|
- $t = 4.0 \text{ min}$ (적재적하시간)
|
||||||
|
- $T = 450 \text{ 분}$ ($480\text{분} - 30\text{분}$, 실작업시간)
|
||||||
|
- $q = 25 \ \ell$ (1회 운반량)
|
||||||
|
- **해석 및 읽는 법**:
|
||||||
|
- 본 표는 숫자를 찾는 룩업표가 아니라, $Q$를 산정하여 품셈 본문의 물운반 비용(보통인부 품 = 줄눈절단 소요수량 $30\ell/\text{m} \div Q$)을 계산하는 **파라미터 정의 표**임.
|
||||||
|
- `pum_form=formula`로 확정.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### D. 값이 글로 적힘 1개 표
|
||||||
|
|
||||||
|
#### F0349 (12-11-3. 파형강관 관부설, 원문 L6406)
|
||||||
|
- **원문 위치**: 원문 L6406~L6418
|
||||||
|
- **원문 내용 및 텍스트 지시어**:
|
||||||
|
- 관경: $\phi 800\text{mm}, \phi 1000\text{mm}, \phi 1200\text{mm}$
|
||||||
|
- `파형강관`: 수량 1.0m, 비고란 **`별산`** $\rightarrow$ 파형강관 자재비는 내역서 자재집계표에서 관급/사급 단가로 별도 반영 (`is_separate_cost = True`).
|
||||||
|
- `커플링밴드`: 수량 공란, 비고란 **`필요시적용`** $\rightarrow$ 주석 ① "커플링밴드 1EA/6m이며 필요시 별도 산정한다"에 따라 연결부 필요 시 6m당 1EA 별도 계상 (`is_conditional = True`, `unit_quantity = 0.1667 EA/m`).
|
||||||
|
- 노무·장비품: 크레인(5t), 배관공, 보통인부는 1일 8시간 작업 기준 분수식(`0.31/8.0` 등)으로 정상 계산.
|
||||||
|
- **해소 규칙**:
|
||||||
|
- `별산`과 `필요시적용`을 파서가 무효/오류로 버리지 않고, 별도 계상 플래그 및 조건부 자재 항목으로 보존하여 견적 생성 시 사용자 옵션으로 제공.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 결론 및 후속 조치 가이드
|
||||||
|
|
||||||
|
1. **산림 14개 표는 전수 원문 대조 실사를 통해 100% 원형 및 계산 규칙이 규명되었음.**
|
||||||
|
2. **파서 수정 가이드**:
|
||||||
|
- 2단 헤더(깊이, 관경, 규격) 병합 로직 보강 $\rightarrow$ F0140, F0141, F0142, F0333, F0346 해소.
|
||||||
|
- 1행 가로 룩업 테이블(거리별 인원) 지원 $\rightarrow$ F0322, F0323 해소.
|
||||||
|
- 공식 계수표(`coefficient`) 및 파라미터표(`formula`) 스키마 인정 $\rightarrow$ F0248, F0257 해소.
|
||||||
|
- 텍스트 지시어(`별산`, `필요시적용`)의 플래그 필드 수용 $\rightarrow$ F0349 해소.
|
||||||
|
- 다단 자재 매트릭스 피벗 분해 $\rightarrow$ F0169, F0304, F0356 해소.
|
||||||
|
3. 본 명세서 및 짝꿍 JSON(`산림품셈_form_미판정_14개_원문대조_규명.json`)을 바탕으로 클로드 창에서 원장 데이터 갱신을 진행하도록 인계함.
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,208 @@
|
|||||||
|
# 산림사업 표준품셈 결측 밑수 155개 실측 자리 명세서
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **작성자**: Antigravity (원문 실측 및 위치 분석)
|
||||||
|
> **근거 원문**: `(산림청고시 제2025-82호) 산림사업 표준품셈.md` & `work_item_master_2026-01-01.json`
|
||||||
|
> **목적**: 밑수(`basis_quantity`, `basis_unit`)가 결측(`missing`)으로 분류된 256개 표 중, 원래 밑수가 없는 무차원 계수/서식 101개를 제외한 **실제 채움 대상 155개**의 원문 위치(본문 48개 · 표머리 107개)와 추출 규칙을 명세하여 단가 10배·100배 왜곡 사고를 원천 방지함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 밑수 결측 256개 정밀 셈 및 분류 요약
|
||||||
|
|
||||||
|
| 구분 | 표 수 | 비율 | 성격 및 처리 방안 | 어디서 읽는가 (추출 규칙) |
|
||||||
|
| :--- | :---: | :---: | :--- | :--- |
|
||||||
|
| **A. 본문 윗줄 / 소제목** | **48개** | **18.8%** | 표 바로 윗줄 괄호 또는 절 제목 괄호에 밑수 명시 | • 표 시작 1~3줄 위 단독 괄호라인 `(100m당)`, `(100㎡당)`<br>• 또는 절 소제목 `### 2-1-6. 나무주사(100본당)`의 괄호 |
|
||||||
|
| **B. 표머리 헤더 셀** | **107개** | **41.8%** | 표의 컬럼 헤더 셀 텍스트 내부에 기준 단위 명시 | • 헤더 셀 내 슬래시 뒤 단위 `인/ha`, `ℓ/일,대`, `m/본`<br>• 또는 헤더 내 `(단위: 인/km당)`, `재료비(1km당)` |
|
||||||
|
| **C. 원래 밑수 없음**<br>(무차원/계수/서식) | **101개** | **39.4%** | 기계손료율, 작업난이도 할증률, 환산계수, 양식 샘플 | **밑수 채움 대상 아님** (`basis = dimensionless`)<br>결측 에러가 아닌 정상 무차원 표로 확정 처리 |
|
||||||
|
| **합계** | **256개** | **100.0%** | **실제 채움 대상: 155개 (A + B)** | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 꼴마다 어디서 읽는지 (추출 규칙 및 대표 예시)
|
||||||
|
|
||||||
|
### 꼴 A. 본문 윗줄 / 소제목에서 읽는 표 (48개)
|
||||||
|
- **어디서 읽는가**: 표 시작 바로 윗줄(`source_line - 1` 또는 `-2`)에 단독으로 위치한 괄호 `(100m당)`, `(100㎡당)`, `(일당)` 또는 마크다운 3단계 헤더 `### 절 번호(밑수)`의 괄호 텍스트를 정규식 `\(([^)]*당)\)`으로 추출.
|
||||||
|
- **대표 보기**:
|
||||||
|
- `2-1-6 나무주사(100본당)` (L1500): 절 소제목 `### 2-1-6. 나무주사(100본당)` $
ightarrow$ **`100본당`**
|
||||||
|
- `2-1-8 유인 헬기(160ha당)` (L1535): 절 소제목 `### 2-1-8. 유인 헬기(160ha당)` $
ightarrow$ **`160ha당`**
|
||||||
|
- `5-17-1 떼조공` (L2601): 표 바로 윗줄 L2601 단독 라인 `(100m당)` $
ightarrow$ **`100m당`**
|
||||||
|
- `5-13 떼심기` (L2509): 표 바로 윗줄 L2509 단독 라인 `(인/100㎡당)` $
ightarrow$ **`100㎡당`**
|
||||||
|
|
||||||
|
### 꼴 B. 표머리 헤더 셀에서 읽는 표 (107개)
|
||||||
|
- **어디서 읽는가**: 마크다운 표 헤더 줄(`source_line`)의 각 컬럼 셀 텍스트 내부에서 `(단위 : xxx당)`, `인/ha`, `ℓ/일,대`, `소요량기준` 문구를 검출하여 단위 분모를 추출.
|
||||||
|
- **대표 보기**:
|
||||||
|
- `3-1 경계표시` (L1731): 헤더 셀 `(단위 : 인/ha)` $
ightarrow$ **`1ha당`**
|
||||||
|
- `3-3 작업로 설치` (L1754): 헤더 셀 `(단위 : 인/km당)` $
ightarrow$ **`1km당`**
|
||||||
|
- `2-1-1 휘발유·오일` (L1328): 헤더 셀 `주연료 (ℓ/일,대)` $
ightarrow$ **`1일·대당`**
|
||||||
|
- `2-1-4 페인트/마킹테이프` (L1402): 헤더 셀 `재료비(1km 소요량기준)` $
ightarrow$ **`1km당`**
|
||||||
|
- `4-2-2 1,000㎡당` (L1997): 헤더 셀 `소요인력(인/1,000㎡)` $
ightarrow$ **`1,000㎡당`**
|
||||||
|
|
||||||
|
### 꼴 C. 원래 밑수가 없는 정상 무차원 표 (101개)
|
||||||
|
- **성격**: 단위당 물량이 아니라 특정 조건에 곱해지는 백분율(%) 또는 계수(비율)이므로 밑수 자체가 존재하지 않음.
|
||||||
|
- **대표 보기**:
|
||||||
|
- `1-1-1 잣나무림 간벌수량표` (L146): 지위지수별 계수표 (`form = coefficient`)
|
||||||
|
- `1-2-1 벌채작업 난이도 할증률` (L251): 지형·경사별 % 할증률 표 (`form = coefficient`)
|
||||||
|
- `2-2-3 집재장비 손료계수` (L1641): 시간당 손료계수 $10^{-4}$ 표 (`form = coefficient`)
|
||||||
|
- `11-1 표준설계서 양식 샘플` (L6015): 기재 서식 참고표 (`form = reference`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 실채움 대상 155개 상세 명세표 (본문 48개 + 표머리 107개)
|
||||||
|
|
||||||
|
| 연번 | 표 ID | 산림 절 번호 | 공종명 | 원문 줄 | 꼴 구분 | 추출된 밑수 텍스트 | 어디서 읽는가 (파싱 규칙) |
|
||||||
|
| :---: | :---: | :--- | :--- | :---: | :---: | :---: | :--- |
|
||||||
|
| 1 | **F0132** | `5-22-4. 평떼 시비` | 평떼 시비 | L2731 | **본문 윗줄/소제목** | `일당` | 표 시작 윗줄 L2729의 괄호에서 추출 |
|
||||||
|
| 2 | **F0154** | `6-2-1. 둘레베기` | 둘레베기 | L3079 | **본문 윗줄/소제목** | `1ha당, 100본당` | 표 시작 윗줄 L3077의 괄호에서 추출 |
|
||||||
|
| 3 | **F0237** | `8-11. 이동식 임목 파쇄` | 이동식 임목 파쇄 | L4649 | **본문 윗줄/소제목** | `단위 : 1대 1조, 시간당` | 표 시작 윗줄 L4647의 괄호에서 추출 |
|
||||||
|
| 4 | **F0002** | `1-2-2. 단위 표준` | 단위 표준 | L577 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 5 | **F0003** | `1-2-2. 단위 표준` | 단위 표준 | L657 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 6 | **F0004** | `1-2-3. 토질` | 토질 | L709 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 7 | **F0005** | `1-2-3. 토질` | 토질 | L732 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 8 | **F0006** | `1-2-4. 재료 및 자재의 단가` | 재료 및 자재의 단가 | L759 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 9 | **F0007** | `1-2-7. 운반` | 운반 | L790 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 10 | **F0013** | `1-4-1. 작업시기` | 작업시기 | L930 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 11 | **F0014** | `1-4-2. 조림 후 경과연수` | 조림 후 경과연수 | L941 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 12 | **F0015** | `1-4-3. 집단화정도` | 집단화정도 | L951 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 13 | **F0016** | `1-4-4. 작업구역` | 작업구역 | L966 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 14 | **F0017** | `1-4-5. 경사도` | 경사도 | L981 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 15 | **F0018** | `1-4-6. 작업장까지의 이동거리` | 작업장까지의 이동거리 | L998 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 16 | **F0019** | `1-4-7. 하층식생` | 하층식생 | L1011 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 17 | **F0020** | `1-4-8. 장애물의 정도` | 장애물의 정도 | L1019 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 18 | **F0021** | `1-4-9. 제거대상 식생` | 제거대상 식생 | L1029 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 19 | **F0022** | `1-4-10. 토양상태` | 토양상태 | L1039 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 20 | **F0023** | `1-4-11. 덩굴피복도` | 덩굴피복도 | L1049 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 21 | **F0024** | `1-4-12. 제거대상 피복도` | 제거대상 피복도 | L1061 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 22 | **F0025** | `1-4-13. 주행 장애물 상태` | 주행 장애물 상태 | L1073 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 23 | **F0026** | `1-4-14. 집재방향` | 집재방향 | L1081 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 24 | **F0027** | `1-4-15. 횡단운반거리` | 횡단운반거리 | L1095 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 25 | **F0028** | `1-4-16. 규격재 생산` | 규격재 생산 | L1105 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 26 | **F0029** | `1-4-17. 방제대상목 분포` | 방제대상목 분포 | L1111 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 27 | **F0030** | `1-4-18. 방제대상목 평균 경급` | 방제대상목 평균 경급 | L1125 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 28 | **F0031** | `1-4-18. 방제대상목 평균 경급` | 방제대상목 평균 경급 | L1135 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 29 | **F0032** | `1-4-20. 방제지 사면` | 방제지 사면 | L1143 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 30 | **F0033** | `1-4-21. 방제지 접근성` | 방제지 접근성 | L1155 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 31 | **F0034** | `1-4-22. 방제 수종` | 방제수종 | L1168 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 32 | **F0035** | `1-4-23. 방제목 운반거리` | 방제목 운반거리 | L1175 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 33 | **F0036** | `1-4-24. 방제장비 규격` | 방제장비 규격 | L1188 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 34 | **F0037** | `1-4-25. 작업시간 제한` | 작업시간 제한 | L1197 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 35 | **F0038** | `1-4-26. 소규모 작업물량 제한` | 소규모 작업물량 제한 | L1212 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 36 | **F0040** | `1-7-1. 거푸집 사용` | 거푸집 사용 | L1266 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 37 | **F0041** | `1-7-4. 공사용수` | 공사용수 | L1286 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 38 | **F0455** | `2-1. 풀베기, (1) 둘레베기(조림목 본수 2,700본/ha, 조림1년차)` | 소요재료 | L8031 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 39 | **F0042** | `2-1-1. 휘발유․오일` | 휘발유․오일 | L1305 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 40 | **F0043** | `2-1-1. 휘발유․오일` | 휘발유․오일 | L1328 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 41 | **F0044** | `2-1-1. 휘발유․오일` | 휘발유․오일 | L1340 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 42 | **F0045** | `2-1-1. 휘발유․오일` | 휘발유․오일 | L1346 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 43 | **F0047** | `2-1-2. 경유` | 경유 | L1361 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 44 | **F0048** | `2-1-3. 우드그래플 소모품` | 우드그래플 소모품 | L1387 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 45 | **F0049** | `2-1-4. 페인트 및 마킹테이프` | 페인트 및 마킹테이프 | L1402 | **본문 윗줄/소제목** | `1km 소요량기준` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 46 | **F0050** | `2-1-4. 페인트 및 마킹테이프` | 페인트 및 마킹테이프 | L1417 | **본문 윗줄/소제목** | `ha당 소요량` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 47 | **F0052** | `2-1-4. 페인트 및 마킹테이프` | 페인트 및 마킹테이프 | L1444 | **본문 윗줄/소제목** | `ha당 소요량` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 48 | **F0057** | `2-1-7. 소각, 매몰, 훈증, 박피` | 소각, 매몰, 훈증, 박피 | L1518 | **본문 윗줄/소제목** | `표머리 명시 단위` | 직전 본문 설명문/소제목에서 추출 |
|
||||||
|
| 49 | **F0061** | `2-1-11. 지상 약제살포` | 지상 약제살포 | L1570 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1570 셀 내부에서 추출 |
|
||||||
|
| 50 | **F0062** | `2-1-12. 그물망 피복` | 그물망 피복 | L1579 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1579 셀 내부에서 추출 |
|
||||||
|
| 51 | **F0063** | `2-1-13. 파쇄` | 파쇄 | L1586 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1586 셀 내부에서 추출 |
|
||||||
|
| 52 | **F0456** | `2-2. 풀베기, (2) 모두베기(조림목 본수 2,700본/ha, 조림2년차)` | 기계손료 | L8061 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L8061 셀 내부에서 추출 |
|
||||||
|
| 53 | **F0075** | `3-1. 경계표시` | 경계표시 | L1731 | **표머리 헤더** | `단위 : 인/ha` | 표머리 헤더 L1731 셀 내부에서 추출 |
|
||||||
|
| 54 | **F0472** | `3-1. 임업용 동력기계톱, 우드그래플, 소형트럭` | 경계표시 | L8753 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L8753 셀 내부에서 추출 |
|
||||||
|
| 55 | **F0473** | `3-2. 임업용 동력기계톱, 스마트집재기, 우드그래플, 초소형포워더` | 작업로 선정 | L8828 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L8828 셀 내부에서 추출 |
|
||||||
|
| 56 | **F0077** | `3-3. 작업로 설치` | 작업로 설치 | L1754 | **표머리 헤더** | `단위 : 인/km당` | 표머리 헤더 L1754 셀 내부에서 추출 |
|
||||||
|
| 57 | **F0474** | `3-3. 하베스터, 타워야더, 우드그래플, 소형포워더` | 작업로 설치 | L8912 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L8912 셀 내부에서 추출 |
|
||||||
|
| 58 | **F0078** | `3-4-3. 임산물 운반로 및 작업로 보수비 산정` | 임산물 운반로 및 작업로 보수비 산정 | L1815 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1815 셀 내부에서 추출 |
|
||||||
|
| 59 | **F0080** | `3-6. 산물 임내정리` | 산물 임내정리 | L1867 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1867 셀 내부에서 추출 |
|
||||||
|
| 60 | **F0081** | `3-7. 재해산물 수집` | 재해산물 수집 | L1887 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1887 셀 내부에서 추출 |
|
||||||
|
| 61 | **F0082** | `3-8. 드론 영상 촬영` | 드론 영상 촬영 | L1901 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1901 셀 내부에서 추출 |
|
||||||
|
| 62 | **F0475** | `4-1. 소나무재선충병방제` | 수확베기 | L8989 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L8989 셀 내부에서 추출 |
|
||||||
|
| 63 | **F0083** | `4-1-1. 임업용 동력기계톱` | 임업용 동력기계톱 | L1929 | **표머리 헤더** | `단위 : ㎥/1인/1일` | 표머리 헤더 L1929 셀 내부에서 추출 |
|
||||||
|
| 64 | **F0084** | `4-1-2. 하베스터(부착형 스트로크)` | 하베스터(부착형 스트로크) | L1947 | **표머리 헤더** | `단위 : ㎥/1인/1일` | 표머리 헤더 L1947 셀 내부에서 추출 |
|
||||||
|
| 65 | **F0085** | `4-1-2. 하베스터(부착형 스트로크)` | 하베스터(부착형 스트로크) | L1957 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L1957 셀 내부에서 추출 |
|
||||||
|
| 66 | **F0476** | `4-2. 참나무시들음병방제` | 단목베기 | L9106 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L9106 셀 내부에서 추출 |
|
||||||
|
| 67 | **F0088** | `4-3. 위험목 베기` | 위험목 베기 | L2012 | **표머리 헤더** | `인/본당` | 표머리 헤더 L2012 셀 내부에서 추출 |
|
||||||
|
| 68 | **F0089** | `4-4. 가지정리` | 가지정리 | L2041 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2041 셀 내부에서 추출 |
|
||||||
|
| 69 | **F0090** | `4-5. 벌도 위험목 점검` | 벌도 위험목 점검 | L2052 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2052 셀 내부에서 추출 |
|
||||||
|
| 70 | **F0091** | `4-6. 벌목부 작업안전 보조` | 벌목부 작업안전 보조 | L2062 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2062 셀 내부에서 추출 |
|
||||||
|
| 71 | **F0095** | `5-1-3. 교목굴취(근원직경)` | 교목굴취(근원직경) | L2156 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2156 셀 내부에서 추출 |
|
||||||
|
| 72 | **F0097** | `5-1-5. 떼운반 적재 기준표` | 떼운반 적재 기준표 | L2177 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2177 셀 내부에서 추출 |
|
||||||
|
| 73 | **F0100** | `5-3-1. 나무식재` | 나무식재 | L2230 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2230 셀 내부에서 추출 |
|
||||||
|
| 74 | **F0101** | `5-3-1. 나무식재` | 나무식재 | L2242 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2242 셀 내부에서 추출 |
|
||||||
|
| 75 | **F0108** | `5-3-5. 교목식재(흉고직경)` | 교목식재(흉고직경) | L2355 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2355 셀 내부에서 추출 |
|
||||||
|
| 76 | **F0117** | `5-12. 떼붙임(재배잔디)` | 떼붙임(재배잔디) | L2496 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2496 셀 내부에서 추출 |
|
||||||
|
| 77 | **F0126** | `5-19-1. 표토절취 및 모으기` | 표토절취 및 모으기 | L2653 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2653 셀 내부에서 추출 |
|
||||||
|
| 78 | **F0127** | `5-19-2. 표토펴기 및 고르기` | 표토펴기 및 고르기 | L2664 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2664 셀 내부에서 추출 |
|
||||||
|
| 79 | **F0129** | `5-21. 표토이식` | 표토이식 | L2689 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2689 셀 내부에서 추출 |
|
||||||
|
| 80 | **F0137** | `5-24-2. 뿜어붙이기-기계/마사토` | 뿜어붙이기-기계/마사토 | L2814 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2814 셀 내부에서 추출 |
|
||||||
|
| 81 | **F0138** | `5-24-2. 뿜어붙이기-기계/마사토` | 뿜어붙이기-기계/마사토 | L2831 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2831 셀 내부에서 추출 |
|
||||||
|
| 82 | **F0140** | `5-26-1. 막갈이` | 막갈이 | L2874 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2874 셀 내부에서 추출 |
|
||||||
|
| 83 | **F0141** | `5-26-2. 흙부수기` | 흙부수기 | L2886 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2886 셀 내부에서 추출 |
|
||||||
|
| 84 | **F0142** | `5-26-3. 돌자갈치우기` | 돌자갈치우기 | L2897 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2897 셀 내부에서 추출 |
|
||||||
|
| 85 | **F0143** | `5-27. 식재면 관리` | 식재면 관리 | L2905 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2905 셀 내부에서 추출 |
|
||||||
|
| 86 | **F0144** | `5-28-1. 짚망` | 짚망 | L2919 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2919 셀 내부에서 추출 |
|
||||||
|
| 87 | **F0145** | `5-28-2. 방초매트 및 야자섬유매트 포장` | 방초매트 및 야자섬유매트 포장 | L2929 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L2929 셀 내부에서 추출 |
|
||||||
|
| 88 | **F0152** | `5-34. 묘목 소운반` | 묘목 소운반 | L3049 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3049 셀 내부에서 추출 |
|
||||||
|
| 89 | **F0153** | `6-1. 비료주기` | 비료주기 | L3062 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3062 셀 내부에서 추출 |
|
||||||
|
| 90 | **F0155** | `6-2-2. 줄베기` | 줄베기 | L3089 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3089 셀 내부에서 추출 |
|
||||||
|
| 91 | **F0156** | `6-2-3. 모두베기` | 모두베기 | L3105 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3105 셀 내부에서 추출 |
|
||||||
|
| 92 | **F0157** | `6-3. 맹아제거` | 맹아제거 | L3122 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3122 셀 내부에서 추출 |
|
||||||
|
| 93 | **F0158** | `6-4-1. 덩굴걷기` | 덩굴걷기 | L3143 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3143 셀 내부에서 추출 |
|
||||||
|
| 94 | **F0159** | `6-4-2. 덩굴 약제 살포처리` | 덩굴 약제 살포처리 | L3153 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3153 셀 내부에서 추출 |
|
||||||
|
| 95 | **F0160** | `6-4-3. 소금처리` | 소금처리 | L3164 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3164 셀 내부에서 추출 |
|
||||||
|
| 96 | **F0161** | `6-4-4. 뿌리제거` | 뿌리제거 | L3183 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3183 셀 내부에서 추출 |
|
||||||
|
| 97 | **F0162** | `6-4-4. 뿌리제거` | 뿌리제거 | L3234 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3234 셀 내부에서 추출 |
|
||||||
|
| 98 | **F0163** | `6-5. 어린나무 가꾸기` | 어린나무가꾸기 | L3244 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3244 셀 내부에서 추출 |
|
||||||
|
| 99 | **F0169** | `7-1-1. 수확` | 수확 | L3361 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3361 셀 내부에서 추출 |
|
||||||
|
| 100 | **F0170** | `7-1-1. 수확` | 수확 | L3371 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3371 셀 내부에서 추출 |
|
||||||
|
| 101 | **F0171** | `7-1-1. 수확` | 수확 | L3381 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3381 셀 내부에서 추출 |
|
||||||
|
| 102 | **F0172** | `7-1-2. 숲가꾸기, 병해충방제` | 숲가꾸기, 병해충방제 | L3395 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3395 셀 내부에서 추출 |
|
||||||
|
| 103 | **F0174** | `7-3. 아키야윈치(임업용 윈치) 집재` | 아키야윈치(임업용 윈치) | L3439 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3439 셀 내부에서 추출 |
|
||||||
|
| 104 | **F0175** | `7-4-1. 수확` | 수확 | L3452 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3452 셀 내부에서 추출 |
|
||||||
|
| 105 | **F0176** | `7-4-2. 숲가꾸기, 산림병해충방제` | 숲가꾸기, 병해충방제 | L3476 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3476 셀 내부에서 추출 |
|
||||||
|
| 106 | **F0177** | `7-5-1. 수확` | 수확 | L3496 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3496 셀 내부에서 추출 |
|
||||||
|
| 107 | **F0178** | `7-5-2. 숲가꾸기, 병해충방제` | 숲가꾸기, 병해충방제 | L3519 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3519 셀 내부에서 추출 |
|
||||||
|
| 108 | **F0179** | `7-6. 스윙야더 집재` | 스윙야더 집재 | L3542 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3542 셀 내부에서 추출 |
|
||||||
|
| 109 | **F0180** | `7-7-1. 수확` | 수확 | L3556 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3556 셀 내부에서 추출 |
|
||||||
|
| 110 | **F0181** | `7-7-2. 숲가꾸기, 병해충방제` | 숲가꾸기, 병해충방제 | L3580 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3580 셀 내부에서 추출 |
|
||||||
|
| 111 | **F0182** | `7-8-1. 가선설치` | 가선설치 | L3607 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3607 셀 내부에서 추출 |
|
||||||
|
| 112 | **F0183** | `7-8-2. 가선해체` | 가선해체 | L3619 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3619 셀 내부에서 추출 |
|
||||||
|
| 113 | **F0184** | `7-8-3. 집재 소요인력` | 집재 소요인력 | L3631 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3631 셀 내부에서 추출 |
|
||||||
|
| 114 | **F0185** | `7-9-1. 수확` | 수확 | L3656 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3656 셀 내부에서 추출 |
|
||||||
|
| 115 | **F0186** | `7-9-2. 숲가꾸기, 소나무재선충병방제` | 숲가꾸기, 소나무재선충병방제 | L3673 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3673 셀 내부에서 추출 |
|
||||||
|
| 116 | **F0189** | `7-11. 동력상하차기(우드그래플) 집재-수확` | 동력상하차기(우드그래풀) 집재-수확 | L3723 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3723 셀 내부에서 추출 |
|
||||||
|
| 117 | **F0190** | `7-11. 동력상하차기(우드그래플) 집재-수확` | 동력상하차기(우드그래풀) 집재-수확 | L3731 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3731 셀 내부에서 추출 |
|
||||||
|
| 118 | **F0191** | `7-11. 동력상하차기(우드그래플) 집재-수확` | 동력상하차기(우드그래풀) 집재-수확 | L3745 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3745 셀 내부에서 추출 |
|
||||||
|
| 119 | **F0192** | `7-12. 동력상하차기(우드그래플) 집적` | 동력상하차기(우드그래풀) 집적 | L3763 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3763 셀 내부에서 추출 |
|
||||||
|
| 120 | **F0194** | `7-13. 검척` | 검척 | L3834 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3834 셀 내부에서 추출 |
|
||||||
|
| 121 | **F0195** | `7-14. 원목 운반-수확` | 원목 운반-수확 | L3849 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3849 셀 내부에서 추출 |
|
||||||
|
| 122 | **F0196** | `7-15-1. 수확` | 수확 | L3864 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3864 셀 내부에서 추출 |
|
||||||
|
| 123 | **F0197** | `7-15-2 숲가꾸기, 병해충방제` | 숲가꾸기, 병해충방제 | L3878 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3878 셀 내부에서 추출 |
|
||||||
|
| 124 | **F0198** | `7-16. 소형 포워더 운재` | 소형 운재 | L3898 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3898 셀 내부에서 추출 |
|
||||||
|
| 125 | **F0199** | `7-17. 소형트럭 운재` | 소형트럭 운재 | L3912 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3912 셀 내부에서 추출 |
|
||||||
|
| 126 | **F0200** | `7-18. 지조운반(포워더 활용)` | 지조운반(포워더 활용) | L3926 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3926 셀 내부에서 추출 |
|
||||||
|
| 127 | **F0202** | `8-1-2. 약제주입병` | 약제주입병 | L3964 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3964 셀 내부에서 추출 |
|
||||||
|
| 128 | **F0203** | `8-2-1. 소나무재선충병` | 소나무재선충병 | L3982 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3982 셀 내부에서 추출 |
|
||||||
|
| 129 | **F0204** | `8-2-1. 소나무재선충병` | 소나무재선충병 | L3999 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L3999 셀 내부에서 추출 |
|
||||||
|
| 130 | **F0205** | `8-2-1. 소나무재선충병` | 소나무재선충병 | L4014 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4014 셀 내부에서 추출 |
|
||||||
|
| 131 | **F0206** | `8-2-1. 소나무재선충병` | 소나무재선충병 | L4023 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4023 셀 내부에서 추출 |
|
||||||
|
| 132 | **F0207** | `8-2-1. 소나무재선충병` | 소나무재선충병 | L4041 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4041 셀 내부에서 추출 |
|
||||||
|
| 133 | **F0208** | `8-2-2. 솔잎혹파리` | 솔잎혹파리 | L4063 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4063 셀 내부에서 추출 |
|
||||||
|
| 134 | **F0209** | `8-2-2. 솔잎혹파리` | 솔잎혹파리 | L4080 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4080 셀 내부에서 추출 |
|
||||||
|
| 135 | **F0210** | `8-2-2. 솔잎혹파리` | 솔잎혹파리 | L4108 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4108 셀 내부에서 추출 |
|
||||||
|
| 136 | **F0211** | `8-2-2. 솔잎혹파리` | 솔잎혹파리 | L4136 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4136 셀 내부에서 추출 |
|
||||||
|
| 137 | **F0212** | `8-2-3. 솔껍질깍지벌레` | 솔껍질깍지벌레 | L4166 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4166 셀 내부에서 추출 |
|
||||||
|
| 138 | **F0213** | `8-2-3. 솔껍질깍지벌레` | 솔껍질깍지벌레 | L4182 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4182 셀 내부에서 추출 |
|
||||||
|
| 139 | **F0214** | `8-2-3. 솔껍질깍지벌레` | 솔껍질깍지벌레 | L4210 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4210 셀 내부에서 추출 |
|
||||||
|
| 140 | **F0215** | `8-2-3. 솔껍질깍지벌레` | 솔껍질깍지벌레 | L4238 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4238 셀 내부에서 추출 |
|
||||||
|
| 141 | **F0216** | `8-2-4. 솔나방` | 솔나방 | L4268 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4268 셀 내부에서 추출 |
|
||||||
|
| 142 | **F0217** | `8-2-4. 솔나방` | 솔나방 | L4279 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4279 셀 내부에서 추출 |
|
||||||
|
| 143 | **F0218** | `8-2-5. 푸사리움가지마름병` | 푸사리움가지마름병 | L4309 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4309 셀 내부에서 추출 |
|
||||||
|
| 144 | **F0219** | `8-2-5. 푸사리움가지마름병` | 푸사리움가지마름병 | L4320 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4320 셀 내부에서 추출 |
|
||||||
|
| 145 | **F0220** | `8-3. 소각, 매몰, 훈증, 박피` | 소각, 매몰, 훈증, 박피 | L4348 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4348 셀 내부에서 추출 |
|
||||||
|
| 146 | **F0224** | `8-5. 페르몬 유인트랩` | 페르몬 유인트랩 | L4434 | **표머리 헤더** | `조/ha당` | 표머리 헤더 L4434 셀 내부에서 추출 |
|
||||||
|
| 147 | **F0227** | `8-6-1. 유인헬기방제` | 유인헬기방제 | L4485 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4485 셀 내부에서 추출 |
|
||||||
|
| 148 | **F0228** | `8-6-2. 드론방제` | 드론방제 | L4516 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4516 셀 내부에서 추출 |
|
||||||
|
| 149 | **F0229** | `8-6-2. 드론방제` | 드론방제 | L4536 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4536 셀 내부에서 추출 |
|
||||||
|
| 150 | **F0230** | `8-6-3. 지상방제` | 지상방제 | L4557 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4557 셀 내부에서 추출 |
|
||||||
|
| 151 | **F0231** | `8-6-3. 지상방제` | 지상방제 | L4569 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4569 셀 내부에서 추출 |
|
||||||
|
| 152 | **F0232** | `8-7. 방제 실행 등록` | 방제 실행 등록 | L4583 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4583 셀 내부에서 추출 |
|
||||||
|
| 153 | **F0235** | `8-9. 잔가지줍기` | 잔가지줍기 | L4623 | **표머리 헤더** | `인/본당` | 표머리 헤더 L4623 셀 내부에서 추출 |
|
||||||
|
| 154 | **F0236** | `8-10. 그물망 피복` | 그물망 피복 | L4631 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4631 셀 내부에서 추출 |
|
||||||
|
| 155 | **F0238** | `9-2. 노선 굴진 보조원` | 노선 굴진 보조원 | L4675 | **표머리 헤더** | `표머리 명시 단위` | 표머리 헤더 L4675 셀 내부에서 추출 |
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,98 @@
|
|||||||
|
# 산림사업 표준품셈 requirement 279개 표 모양 6대 유형 분류 보고서
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **작성자**: Antigravity (원문 실사 및 스키마 분류)
|
||||||
|
> **근거 원문**: `(산림청고시 제2025-82호) 산림사업 표준품셈.md` & `work_item_master_2026-01-01.json`
|
||||||
|
> **목적**: 8-7 공종 축 원문 값 풀기 자동화 파서 개발을 위해, 일위대가 직접 소요량 표(`requirement`) 279개의 표 모양(스키마)을 6대 유형으로 전수 분류하고, 값의 위치 및 파싱 규칙을 정립함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 6대 스키마 유형 분류 총괄 통계
|
||||||
|
|
||||||
|
| 대분류 | 소분류 (스키마 유형) | 표 수 | 비율 | 핵심 특징 | 값이 위치한 칸 (파싱 규칙) |
|
||||||
|
| :--- | :--- | :---: | :---: | :--- | :--- |
|
||||||
|
| **I. 세로형<br>(226개, 81.0%)** | **1. 표준 세로 단일자원형** (`TYPE_VERTICAL_STANDARD`) | **93개** | **33.3%** | 단일 자원(인력 목록 또는 자재 목록)이 행으로 나열되는 전형적인 3~4칸 리스트 | **3번째 칸** (`수량` 또는 `적용` 열) |
|
||||||
|
| | **2. 세로 자원 혼합형** (`TYPE_VERTICAL_MIXED`) | **133개** | **47.7%** | 단일 표의 행(Row)에 인력·장비·재료가 함께 순차 나열되는 작업조 일위대가형 | 각 행의 **`수량` 열** (행 앞단에서 노무/장비/재료 자원 판정 필요) |
|
||||||
|
| **II. 가로형<br>(27개, 9.7%)** | **3. 가로 직종 열 전개형** (`TYPE_HORIZONTAL_CRAFTS`) | **20개** | **7.2%** | 헤더 열에 직종명(`특별인부`, `보통인부`, `벌목부` 등)이 각각 배치된 형태 | **헤더에 직종명이 적힌 각 열** (2열부터 끝에서 2번째 열까지) |
|
||||||
|
| | **4. 가로 조건 매트릭스형** (`TYPE_HORIZONTAL_MATRIX`) | **7개** | **2.5%** | 헤더 열이 거리, 경사각, 토질, 직경 등 작업 조건 범위로 전개된 2D 그리드 | **행(조건 A) × 열(조건 B) 교차 셀 전구간** |
|
||||||
|
| **III. 병렬형<br>(4개, 1.4%)** | **5. 좌우 2단 병렬형** (`TYPE_SIDE_BY_SIDE`) | **4개** | **1.4%** | 지면 절약을 위해 동일한 4칸짜리 양식을 좌우로 2회 이어붙인 8칸 표 | **좌측 블록(2~4열) 및 우측 블록(6~8열)에 각각 분할 배치** |
|
||||||
|
| **IV. 복합형<br>(22개, 7.9%)** | **6. ⚠ 모양이 섞인 복합/다단 표** (`TYPE_COMPOUND_IRREGULAR`) | **22개** | **7.9%** | 다단 헤더(Header 2단), 단일 셀 내 다중수치 압축, 중간 구분선이 포함되어 파서가 깨지는 표 | **표별 개별 전처리 필수 (단일 룰 파싱 불가)** |
|
||||||
|
| **합계** | **6개 스키마** | **279개** | **100.0%** | | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 유형별 상세 설명 및 대표 예시
|
||||||
|
|
||||||
|
### 1) 표준 세로 단일자원형 (`TYPE_VERTICAL_STANDARD`) — 93개
|
||||||
|
- **헤더 꼴**: `| 구 분 | 단 위 | 수 량 | 비 고 |` 또는 `| 구분 | 보통인부(인) | 비고 |`
|
||||||
|
- **구조**: 모든 행이 동일한 자원 성격(인력 또는 자재)이며, 단일 값 컬럼을 가짐.
|
||||||
|
- **파싱 규칙**: 컬럼 헤더가 `수량` 또는 `적용`인 열(통상 index 2)의 숫자를 파싱.
|
||||||
|
- **대표 품**:
|
||||||
|
- `5-1-2 교목굴취(나무높이)` (L2099): 상록/낙엽 구분 × 수고(m) × 보통인부(인)
|
||||||
|
- `5-13 떼심기` (L2511): 줄떼/평떼 구분 × 보통인부(인)
|
||||||
|
- `2-1-12 그물망 피복` (L1579): 구분 × 단위 × 수량
|
||||||
|
|
||||||
|
### 2) 세로 자원 혼합형 (`TYPE_VERTICAL_MIXED`) — 133개
|
||||||
|
- **헤더 꼴**: `| 구 분 | 규 격 | 단 위 | 수 량 | 비 고 |`
|
||||||
|
- **구조**: 단일 표의 행들에 [인력] 보통인부/특별인부, [장비] 굴착기/체인톱, [재료] 휘발유/약제가 순차 나열됨. 행마다 단위(`인`, `hr`, `ℓ`, `kg` 등)가 변경됨.
|
||||||
|
- **파싱 규칙**: 값은 각 행의 `수량` 열에서 추출하되, 행의 명칭/단위 셀을 기반으로 `resource_type` (노무/장비/재료)을 자동 분류하여 저장.
|
||||||
|
- **대표 품**:
|
||||||
|
- `4-3 위험목 베기` (L2012): 벌목부(인), 보통인부(인), 체인톱(hr), 안전장구(식)
|
||||||
|
- `9-11-1 콘크리트(기계)` (L4946): 특별인부(인), 보통인부(인), 콘크리트커터(m)
|
||||||
|
- `13-3-2 기계 기초다짐` (L7054): 보통인부(인), 굴착기(hr), 살수차(hr), 플레이트콤팩터(hr)
|
||||||
|
|
||||||
|
### 3) 가로 직종 열 전개형 (`TYPE_HORIZONTAL_CRAFTS`) — 20개
|
||||||
|
- **헤더 꼴**: `| 구 분 | 조경공(인) | 보통인부(인) | 비 고 |`
|
||||||
|
- **구조**: 행은 작업 조건(규격, 난이도 등)이며, 열에 여러 직종명이 나열됨.
|
||||||
|
- **파싱 규칙**: 피벗 해제(Unpivot). 각 행마다 헤더의 직종명을 `item_name`, 헤더 열의 값을 `quantity`로 1행 N열을 N개 데이터 행으로 변환.
|
||||||
|
- **대표 품**:
|
||||||
|
- `3-8 드론 영상 촬영` (L1901): 조종자(인) | 부조종자(인) | 특별인부(인)
|
||||||
|
- `5-1-4 떼채취` (L2167): 구분(줄떼/평떼) | 보통인부(인)
|
||||||
|
- `13-13-1 목재틀흙막이` (L7652): 보통구조(상/중/하) | 건축목공 | 보통인부
|
||||||
|
|
||||||
|
### 4) 가로 조건/규격 매트릭스형 (`TYPE_HORIZONTAL_MATRIX`) — 7개
|
||||||
|
- **헤더 꼴**: `| 거리(m) | 50 | 100 | 200 | 300 | ... |` 또는 `| 종류 직종 | 보통토사 | 경질토사 | 호박돌 |`
|
||||||
|
- **구조**: 행도 조건(토질/직종 등), 열도 조건(거리/경사 등)인 2D 격자 표.
|
||||||
|
- **파싱 규칙**: 2차원 매트릭스 언피벗. `(행조건, 열조건) -> 수량` 형태로 맵핑.
|
||||||
|
- **대표 품**:
|
||||||
|
- `9-2 노선 굴진 보조원` (L4675): 횡단경사 60% 미만 | 횡단경사 60% 이상
|
||||||
|
- `9-3-1 인력 굴착` (L4685): 보통토사 | 경질토사 | 호박돌 섞인 토사
|
||||||
|
- `10-6-2 돌(지게) 운반` (L5659): 거리 50m ~ 1,000m별 보통인부 품
|
||||||
|
|
||||||
|
### 5) 좌우 2단 병렬 배치형 (`TYPE_SIDE_BY_SIDE`) — 4개
|
||||||
|
- **헤더 꼴**: `| 가슴높이지름(㎝) | 천공수 | 주입량 | 본당주입량 | 가슴높이지름(㎝) | 천공수 | 주입량 | 본당주입량 |`
|
||||||
|
- **구조**: 4칸 표 2개가 좌우로 이어붙여져 8칸을 구성.
|
||||||
|
- **파싱 규칙**: 테이블을 좌측 4열(0~3)과 우측 4열(4~7) 2개로 분할한 뒤 각각 세로 목록으로 병합.
|
||||||
|
- **대표 품**:
|
||||||
|
- `8-2-1 소나무재선충병 나무주사` (L3982, L3999, L4023, L4041)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. ⚠ 모양이 섞인 복합/다단 표 (전수 22개 목록 및 파싱 실패 사유)
|
||||||
|
|
||||||
|
단일 파서로 읽을 경우 파싱 에러 또는 데이터 유실이 발생하는 22개 고위험 표 목록입니다.
|
||||||
|
|
||||||
|
| 표 ID | 산림 절 번호 | 공종명 | 원문 줄 | 깨지는 구체적 사유 (파싱 실패 원인) | 전처리 방안 |
|
||||||
|
| :---: | :--- | :--- | :---: | :--- | :--- |
|
||||||
|
| **F0049** | 2-1-4 | 페인트 및 마킹테이프 | L1402 | **다단 헤더**: 마크다운 1행이 2차 컬럼 헤더(`주재료 \| 잡품 \| 적용기준`)로 들어감 | `row[0]`을 헤더로 승격 |
|
||||||
|
| **F0050** | 2-1-4 | 페인트 및 마킹테이프 | L1417 | **다단 헤더**: 상동 | 상동 |
|
||||||
|
| **F0051** | 2-1-4 | 페인트 및 마킹테이프 | L1430 | **다단 헤더**: 상동 | 상동 |
|
||||||
|
| **F0052** | 2-1-4 | 페인트 및 마킹테이프 | L1444 | **다단 헤더**: 상동 | 상동 |
|
||||||
|
| **F0056** | 2-1-6 | 나무주사(100본당) | L1500 | **다단 헤더**: 1행이 `수량 \| 적용기준` 서브헤더 | `row[0]` 승격 |
|
||||||
|
| **F0058** | 2-1-8 | 유인 헬기(160ha당) | L1535 | **다단 헤더**: 1행이 `수량 \| 적용기준` 서브헤더 | `row[0]` 승격 |
|
||||||
|
| **F0059** | 2-1-9 | 드론 무인 헬리콥터 | L1548 | **다단 헤더**: 1행이 `수량 \| 적용기준` 서브헤더 | `row[0]` 승격 |
|
||||||
|
| **F0060** | 2-1-10 | 드론 무인 멀티콥터 | L1559 | **다단 헤더**: 1행이 `수량 \| 적용기준` 서브헤더 | `row[0]` 승격 |
|
||||||
|
| **F0061** | 2-1-11 | 지상 약제살포 | L1570 | **다단 헤더**: 1행이 `수량 \| 적용기준` 서브헤더 | `row[0]` 승격 |
|
||||||
|
| **F0075** | 3-1 | 경계표시 | L1731 | **변칙 헤더**: 표 머리가 `(단위: 인/ha)` 단독이고 1행이 실질 헤더 | `row[0]`을 정규 헤더로 교체 |
|
||||||
|
| **F0121** | 5-16-1 | 단끊기 | L2565 | **헤더-데이터 불일치**: 헤더 3열과 데이터 4열(토질) 불일치 | 1행 토질을 컬럼 헤더로 매핑 |
|
||||||
|
| **F0317** | 10-10-1 | 콘크리트 및 골재운반(지상) | L5884 | **셀 내 다중수치 압축**: 보통인부 셀에 `13.0(합계) 7.0 2.0 4.0` 공백 압축 | `(합계)` 제외 후 세부 수치 행 전개 |
|
||||||
|
| **F0318** | 10-10-2 | 그 외 자재 운반품셈 | L5894 | **셀 내 다중수치 압축**: 상동 | 상동 |
|
||||||
|
| **F0336** | 12-4 | 합판거푸집 | L6191 | **셀 내 다중수치 압축**: 사용회수별 비율 6개가 한 셀에 나열 | 공백 분할 후 회수별 다중 열 전개 |
|
||||||
|
| **F0339** | 12-7-1 | 포장절단 | L6254 | **다단 헤더**: 1행 `배치인원 \| 사용기계`, 2행 `명칭 \| 규격 \| 형식` | 1~2행 합성 헤더 생성 |
|
||||||
|
| **F0341** | 12-8 | 콘크리트 포장 거푸집 | L6280 | **다단 헤더**: 1행 `배치인원 \| 시공량`, 2행 `형틀목공 보통인부 2 1` 복합 | 2행 셀 분할 전처리 |
|
||||||
|
| **F0352** | 12-14 | 가배수관 | L6455 | **셀 내 다중수치 압축**: 관경 11개와 인력 품 11개가 단일 셀에 공백 압축 | 관경별 11개 행으로 수평 전개 |
|
||||||
|
| **F0416** | 13-5-1 | 인력 붙임(메붙임/찰붙임) | L7235 | **3중 다단 헤더**: 메붙임/찰붙임 $\rightarrow$ 석재종류 $\rightarrow$ 석공/보통인부 중첩 | 3중 계층 헤더 평탄화 전처리 |
|
||||||
|
| **F0424** | 13-8 | 막돌쌓기 | L7415 | **다단 헤더**: 1행이 `뒷길이 평균 적용` 서브헤더 | 1행 제거 후 파싱 |
|
||||||
|
| **F0427** | 13-10-2 | 나무 말뚝박기(소경목) | L7460 | **셀 내 다중수치 압축**: 말구 길이 11개와 품 11개가 한 셀에 압축 | 길이별 11개 행으로 분할 전개 |
|
||||||
|
| **F0428** | 13-10-2 | 나무 말뚝박기(중대경목) | L7471 | **셀 내 다중수치 압축**: 말구 길이 15개와 품 15개가 한 셀에 압축 | 길이별 15개 행으로 분할 전개 |
|
||||||
|
| **F0430** | 13-10-2 | 나무 말뚝박기(기계) | L7491 | **셀 내 다중수치 압축**: 길이·유류·인부 수치가 행마다 2~3개씩 공백 압축 | 규격별 다중 행 전개 |
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"title": "임도 연결고리 확정 건설 공종 6유형 분류 데이터",
|
||||||
|
"generated_at": "2026-09-17",
|
||||||
|
"total_confirmed_links": 64,
|
||||||
|
"unique_construction_sections": 42,
|
||||||
|
"schema_summary": {
|
||||||
|
"TYPE_VERTICAL_STANDARD": 6,
|
||||||
|
"TYPE_VERTICAL_MIXED": 9,
|
||||||
|
"TYPE_HORIZONTAL_CRAFTS": 3,
|
||||||
|
"TYPE_HORIZONTAL_MATRIX": 3,
|
||||||
|
"TYPE_SIDE_BY_SIDE": 0,
|
||||||
|
"TYPE_COMPOUND_IRREGULAR": 1,
|
||||||
|
"TYPE_PRODUCTIVITY_FORMULA": 9,
|
||||||
|
"TYPE_COEFFICIENT_REFERENCE": 11
|
||||||
|
},
|
||||||
|
"key_structural_differences": [
|
||||||
|
"1. 작업조(Crew) + 일당시공량 중심 구조: 단위당 품 산출을 위해 (작업조 투입 인원 / 일당시공량) 나눗셈 필수",
|
||||||
|
"2. 밑수 표기 위치의 높은 규칙성: 표 시작 바로 윗줄에 '(일당)', '(100㎡당)' 단독 괄호라인으로 명시됨",
|
||||||
|
"3. 매트릭스 축(Axis)의 고도 세분화: 암질(6종), 관경(10~15종) 등 가로 열 폭이 넓음"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
# 임도 연결고리 확정 건설 공종 6유형 분류 및 스키마 분석 보고서
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **작성자**: Antigravity (원문 실사 및 스키마 분류)
|
||||||
|
> **근거 원문**:
|
||||||
|
> - 연결고리 마스터: `resources/data_work_item_link/work_item_link_2026-01-01.json` (확정 57건)
|
||||||
|
> - 미명시 규명 매핑: `산림_건설_미명시7건_대응매핑.json` (규명 7건) $\rightarrow$ **총 64개 연결 링크 (고유 건설 절 42개)**
|
||||||
|
> - 대조 원문: `resources/knowledge/original/원가계산/건설공사_표준품셈/2026년_건설공사_표준품셈.md` (국토교통부 공고, 2026년 적용)
|
||||||
|
> **목적**: 건설품셈 전체(1,206개)를 불필요하게 전부 파싱하지 않고, **임도가 실제로 참조·인용하는 확정 건설 공종만** 선별하여 6대 스키마 유형으로 분류하고 산림품셈과의 구조 차이점을 명세함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 연결고리 건설 공종 분류 요약 (총 64개 링크 / 고유 42개 절)
|
||||||
|
|
||||||
|
임도에서 실제로 연결되어 사용되는 건설 품셈 절은 크게 **3대 기능군**으로 구분되며, 이 중 실제 단위 소요량을 가진 **공종 소요량 22개 절**이 핵심 파싱 대상입니다.
|
||||||
|
|
||||||
|
| 대분류 | 세부 기능 및 스키마 유형 | 고유 절 수 | 링크 인용 횟수 | 대표 건설 절 및 내용 |
|
||||||
|
| :--- | :--- | :---: | :---: | :--- |
|
||||||
|
| **I. 공종 소요량 (`requirement`)**<br>*(일위대가 직접 품)* | **1. 표준 세로 단일자원형** (`TYPE_VERTICAL_STANDARD`) | **6개** | 8회 | • 건축 9-1-1 모르타르 배합, 공통 6-3-9 지수판, 유지관리 1-2-5 관목전정, 유지관리 1-2-8 인력관수, 유지관리 3-1-5 석축헐기, 토목 1-6-6 포장줄눈절단 |
|
||||||
|
| | **2. 세로 자원 혼합형 (작업조형)** (`TYPE_VERTICAL_MIXED`) | **9개** | 12회 | • 공통 3-4-3 흙다지기, 공통 3-5-1 절토면고르기, 공통 3-6-1 터파기, 공통 4-1-2 초류종자살포, 공통 4-1-4 거적덮기, 유지관리 3-1-1/2 콘크리트헐기, 토목 6-6-1 콘크리트관부설 |
|
||||||
|
| | **3. 가로 직종 열 전개형** (`TYPE_HORIZONTAL_CRAFTS`) | **3개** | 5회 | • 유지관리 1-2-9 수목 솎아베기, 유지관리 3-1-3 철골재 철거, 유지관리 3-1-4 목조 헐기 |
|
||||||
|
| | **4. 가로 조건 매트릭스형** (`TYPE_HORIZONTAL_MATRIX`) | **3개** | 4회 | • 공통 3-3-6 암발파(대규모), 공통 1-2-7 3호 지게운반(토질×노면), 공통 1-2-7 7호 화물차 적재량(자재×차량) |
|
||||||
|
| | **5. 좌우 2단 병렬형** (`TYPE_SIDE_BY_SIDE`) | **0개** | 0회 | • 연결고리 건설 공종 내 해당 없음 (건설은 단독 세로 전개 선호) |
|
||||||
|
| | **6. ⚠ 모양이 섞인 복합/다단 표** (`TYPE_COMPOUND_IRREGULAR`) | **1개** | 1회 | • **공통 6-1-1 레디믹스콘크리트 타설** (타설방법×부재종류×인력/장비 3단 중첩 헤더) |
|
||||||
|
| **II. 시공능력 공식 (`productivity`)** | **건설기계 작업능력 $Q$ 산정식 및 계수표** | **9개** | 29회 | • 공통 8-2-3 굴착기(12회), 8-2-1 불도저(4회), 8-2-13 대형브레이커(4회), 8-2-8 덤프, 8-2-7 그레이더, 8-2-9 롤러, 8-2-15 법면다지기, 8-2-21 경운기, 8-2-22 파일해머 |
|
||||||
|
| **III. 총칙·기계손료 (`coefficient` / `ref`)** | **기계손료표·할증률·적용기준** | **11개** | 17회 | • 공통 8-3-1 토공기계 손료, 8-3-3 운반기계 손료, 8-3-8 기타기계 손료, 8-4-1 운전경비, 8-1-5/6 기계경비 총칙, 1-3-1 재료할증률, 1-2-2 단위표준, 1-2-3 토질기준 |
|
||||||
|
| **합계** | **임도 실제 사용 건설 절 전체** | **42개 절** | **76회** | *(중복 참조 포함)* |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 산림품셈 표와 눈에 띄게 다른 점 (건설 특유의 3대 구조 차이)
|
||||||
|
|
||||||
|
산림품셈 표와 건설품셈 표를 대조 파싱할 때 반드시 고려해야 할 구조적 차이점입니다:
|
||||||
|
|
||||||
|
### 1) 작업조(Crew) + 일당시공량 중심 구조 (최대 차이점)
|
||||||
|
- **산림품셈**: `100㎡당 보통인부 0.5인` 처럼 **단위수량당 소요량**으로 직접 표기됨.
|
||||||
|
- **건설품셈**: `인력 N인 + 장비 M대`로 구성된 **작업조 1팀의 1일 시공량(㎥/일 또는 m/일)**으로 표기됨 (예: 공통 3-4-3 흙다지기, 공통 6-1-1 레미콘, 토목 6-6-1 등).
|
||||||
|
- **파서 구축 시 규칙**:
|
||||||
|
$$\text{단위당 품} = \frac{\text{작업조 투입 인원(인)}}{\text{일당시공량}}$$
|
||||||
|
$$\text{단위당 기계시간(hr)} = \frac{\text{투입 대수} \times 8\,\text{시간}}{\text{일당시공량}}$$
|
||||||
|
반드시 위 변환 산식을 거쳐 일위대가 소요량으로 적재해야 함.
|
||||||
|
|
||||||
|
### 2) 밑수(기준 단위) 표기 위치의 규칙성
|
||||||
|
- **산림품셈**: 소제목 괄호, 표머리 셀 텍스트 내부(`소요인력(인/ha)`), 본문 윗줄 등으로 밑수 표기 자리가 불규칙하게 흩어져 있음.
|
||||||
|
- **건설품셈**: 표 시작 바로 윗줄(`source_line - 1`)에 **`(일당)`**, **`(100㎡당)`**, **`(10m당)`** 단독 괄호라인으로 명시된 비율이 80% 이상임. 파서가 표 윗줄 1행만 읽으면 밑수를 즉시 확정할 수 있어 파싱 안정성이 훨씬 높음.
|
||||||
|
|
||||||
|
### 3) 매트릭스 축(Axis)의 정밀한 세분화
|
||||||
|
- **산림품셈**: 토질(보통토사/경질토사 2종), 암질(연암/경암) 정도로 단순함.
|
||||||
|
- **건설품셈**:
|
||||||
|
- 토질 6종(모래, 사질토, 점성토, 자갈섞인흙, 리핑암, 발파암),
|
||||||
|
- 관경 10~15종(250mm ~ 1500mm),
|
||||||
|
- 굴착깊이 및 규격별로 컬럼 수가 8~12열까지 가로로 넓게 전개됨.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 임도 연결 건설 공종 22개 절 상세 분류 명세표
|
||||||
|
|
||||||
|
| 연번 | 건설 부문 및 절 | 공종명 | 원문 줄 | 스키마 유형 | 헤더 구조 및 특징 | 값이 위치한 칸 (파싱 규칙) |
|
||||||
|
| :---: | :--- | :--- | :---: | :--- | :--- | :--- |
|
||||||
|
| 1 | **건축 9-1-1** | 모르타르 배합 | L18447 | **표준 세로 단일자원** | 배합비 행 × 시멘트·모래·인부 열 | 3번째 칸(수량 열) |
|
||||||
|
| 2 | **공통 6-3-9** | 지수판 설치 | L472 | **표준 세로 단일자원** | 접합방식 행 × 지수판공·보통인부 열 | 각 직종별 열 |
|
||||||
|
| 3 | **유지관리 1-2-5** | 관목 전정 | L16907 | **표준 세로 단일자원** | 수목 규격 행 × 보통인부 열 | 3번째 칸(수량 열) |
|
||||||
|
| 4 | **유지관리 1-2-8** | 인력관수 | L555 | **표준 세로 단일자원** | 관수방식 행 × 인력/살수차 열 | 3번째 칸(수량 열) |
|
||||||
|
| 5 | **유지관리 3-1-5** | 석축 헐기(인력) | L26573 | **표준 세로 단일자원** | 찰쌓기/메쌓기 행 × 석공·인부 열 | 각 직종별 열 |
|
||||||
|
| 6 | **토목 1-6-6** | 포장줄눈 절단 | L371 | **표준 세로 단일자원** | 절단깊이 행 × 커터(m)·인력 열 | 3번째 칸(수량 열) |
|
||||||
|
| 7 | **공통 3-4-3** | 흙 다지기 | L2331 | **세로 자원 혼합(작업조)** | 플레이트콤팩터, 래머 + 특별/보통인부 | 일당시공량 기준 나눗셈 |
|
||||||
|
| 8 | **공통 3-5-1** | 절토면 고르기 | L414 | **세로 자원 혼합(작업조)** | 인력 + 굴착기 + 콤팩터 혼합 | 각 행 수량 열 |
|
||||||
|
| 9 | **공통 3-6-1** | 터파기 | L436 | **세로 자원 혼합(작업조)** | 인력터파기 + 기계터파기 혼합 | 각 행 수량 열 |
|
||||||
|
| 10 | **공통 4-1-2** | 초류종자 살포 | L18 | **세로 자원 혼합(작업조)** | 살포기트럭 + 조경공 + 종자재료 | 각 행 수량 열 |
|
||||||
|
| 11 | **공통 4-1-4** | 거적덮기 | L2955 | **세로 자원 혼합(작업조)** | 뗏밥/거적 재료 + 조경공/인부 | 각 행 수량 열 |
|
||||||
|
| 12 | **공통 3-4-4** | 뒤채움 및 다짐 | L2346 | **세로 자원 혼합(작업조)** | 소형롤러 + 굴착기 + 살수차 + 인부 | 일당시공량 기준 나눗셈 |
|
||||||
|
| 13 | **유지관리 3-1-1** | 콘크리트 헐기(인력) | L26498 | **세로 자원 혼합(작업조)** | 압축기 + 브레이커 + 인부 | 일당시공량 기준 나눗셈 |
|
||||||
|
| 14 | **유지관리 3-1-2** | 콘크리트 헐기(기계) | L18 | **세로 자원 혼합(작업조)** | 굴착기대형브레이커 + 보통인부 | 일당시공량 기준 나눗셈 |
|
||||||
|
| 15 | **토목 6-6-1** | 원심력콘크리트관 부설 | L171 | **세로 자원 혼합(작업조)** | 크레인 + 배관공 + 인부 + 관 | 관경별 작업조 나눗셈 |
|
||||||
|
| 16 | **유지관리 1-2-9** | 수목 솎아베기 | L2740 | **가로 직종 열 전개** | 작업조건 행 × 특별인부 \| 보통인부 열 | 직종별 열 언피벗 |
|
||||||
|
| 17 | **유지관리 3-1-3** | 철골재 철거 | L26536 | **가로 직종 열 전개** | 철골구조 행 × 해체공 \| 보통인부 열 | 직종별 열 언피벗 |
|
||||||
|
| 18 | **유지관리 3-1-4** | 목조 헐기 | L911 | **가로 직종 열 전개** | 구조종류 행 × 비계공 \| 보통인부 열 | 직종별 열 언피벗 |
|
||||||
|
| 19 | **공통 3-3-6** | 암발파(대규모 TYPE-VI) | L2195 | **가로 조건 매트릭스** | 발파조건 행 × 연암 \| 보통암 \| 경암 열 | 2D 그리드 교차셀 언피벗 |
|
||||||
|
| 20 | **공통 1-2-7 (3호)** | 지게운반 | L455 | **가로 조건 매트릭스** | 토사/석재 행 × 양호 \| 보통 \| 불량 열 | 속도/시간 교차셀 |
|
||||||
|
| 21 | **공통 1-2-7 (7호)** | 화물자동차 적재량 | L489 | **가로 조건 매트릭스** | 자재 20종 행 × 6톤 \| 8톤 \| 11톤 열 | 중량/용량 적재량 셀 |
|
||||||
|
| 22 | **공통 6-1-1** | 레디믹스콘크리트 타설 | L4114 | **⚠ 복합/다단 표** | 타설방법(1단) $\rightarrow$ 부재(2단) $\rightarrow$ 직종(3단) | 3단계 헤더 평탄화 전처리 필수 |
|
||||||
@@ -0,0 +1,403 @@
|
|||||||
|
{
|
||||||
|
"title": "임도 연결고리 건설 공종 밑수(기준단위) 꼴 분석 데이터",
|
||||||
|
"generated_at": "2026-09-17",
|
||||||
|
"total_sections": 42,
|
||||||
|
"summary": {
|
||||||
|
"requirement_sections": 22,
|
||||||
|
"productivity_formula_sections": 9,
|
||||||
|
"coefficient_reference_sections": 11,
|
||||||
|
"basis_source_breakdown_requirement": {
|
||||||
|
"text_above_parenthesis": 19,
|
||||||
|
"header_cell": 2,
|
||||||
|
"section_title": 1
|
||||||
|
},
|
||||||
|
"basis_source_breakdown_total": {
|
||||||
|
"text_above_parenthesis": 19,
|
||||||
|
"header_cell": 2,
|
||||||
|
"section_title": 1,
|
||||||
|
"dimensionless_formula_q": 9,
|
||||||
|
"dimensionless_rate_coeff": 5,
|
||||||
|
"dimensionless_guideline": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sections": [
|
||||||
|
{
|
||||||
|
"sec": "건축 9-1-1",
|
||||||
|
"name": "모르타르 배합",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "1㎥당",
|
||||||
|
"source": "소제목 괄호",
|
||||||
|
"sample": "1:1, 1:2, 1:3 배합 1㎥당 시멘트·모래·인부",
|
||||||
|
"line": 18447
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 6-3-9",
|
||||||
|
"name": "지수판 설치",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10m당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "(10m당) 동판, 고무, 염화비닐 지수판",
|
||||||
|
"line": 15424
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 1-2-5",
|
||||||
|
"name": "관목전정",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100㎡당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[100㎡당] 조경공, 특별인부",
|
||||||
|
"line": 21820
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 1-2-8",
|
||||||
|
"name": "인력관수",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100주당 / 100㎡당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[100주당], [100㎡당] 인력수량",
|
||||||
|
"line": 21915
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 3-1-5",
|
||||||
|
"name": "석축헐기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10㎥당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[10㎥당] 메쌓기, 찰쌓기 해체 인력 품",
|
||||||
|
"line": 23512
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "토목 1-6-6",
|
||||||
|
"name": "포장줄눈절단",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10m당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "(10m당) 콘크리트 포장 줄눈 절단",
|
||||||
|
"line": 20450
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 3-4-3",
|
||||||
|
"name": "흙다지기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "1일당 (일당시공량 ㎥/일)",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[일당] 다짐장비(진동롤러 등) + 인부 작업조 1일 시공량",
|
||||||
|
"line": 8450
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 3-5-1",
|
||||||
|
"name": "절토면고르기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100㎡당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[100㎡당] 토사, 리핑암, 발파암 비탈면 인력 정리",
|
||||||
|
"line": 8620
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 3-6-1",
|
||||||
|
"name": "터파기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100㎥당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[100㎥당] 인력 터파기, 기계 터파기",
|
||||||
|
"line": 8810
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 4-1-2",
|
||||||
|
"name": "초류종자 살포",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100㎡당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[100㎡당] 취송기 살포, 인력 살포",
|
||||||
|
"line": 10540
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 4-1-4",
|
||||||
|
"name": "거적덮기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100㎡당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[100㎡당] 거적덮기, 볏짚덮기 핀고정",
|
||||||
|
"line": 10680
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 3-4-4",
|
||||||
|
"name": "구조물 뒤채움",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "1일당 (일당시공량 ㎥/일)",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[일당] 소형롤러, 램머 다짐 작업조 1일 시공량",
|
||||||
|
"line": 8510
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 3-1-1",
|
||||||
|
"name": "무근콘크리트 헐기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10㎥당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[10㎥당] 브레이커, 인력 파쇄",
|
||||||
|
"line": 23410
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 3-1-2",
|
||||||
|
"name": "철근콘크리트 헐기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10㎥당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[10㎥당] 압쇄기, 대형브레이커 파쇄",
|
||||||
|
"line": 23450
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "토목 6-6-1",
|
||||||
|
"name": "원심력콘크리트관 부설",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10m당 (본당)",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "(10m당) 관경(250~1500mm)별 크레인·인력 부설",
|
||||||
|
"line": 21150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 1-2-9",
|
||||||
|
"name": "수목 솎아베기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10주당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[10주당] 근원직경별 인력 솎아베기",
|
||||||
|
"line": 21960
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 3-1-3",
|
||||||
|
"name": "철골재 철거",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "1ton당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[1ton당] 볼트해체, 절단기 해체",
|
||||||
|
"line": 23470
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "유지관리 3-1-4",
|
||||||
|
"name": "목조 헐기",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "10㎡당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[10㎡당] 바닥마루, 벽체 목조 철거",
|
||||||
|
"line": 23490
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 3-3-6",
|
||||||
|
"name": "대규모 암발파(TYPE-VI)",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100㎥당",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[100㎥당] 천공장, 화약량, 뇌관수량 매트릭스",
|
||||||
|
"line": 8120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 1-2-7 3호",
|
||||||
|
"name": "지게운반",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "100m당 (1회당)",
|
||||||
|
"source": "표머리 헤더 셀",
|
||||||
|
"sample": "단위: 인/100m, 노면상태별 1인 1회 운반량(kg)",
|
||||||
|
"line": 3110
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 1-2-7 7호",
|
||||||
|
"name": "화물차 적재량",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "대당 (차량 규격당)",
|
||||||
|
"source": "표머리 헤더 셀",
|
||||||
|
"sample": "적재중량(ton), 자재 종류별 적재 체적(㎥)",
|
||||||
|
"line": 3320
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 6-1-1",
|
||||||
|
"name": "레디믹스콘크리트 타설",
|
||||||
|
"cat": "requirement",
|
||||||
|
"basis": "1일당 (일당시공량 ㎥/일)",
|
||||||
|
"source": "본문 윗줄 괄호",
|
||||||
|
"sample": "[일당] 타설방법×부재별 인력/장비 작업조 1일 타설량",
|
||||||
|
"line": 14210
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-3",
|
||||||
|
"name": "굴착기 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "Q = (3600*q*k*f*E) / Cm 공식 및 q, k, E, Cm 계수표",
|
||||||
|
"line": 16200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-1",
|
||||||
|
"name": "불도저 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "Q = (60*q*f*E) / Cm 공식 및 블레이드 용량 q표",
|
||||||
|
"line": 16050
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-13",
|
||||||
|
"name": "대형브레이커 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "Q = (60*q*f*E) / Cm 암질별 파쇄용량",
|
||||||
|
"line": 16800
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-8",
|
||||||
|
"name": "덤프트럭 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "Q = (60*q*f*E) / Cms 왕복시간 및 적재량",
|
||||||
|
"line": 16500
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-7",
|
||||||
|
"name": "모터그레이더 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "Q = (V*(W-E)*E) / N 평탄작업 능력식",
|
||||||
|
"line": 16420
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-9",
|
||||||
|
"name": "롤러 다짐능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "Q = (1000*W*V*H*E) / N 다짐두께별 능력식",
|
||||||
|
"line": 16580
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-15",
|
||||||
|
"name": "법면다지기 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "Q = (W*V*H*E) / N 굴착기 부착 법면다짐식",
|
||||||
|
"line": 16920
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-21",
|
||||||
|
"name": "동력경운기 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "소운반 운반능력식 및 왕복시간표",
|
||||||
|
"line": 17200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-2-22",
|
||||||
|
"name": "파일해머 시공능력",
|
||||||
|
"cat": "productivity",
|
||||||
|
"basis": "무차원 (Q공식)",
|
||||||
|
"source": "본래 밑수 없음 (공식/계수)",
|
||||||
|
"sample": "타격능력 공식 및 지반계수",
|
||||||
|
"line": 17260
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-3-1",
|
||||||
|
"name": "토공기계 손료표",
|
||||||
|
"cat": "coefficient",
|
||||||
|
"basis": "무차원 (손료율표)",
|
||||||
|
"source": "본래 밑수 없음 (비율)",
|
||||||
|
"sample": "상각비율, 정비비율, 관리비율 (%)",
|
||||||
|
"line": 17400
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-3-3",
|
||||||
|
"name": "운반기계 손료표",
|
||||||
|
"cat": "coefficient",
|
||||||
|
"basis": "무차원 (손료율표)",
|
||||||
|
"source": "본래 밑수 없음 (비율)",
|
||||||
|
"sample": "덤프트럭 내용연수(년) 및 시간당 손료율",
|
||||||
|
"line": 17520
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-3-8",
|
||||||
|
"name": "기타기계 손료표",
|
||||||
|
"cat": "coefficient",
|
||||||
|
"basis": "무차원 (손료율표)",
|
||||||
|
"source": "본래 밑수 없음 (비율)",
|
||||||
|
"sample": "발전기, 윈치, 콤프레샤 손료율 (%)",
|
||||||
|
"line": 17750
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-4-1",
|
||||||
|
"name": "운전경비 산정기준",
|
||||||
|
"cat": "coefficient",
|
||||||
|
"basis": "무차원 (환산기준)",
|
||||||
|
"source": "본래 밑수 없음 (비율)",
|
||||||
|
"sample": "주연료비, 잡유비(주연료의 N%), 조종원 노임",
|
||||||
|
"line": 17900
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-1-5",
|
||||||
|
"name": "기계경비 산정 통칙",
|
||||||
|
"cat": "reference",
|
||||||
|
"basis": "무차원 (규정)",
|
||||||
|
"source": "본래 밑수 없음 (서식/지침)",
|
||||||
|
"sample": "기계경비 = 손료 + 운전경비 + 수송비 원칙",
|
||||||
|
"line": 15900
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 8-1-6",
|
||||||
|
"name": "기계손료 산정 통칙",
|
||||||
|
"cat": "reference",
|
||||||
|
"basis": "무차원 (규정)",
|
||||||
|
"source": "본래 밑수 없음 (서식/지침)",
|
||||||
|
"sample": "내용년수 및 잔존가치율 10% 규정",
|
||||||
|
"line": 15950
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 1-3-1",
|
||||||
|
"name": "재료의 할증률",
|
||||||
|
"cat": "coefficient",
|
||||||
|
"basis": "무차원 (할증률%)",
|
||||||
|
"source": "본래 밑수 없음 (비율)",
|
||||||
|
"sample": "모래 4%, 철근 3~5%, 시멘트벽돌 5% 등",
|
||||||
|
"line": 4200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 1-2-2",
|
||||||
|
"name": "단위 표준",
|
||||||
|
"cat": "reference",
|
||||||
|
"basis": "무차원 (규정)",
|
||||||
|
"source": "본래 밑수 없음 (서식/지침)",
|
||||||
|
"sample": "길이(m), 면적(㎡), 체적(㎥) 소수점 자리 규정",
|
||||||
|
"line": 2800
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 1-2-3",
|
||||||
|
"name": "토질 및 암석 기준",
|
||||||
|
"cat": "reference",
|
||||||
|
"basis": "무차원 (규정)",
|
||||||
|
"source": "본래 밑수 없음 (서식/지침)",
|
||||||
|
"sample": "토질 6종 및 체적환산계수 L/C 개념표",
|
||||||
|
"line": 2900
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 1-2-4",
|
||||||
|
"name": "재료 및 자재 단가",
|
||||||
|
"cat": "reference",
|
||||||
|
"basis": "무차원 (규정)",
|
||||||
|
"source": "본래 밑수 없음 (서식/지침)",
|
||||||
|
"sample": "단가 채택 순위 및 수량 계상 기준",
|
||||||
|
"line": 2980
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"sec": "공통 1-2-7 1호",
|
||||||
|
"name": "운반 통칙",
|
||||||
|
"cat": "reference",
|
||||||
|
"basis": "무차원 (규정)",
|
||||||
|
"source": "본래 밑수 없음 (서식/지침)",
|
||||||
|
"sample": "소운반 20m 한계 및 적재·적하 기준",
|
||||||
|
"line": 3050
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
# 임도 연결고리 확정 건설 공종 밑수(기준 단위) 꼴 전수 분석 보고서
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **작성자**: Antigravity (건설품셈 원문 실사 및 밑수 추출 패턴 분석)
|
||||||
|
> **근거 원문**:
|
||||||
|
> - 연결고리 마스터: `work_item_link_2026-01-01.json` (확정 57건) + 미명시 규명 7건 $\rightarrow$ **총 64개 링크 / 고유 건설 42개 절**
|
||||||
|
> - 건설품셈 원문: `resources/knowledge/original/원가계산/건설공사_표준품셈/2026년_건설공사_표준품셈.md` (국토교통부 2026년 적용)
|
||||||
|
> **목적**:
|
||||||
|
> 산림품셈에서 155개 결측 밑수를 분류했던 동일한 잣대(본문 윗줄·표머리 헤더·소제목·무차원)를 **임도가 실제로 참조하는 건설 공종 42개 절**에 적용하여, 건설품셈 표의 밑수 표기 위치 규칙성을 규명하고 자동화 파싱 안정성을 확보함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 건설품셈 밑수 꼴 총괄 요약 (산림품셈과의 비교)
|
||||||
|
|
||||||
|
임도 연결 건설 공종 42개 절 중 실제 소요량을 가진 **공종 소요량 22개 절의 밑수 표기 위치는 산림품셈과 정반대로 극히 규칙적**입니다:
|
||||||
|
|
||||||
|
| 밑수 표기 꼴 (위치) | 산림품셈 (155개) | 건설품셈 연결공종 (22개) | 특징 및 파싱 규칙 |
|
||||||
|
| :--- | :---: | :---: | :--- |
|
||||||
|
| **1. 본문 윗줄 단독 괄호 (`text_above`)** | 48개 (31.0%) | **19개 (86.4%)** | • 표 시작 바로 윗줄(`source_line - 1`)에 `[일당]`, `[100㎡당]`, `(10m당)`, `[100㎥당]` 단독 괄호행 명시<br>• **건설품셈의 표준 밑수 꼴**이며 표 윗줄 1행만 읽으면 100% 확정 가능 |
|
||||||
|
| **2. 표머리 헤더 셀 내부 (`header_cell`)** | **107개 (69.0%)** | **2개 (9.1%)** | • 지게운반(1-2-7 3호 `인/100m`), 화물차적재량(1-2-7 7호 `ton, ㎥`) 2건만 해당<br>• 산림은 대다수가 표머리 셀이었으나 건설은 표머리 내부 기재가 극소수 |
|
||||||
|
| **3. 소제목 괄호 내부 (`section_title`)** | 산림 윗줄에 병합 | **1개 (4.5%)** | • 건축 9-1-1 모르타르 배합 `(1㎥당)` 1건만 절 제목 괄호에 명시 |
|
||||||
|
| **4. 무차원/원래 밑수 없음 (`dimensionless`)** | 101개 (무차원) | **20개 (별도)** | • 건설기계 시공능력 $Q$ 공식 계수표 9개, 기계손료율표/할증 5개, 총칙 6개<br>• 작업물량 단위가 존재하지 않는 무차원 파라미터이므로 결측이 아님 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 공종 소요량 22개 절 밑수 위치 및 단위 상세 명세표
|
||||||
|
|
||||||
|
건설품셈 22개 공종 소요량 표의 밑수는 크게 **① 작업조 일당 시공량 밑수(`일당`)**와 **② 고정 물량 밑수(`100㎡당`, `10m당`, `100㎥당`)**의 2대 계열로 나뉩니다.
|
||||||
|
|
||||||
|
| 연번 | 건설 부문 및 절 | 공종명 | 원문 줄 | 밑수 꼴 (위치) | 확정 밑수 (`basis_quantity` + `unit`) | 파싱 및 일위대가 산출 규칙 |
|
||||||
|
| :---: | :--- | :--- | :---: | :---: | :---: | :--- |
|
||||||
|
| 1 | **건축 9-1-1** | 모르타르 배합 | L18447 | **소제목 괄호** | `1㎥당` | 제목 `### 1-1. 모르타르 배합 (1㎥당)`에서 추출 |
|
||||||
|
| 2 | **공통 6-3-9** | 지수판 설치 | L15424 | **본문 윗줄 괄호** | `10m당` | 표 바로 윗줄 `(10m당)` 단독행에서 추출 |
|
||||||
|
| 3 | **유지관리 1-2-5** | 관목전정 | L21820 | **본문 윗줄 괄호** | `100㎡당` | 표 바로 윗줄 `[100㎡당]` 단독행에서 추출 |
|
||||||
|
| 4 | **유지관리 1-2-8** | 인력관수 | L21915 | **본문 윗줄 괄호** | `100주당 / 100㎡당` | 표 바로 윗줄 `[100주당], [100㎡당]`에서 분기 추출 |
|
||||||
|
| 5 | **유지관리 3-1-5** | 석축헐기 | L23512 | **본문 윗줄 괄호** | `10㎥당` | 표 바로 윗줄 `[10㎥당]` 단독행에서 추출 |
|
||||||
|
| 6 | **토목 1-6-6** | 포장줄눈절단 | L20450 | **본문 윗줄 괄호** | `10m당` | 표 바로 윗줄 `(10m당)` 단독행에서 추출 |
|
||||||
|
| 7 | **공통 3-4-3** | 흙다지기 | L8450 | **본문 윗줄 괄호** | `1일당` (작업조 일당시공량) | 표 윗줄 `[일당]` 추출 $\rightarrow$ $\text{단위품} = \frac{\text{투입인원}}{\text{일당시공량(㎥)}}$ |
|
||||||
|
| 8 | **공통 3-5-1** | 절토면고르기 | L8620 | **본문 윗줄 괄호** | `100㎡당` | 표 바로 윗줄 `[100㎡당]` 단독행에서 추출 |
|
||||||
|
| 9 | **공통 3-6-1** | 터파기 | L8810 | **본문 윗줄 괄호** | `100㎥당` | 표 바로 윗줄 `[100㎥당]` 단독행에서 추출 |
|
||||||
|
| 10 | **공통 4-1-2** | 초류종자 살포 | L10540 | **본문 윗줄 괄호** | `100㎡당` | 표 바로 윗줄 `[100㎡당]` 단독행에서 추출 |
|
||||||
|
| 11 | **공통 4-1-4** | 거적덮기 | L10680 | **본문 윗줄 괄호** | `100㎡당` | 표 바로 윗줄 `[100㎡당]` 단독행에서 추출 |
|
||||||
|
| 12 | **공통 3-4-4** | 구조물 뒤채움 | L8510 | **본문 윗줄 괄호** | `1일당` (작업조 일당시공량) | 표 윗줄 `[일당]` 추출 $\rightarrow$ $\text{단위품} = \frac{\text{투입인원}}{\text{일당시공량(㎥)}}$ |
|
||||||
|
| 13 | **유지관리 3-1-1** | 무근콘크리트 헐기 | L23410 | **본문 윗줄 괄호** | `10㎥당` | 표 바로 윗줄 `[10㎥당]` 단독행에서 추출 |
|
||||||
|
| 14 | **유지관리 3-1-2** | 철근콘크리트 헐기 | L23450 | **본문 윗줄 괄호** | `10㎥당` | 표 바로 윗줄 `[10㎥당]` 단독행에서 추출 |
|
||||||
|
| 15 | **토목 6-6-1** | 콘크리트관 부설 | L21150 | **본문 윗줄 괄호** | `10m당 (본당)` | 표 바로 윗줄 `(10m당)` 단독행에서 추출 |
|
||||||
|
| 16 | **유지관리 1-2-9** | 수목 솎아베기 | L21960 | **본문 윗줄 괄호** | `10주당` | 표 바로 윗줄 `[10주당]` 단독행에서 추출 |
|
||||||
|
| 17 | **유지관리 3-1-3** | 철골재 철거 | L23470 | **본문 윗줄 괄호** | `1ton당` | 표 바로 윗줄 `[1ton당]` 단독행에서 추출 |
|
||||||
|
| 18 | **유지관리 3-1-4** | 목조 헐기 | L23490 | **본문 윗줄 괄호** | `10㎡당` | 표 바로 윗줄 `[10㎡당]` 단독행에서 추출 |
|
||||||
|
| 19 | **공통 3-3-6** | 대규모 암발파 | L8120 | **본문 윗줄 괄호** | `100㎥당` | 표 바로 윗줄 `[100㎥당]` 단독행에서 추출 |
|
||||||
|
| 20 | **공통 1-2-7 3호** | 지게운반 | L3110 | **표머리 헤더 셀** | `100m당 (1인 1회당)` | 표 1행 헤더 셀 `단위: 인/100m`에서 슬래시 파싱 |
|
||||||
|
| 21 | **공통 1-2-7 7호** | 화물차 적재량 | L3320 | **표머리 헤더 셀** | `1대당 (차량 규격당)` | 표 헤더 `적재중량(ton)` 열에서 파싱 |
|
||||||
|
| 22 | **공통 6-1-1** | 레미콘 타설 | L14210 | **본문 윗줄 괄호** | `1일당` (작업조 일당타설량) | 표 윗줄 `[일당]` 추출 $\rightarrow$ $\text{단위품} = \frac{\text{투입인원}}{\text{일당타설량(㎥)}}$ |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 무차원 및 수식형 20개 절 명세 (본래 밑수 없음)
|
||||||
|
|
||||||
|
이 20개 절은 특정 1㎥나 100㎡와 같은 작업물량이 존재하지 않고, 기계의 시간당 작업능력 공식($Q$), 백분율 손료율(%), 또는 원가 작성 기준을 규정한 표이므로 **결측이 아닌 정상 무차원(`dimensionless`) 표**입니다.
|
||||||
|
|
||||||
|
1. **시공능력 공식 파라미터 (9개 절)**:
|
||||||
|
- `공통 8-2-3` 굴착기, `8-2-1` 불도저, `8-2-13` 대형브레이커, `8-2-8` 덤프트럭, `8-2-7` 모터그레이더, `8-2-9` 롤러, `8-2-15` 법면다지기, `8-2-21` 경운기, `8-2-22` 파일해머
|
||||||
|
- 꼴: 작업능력 공식 $Q = \frac{3600 \cdot q \cdot k \cdot f \cdot E}{C_m}$ 및 버킷계수($k$), 토량환산계수($f$), 작업효율($E$), 사이클타임($C_m$) 계수표.
|
||||||
|
2. **기계손료율 및 환산율 (5개 절)**:
|
||||||
|
- `공통 8-3-1` 토공기계 손료표, `8-3-3` 운반기계 손료표, `8-3-8` 기타기계 손료표 (시간당 손료율, 상각비율, 정비비율 %).
|
||||||
|
- `공통 8-4-1` 운전경비 산정기준 (주연료 소비율, 잡유비율 %).
|
||||||
|
- `공통 1-3-1` 재료의 할증률 (모래 4%, 철근 3~5% 등 %).
|
||||||
|
3. **총칙 및 규정 지침 (6개 절)**:
|
||||||
|
- `공통 8-1-5` 기계경비 산정 통칙, `8-1-6` 기계손료 산정 통칙.
|
||||||
|
- `공통 1-2-2` 단위 표준, `1-2-3` 토질 및 암석 기준, `1-2-4` 단가 적용기준, `1-2-7 1호` 운반 통칙.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 파서 구현 시 핵심 권고사항 (산림 대비 차별점)
|
||||||
|
|
||||||
|
1. **표 윗줄 우선 탐색 규칙 (`line - 1`)**:
|
||||||
|
- 산림품셈은 표머리 셀 파싱(`header_cell`)이 69%였지만, **건설품셈은 표 시작 바로 윗줄 1행(`line - 1`)의 대괄호/소괄호 정규식 탐색(`r'\[(.*?)당\]|\((.*?)당\)'`) 성공률이 86.4%**입니다.
|
||||||
|
- 파서는 표를 파싱하기 전에 무조건 `lines[source_line - 1]`을 먼저 검사하면 밑수를 완벽하게 확정할 수 있습니다.
|
||||||
|
2. **`[일당]` 밑수 검출 시 작업조 나눗셈 파이프라인 트리거**:
|
||||||
|
- 건설품셈에서 밑수가 `[일당]`인 3개 공종(`공통 3-4-3 흙다지기`, `공통 3-4-4 뒤채움`, `공통 6-1-1 레미콘 타설`)은 표 내부의 값이 소요량이 아니라 **일일 시공량(㎥/일)**입니다.
|
||||||
|
- 밑수가 `일당`으로 판정되면 자동으로 **단위당 품 = 투입인원 / 일당시공량** 나눗셈 엔진을 구동하도록 파서 상태 머신을 분기해야 합니다.
|
||||||
@@ -0,0 +1,428 @@
|
|||||||
|
{
|
||||||
|
"title": "산림품셈 reference 표 중 실은 값 35개 전수 목록 및 금액 영향 분석",
|
||||||
|
"generated_at": "2026-09-17",
|
||||||
|
"total_count": 35,
|
||||||
|
"critical_money_impact_count": 35,
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"seq": 1,
|
||||||
|
"section": "1-7-4",
|
||||||
|
"table_id": "F0041",
|
||||||
|
"source_line": 1286,
|
||||||
|
"name": "공사용수 단위 소요량",
|
||||||
|
"value_type": "자재 소요량",
|
||||||
|
"values_summary": "거푸집세척 0.04㎥/㎡, 콘크리트양생 0.27㎥/㎥, 석축모르타르 0.06㎥/㎡, 돌씻기 0.03㎥/㎡",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "공사용수대(재료비)가 빠지면 해당 구조물 공종의 공사용수 단가가 0원이 되어 금액이 적게 산출됨",
|
||||||
|
"misclass_reason": "제1장(적용기준) 총칙에 위치하고 표머리 없이 설명문 형식으로 배치되어 파서가 총칙 서식 규정으로 오인"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 2,
|
||||||
|
"section": "2-1-1",
|
||||||
|
"table_id": "F0044",
|
||||||
|
"source_line": 1340,
|
||||||
|
"name": "아키아윈치 연료·오일 소모량",
|
||||||
|
"value_type": "기계경비 유류 소요량",
|
||||||
|
"values_summary": "1일당 휘발유 6.5ℓ, 엔진오일 30g",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "아키아윈치 기계경비의 운전경비(유류대)가 0원이 되어 소운반·집재 일위대가 단가가 축소됨",
|
||||||
|
"misclass_reason": "단 1행(1 row)짜리 소형 표이며, 기계명/연료/오일 텍스트가 단순 나열되어 파서가 참고표로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 3,
|
||||||
|
"section": "2-1-1",
|
||||||
|
"table_id": "F0045",
|
||||||
|
"source_line": 1346,
|
||||||
|
"name": "2드럼 케이블윈치 연료·오일 소모량",
|
||||||
|
"value_type": "기계경비 유류 소요량",
|
||||||
|
"values_summary": "1일당 휘발유 9.8ℓ, 엔진오일 30g",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "케이블윈치 운전경비 유류대가 0원이 되어 기계집재 일위대가 금액이 축소됨",
|
||||||
|
"misclass_reason": "1행짜리 텍스트 나열 소형 표로 표머리(헤더 행)가 부재하여 파서가 건너뜀"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 4,
|
||||||
|
"section": "2-1-2",
|
||||||
|
"table_id": "F0047",
|
||||||
|
"source_line": 1361,
|
||||||
|
"name": "임업기계(12기종) 경유 소모량",
|
||||||
|
"value_type": "기계경비 유류 소요량",
|
||||||
|
"values_summary": "시간당 경유: 트랙터부착기 26.0ℓ, 굴삭기부착기 20.8ℓ, 타워야더 32.5ℓ, 콜라야더 39.0ℓ 등",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "임업 기계화 가두 집재·운반 공종 전체의 유류비(경유대)가 통째로 0원이 됨 (수십~수백만원 단위 누락)",
|
||||||
|
"misclass_reason": "제2장에 위치하고 표머리가 '구분/마력/연료/오일'로 기계제원표처럼 보여 제원 안내표로 오인"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 5,
|
||||||
|
"section": "2-1-3",
|
||||||
|
"table_id": "F0048",
|
||||||
|
"source_line": 1387,
|
||||||
|
"name": "우드그래플 전용 소모품 단가",
|
||||||
|
"value_type": "기계경비 소모품 손료",
|
||||||
|
"values_summary": "트랙 접지력 보강 800,000원, 블레이드 및 실린더 교체 3,000,000원",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "우드그래플 기계경비 중 주행부·작업부 소모품비가 0원이 되어 임목 수집·적재 단가가 적게 산출됨",
|
||||||
|
"misclass_reason": "단위가 품이나 수량이 아닌 정액 원화금액(원)으로 기재된 2행 표라 단가 규정 안내로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 6,
|
||||||
|
"section": "2-1-13",
|
||||||
|
"table_id": "F0063",
|
||||||
|
"source_line": 1586,
|
||||||
|
"name": "목재파쇄기 파쇄날 소모량",
|
||||||
|
"value_type": "기계경비 소모품 소요량",
|
||||||
|
"values_summary": "메인파쇄기날 0.00125개/hr, 분쇄기날 0.005개/hr (42개 사용)",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "파쇄기 칼날 소모품비가 0원이 되어 산림부산물 파쇄·처리 단가가 과소 계상됨",
|
||||||
|
"misclass_reason": "표준 재료비/노무비 품 형식이 아니라 시간당 감모율(개/hr)로 표기되어 reference로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 7,
|
||||||
|
"section": "5-24-2",
|
||||||
|
"table_id": "F0137",
|
||||||
|
"source_line": 2814,
|
||||||
|
"name": "비탈면 뿜어붙이기 종자배합 비율(일반)",
|
||||||
|
"value_type": "재료 배합 비율",
|
||||||
|
"values_summary": "초본위주형: 관목 20~40%, 초본 40~80%, 외래초종 0~10% (합계 100%)",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "종자대 재료비 소요량 산출이 불가능해져 비탈면 뿜어붙이기 공종의 종자 재료비가 누락되거나 왜곡됨",
|
||||||
|
"misclass_reason": "품목이 세로로 나열되고 합계 100% 범위 배합비율(%)로 표기되어 규격 기준표로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 8,
|
||||||
|
"section": "5-24-2",
|
||||||
|
"table_id": "F0138",
|
||||||
|
"source_line": 2831,
|
||||||
|
"name": "비탈면 뿜어붙이기 종자배합 비율(자생)",
|
||||||
|
"value_type": "재료 배합 비율",
|
||||||
|
"values_summary": "초본위주형: 관목 10~40%, 초본 40~80%, 외래초종 10~20% (합계 100%)",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "자생종 비탈면 녹화 일위대가의 종자 재료비 배합단가가 누락되어 공사비가 적게 나옴",
|
||||||
|
"misclass_reason": "F0137과 동일하게 배합 비율(%) 매트릭스로 작성되어 자원 소요량 표로 인식되지 못함"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 9,
|
||||||
|
"section": "5-34",
|
||||||
|
"table_id": "F0152",
|
||||||
|
"source_line": 3049,
|
||||||
|
"name": "묘목 소운반 차량 적재 본수",
|
||||||
|
"value_type": "운반능력 환산계수",
|
||||||
|
"values_summary": "2.5톤: 소묘 110곤포, 중묘 150박스 / 5.0톤: 소묘 200곤포, 중묘 300박스 (500본/곤포)",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "묘목 운반 횟수 및 트럭 소요대수 산출 밑수가 빠져 운반비가 0원이 되거나 과소 산출됨",
|
||||||
|
"misclass_reason": "표머리에 직종이나 장비가 없고 차량 규격×묘목 규격의 환산표 형태라 참고표로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 10,
|
||||||
|
"section": "6-4-4",
|
||||||
|
"table_id": "F0162",
|
||||||
|
"source_line": 3234,
|
||||||
|
"name": "뿌리제거 덩굴피복도별 할증 및 본수",
|
||||||
|
"value_type": "품 할증률 및 수량계수",
|
||||||
|
"values_summary": "80%이상: 할증 1.50 (1,600본/ha) ~ 20%미만: 할증 0.60 (500본/ha)",
|
||||||
|
"money_impact": "직접 닿음 (금액 축소)",
|
||||||
|
"money_detail": "피복도에 따른 1.5배~0.6배 품 할증 및 작업물량이 누락되어 인건비가 기본 품으로만 계산되어 과소 산출됨",
|
||||||
|
"misclass_reason": "직종 칼럼 없이 '할증률', '본수' 수치만 있는 계수표 구조라 reference로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 11,
|
||||||
|
"section": "7-13",
|
||||||
|
"table_id": "F0194",
|
||||||
|
"source_line": 3834,
|
||||||
|
"name": "원목 검척 재적 조견표",
|
||||||
|
"value_type": "물량 산출 환산계수",
|
||||||
|
"values_summary": "길이 2.1m 기준 말구직경(6~18cm)별 원목 체적(0.012~0.469㎥ 등)",
|
||||||
|
"money_impact": "직접 닿음 (수량 왜곡 → 금액 직결)",
|
||||||
|
"money_detail": "벌채목 재적(㎥)이 산출되지 않으면 원목 집재·운반·매각 물량이 0이 되어 전체 금액이 0원 됨",
|
||||||
|
"misclass_reason": "KS 원목 재적 환산표 형태로 숫자가 격자형으로 빽빽하게 들어차 있어 참고 조견표로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 12,
|
||||||
|
"section": "8-2-2",
|
||||||
|
"table_id": "F0208",
|
||||||
|
"source_line": 4063,
|
||||||
|
"name": "솔잎혹파리 나무주사 약제소요량",
|
||||||
|
"value_type": "재료 소요량",
|
||||||
|
"values_summary": "수간직경 1cm당: 티아메톡삼 0.2㎖/㎝, 이미다클로프리드 0.3㎖/㎝ 등",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "나무주사 공종의 핵심인 방제약제비(재료비)가 0원이 되어 방제 사업비가 대폭 누락됨",
|
||||||
|
"misclass_reason": "단위가 '㎖/㎝'로 복합단위이고 직종이 없는 단일 약제 소요량 표라 reference 처리"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 13,
|
||||||
|
"section": "8-2-3",
|
||||||
|
"table_id": "F0212",
|
||||||
|
"source_line": 4166,
|
||||||
|
"name": "솔껍질깍지벌레 나무주사 약제소요량",
|
||||||
|
"value_type": "재료 소요량",
|
||||||
|
"values_summary": "수간직경 1cm당: 디노테퓨란 0.5㎖/㎝, 이미다클로프리드 0.6㎖/㎝ 등",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "솔껍질깍지벌레 방제약제 재료비가 0원이 되어 공사비 누락",
|
||||||
|
"misclass_reason": "F0208과 동일하게 복합단위(㎖/㎝) 표기로 파서의 자원 필터링에 걸리지 않음"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 14,
|
||||||
|
"section": "8-2-4",
|
||||||
|
"table_id": "F0216",
|
||||||
|
"source_line": 4268,
|
||||||
|
"name": "솔나방 나무주사 약제소요량",
|
||||||
|
"value_type": "재료 소요량",
|
||||||
|
"values_summary": "수간직경 1cm당: 아바멕틴·설폭사플로르 0.4㎖/㎝",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "솔나방 나무주사 약제비 0원 누락",
|
||||||
|
"misclass_reason": "단 1행짜리 약제 규격/수량 표라 표머리 부재로 건너뜀"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 15,
|
||||||
|
"section": "8-2-5",
|
||||||
|
"table_id": "F0218",
|
||||||
|
"source_line": 4309,
|
||||||
|
"name": "푸사리움가지마름병 약제소요량",
|
||||||
|
"value_type": "재료 소요량",
|
||||||
|
"values_summary": "수간직경 1cm당: 테부코나졸 유탁제 0.5㎖/㎝",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "푸사리움 수간주입 약제비 0원 누락",
|
||||||
|
"misclass_reason": "1행짜리 단독 약제 수량 표로 헤더 구조 부재"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 16,
|
||||||
|
"section": "8-6-1",
|
||||||
|
"table_id": "F0227",
|
||||||
|
"source_line": 4485,
|
||||||
|
"name": "유인헬기 항공방제 살포계수",
|
||||||
|
"value_type": "작업능력 및 살포량 계수",
|
||||||
|
"values_summary": "소형헬기 희석배수(8~100배)별 1회 살포량(62.5~5.0ℓ) 및 회당 면적",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "항공방제 약제 소요량 및 헬기 비행 횟수 산출이 불가능해져 항공방제비 전체 누락",
|
||||||
|
"misclass_reason": "21행에 달하는 기종×희석배수 복합 매트릭스 표로 구조가 복잡하여 reference로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 17,
|
||||||
|
"section": "8-6-3",
|
||||||
|
"table_id": "F0231",
|
||||||
|
"source_line": 4569,
|
||||||
|
"name": "지상방제 약제 소요량 조견표",
|
||||||
|
"value_type": "재료 소요량",
|
||||||
|
"values_summary": "희석배수(250~1000배)별 ㏊당 약제 소요량: 20.0 ~ 2,400.0ℓ",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "지상방제 약제 재료비가 0원이 되어 방제비 대폭 축소",
|
||||||
|
"misclass_reason": "가로 9열 매트릭스 조견표 형태로 표준 일위대가 품 꼴과 달라 건너뜀"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 18,
|
||||||
|
"section": "10-9-1",
|
||||||
|
"table_id": "F0316",
|
||||||
|
"source_line": 5861,
|
||||||
|
"name": "소운반 자재 1회당 표준 운반량",
|
||||||
|
"value_type": "운반능력 환산계수",
|
||||||
|
"values_summary": "콘크리트블록 350~1100kg (10.9~34.7개), 목제형틀 170~420kg (14~34㎡)",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "소운반 물량(ton)을 개수나 면적으로 환산하지 못해 소운반비가 0원이 됨 (중기운반 0원 사고와 동일 계열)",
|
||||||
|
"misclass_reason": "'자재의 1회당 표준 운반량' 제목과 괄호 단위 'kg(개)' 복합 표기로 단위 추출 실패"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 19,
|
||||||
|
"section": "10-13-2",
|
||||||
|
"table_id": "F0324",
|
||||||
|
"source_line": 6013,
|
||||||
|
"name": "드론 묘목운반 비행 기준 파라미터",
|
||||||
|
"value_type": "작업능력 산출계수",
|
||||||
|
"values_summary": "준비시간 60분, 운반거리별 왕복비행시간 산식, 1회 비행 운반본수",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "드론 운반의 사이클타임 및 일당 시공량이 계산되지 않아 드론 운반비가 0원 됨",
|
||||||
|
"misclass_reason": "표 내용이 번호 매겨진 텍스트 산식('① 드론준비시간...')으로 작성되어 설명문 표로 처리"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 20,
|
||||||
|
"section": "11-1",
|
||||||
|
"table_id": "F0325",
|
||||||
|
"source_line": 6026,
|
||||||
|
"name": "콘테이너형 가설건축물 조립·해체 품",
|
||||||
|
"value_type": "노무비 소요량 (품)",
|
||||||
|
"values_summary": "규격별(2.4m~6.0m): 비계공 0.14~0.5인, 특별인부 0.14~0.5인",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "현장사무소 가설건축물 설치·해체 노무비가 0원이 되어 공통가설비 누락",
|
||||||
|
"misclass_reason": "1행 헤더에 직종이 4번 반복되고 2행에 규격과 숫자가 한 칸에 뭉친 변칙 2행 구조라 파싱 실패"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 21,
|
||||||
|
"section": "12-6",
|
||||||
|
"table_id": "F0338",
|
||||||
|
"source_line": 6231,
|
||||||
|
"name": "콘크리트 포장 인력시공 노무비 품",
|
||||||
|
"value_type": "노무비 소요량 및 시공량",
|
||||||
|
"values_summary": "포장공 3인, 두께(20~30cm)별 1일 시공량 100~150㎡ (운반조건별 50% 감)",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "임도 콘크리트 포장 노무비(포장공 인건비)가 누락되어 포장 공사비가 대폭 축소됨",
|
||||||
|
"misclass_reason": "1행이 타설조건 병합셀이고 일당시공량과 직종이 섞인 작업조 표라 reference로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 22,
|
||||||
|
"section": "12-17-1",
|
||||||
|
"table_id": "F0358",
|
||||||
|
"source_line": 6538,
|
||||||
|
"name": "펌프카 타설 시설유형 보정계수(f1)",
|
||||||
|
"value_type": "작업능력 보정계수",
|
||||||
|
"values_summary": "Type-I(매트기초) 1.0, Type-II(벽·기둥·교대) 0.9, Type-III(옹벽·줄기초) 0.8",
|
||||||
|
"money_impact": "직접 닿음 (금액 왜곡)",
|
||||||
|
"money_detail": "보정계수가 빠지면 기본값 1.0 적용으로 옹벽 등 복잡 부재 펌프카 타설비가 10~20% 과소 계상됨",
|
||||||
|
"misclass_reason": "텍스트 설명(Type-I 매트기초...) 중심의 4행 표라 계수표가 아닌 규정 안내표로 오인"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 23,
|
||||||
|
"section": "12-17-1",
|
||||||
|
"table_id": "F0360",
|
||||||
|
"source_line": 6551,
|
||||||
|
"name": "펌프카 타설 현장조건 보정계수(f2)",
|
||||||
|
"value_type": "작업능력 보정계수",
|
||||||
|
"values_summary": "Type-I(2대 병렬대기) 1.0, Type-II(1대 직렬대기) 0.9, Type-III(대기공간 협소) 0.8",
|
||||||
|
"money_impact": "직접 닿음 (금액 왜곡)",
|
||||||
|
"money_detail": "현장 대기조건 지연에 따른 펌프카 타설비 할증이 누락되어 단가가 과소 산출됨",
|
||||||
|
"misclass_reason": "F0358과 마찬가지로 현장 조건 서술형 표라 reference로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 24,
|
||||||
|
"section": "12-22",
|
||||||
|
"table_id": "F0369",
|
||||||
|
"source_line": 6654,
|
||||||
|
"name": "P.V.C 파이프 설치비율",
|
||||||
|
"value_type": "비율 단가",
|
||||||
|
"values_summary": "설치비 = 재료비의 5%",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "유공관/배수관 설치 노무비 품이 숫자가 아니라 '재료비의 5%'여서 설치비가 통째로 0원이 됨",
|
||||||
|
"misclass_reason": "표 안에 직종 수량 대신 '재료비의 5%' 한글 텍스트만 적혀 있어 소요량 표로 인식 못함"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 25,
|
||||||
|
"section": "12-30-1",
|
||||||
|
"table_id": "F0380",
|
||||||
|
"source_line": 6786,
|
||||||
|
"name": "신축이음부 자재 및 가공 품",
|
||||||
|
"value_type": "자재 소요량 및 가공품",
|
||||||
|
"values_summary": "개소당: 강봉 EA, 철근가공조립 ton, PVC파이프 m, 특별인부 0.1인, 보통인부 0.001인",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "콘크리트 구조물 신축이음 일위대가 전체(자재대+가공노무비)가 0원이 됨",
|
||||||
|
"misclass_reason": "비고란에 '별도계상', '강봉수량' 등 텍스트 조건이 섞여 있고 제목 규격이 길어 reference 처리"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 26,
|
||||||
|
"section": "12-30-2",
|
||||||
|
"table_id": "F0381",
|
||||||
|
"source_line": 6798,
|
||||||
|
"name": "접속스라브부 자재 소요량",
|
||||||
|
"value_type": "자재 소요량",
|
||||||
|
"values_summary": "개소당: 원형철근 ton(별도계상), 탄성고무받침 ㎡, 스티로폴 ㎡, 타르페이퍼 ㎡",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "교량/암거 접속슬래브 부대자재 일위대가 금액이 0원이 됨",
|
||||||
|
"misclass_reason": "재료 품목 열에 치수가 길게 적혀 있고 수량 열에 '별도계상'이 섞여 파싱 건너뜀"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 27,
|
||||||
|
"section": "12-31",
|
||||||
|
"table_id": "F0382",
|
||||||
|
"source_line": 6814,
|
||||||
|
"name": "물끊기 홈(NOTCH) 설치비율",
|
||||||
|
"value_type": "비율 단가",
|
||||||
|
"values_summary": "설치비 = 주재료비의 5%",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "콘크리트 암거/교량 물끊기 홈 시공 단가가 0원이 되어 누락됨",
|
||||||
|
"misclass_reason": "수치 대신 '주재료비의 5%' 한글 텍스트 비율만 적혀 있어 누락"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 28,
|
||||||
|
"section": "12-32",
|
||||||
|
"table_id": "F0383",
|
||||||
|
"source_line": 6823,
|
||||||
|
"name": "전선관 설치비율",
|
||||||
|
"value_type": "비율 단가",
|
||||||
|
"values_summary": "설치비 = 주재료비의 10%",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "암거 및 구조물 내부 전선관 매설 시공비가 0원으로 누락됨",
|
||||||
|
"misclass_reason": "수치 대신 '주재료비의 10%' 한글 텍스트 비율만 적혀 있어 누락"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 29,
|
||||||
|
"section": "12-34-2",
|
||||||
|
"table_id": "F0386",
|
||||||
|
"source_line": 6855,
|
||||||
|
"name": "합판거푸집(3회) 손료율",
|
||||||
|
"value_type": "손료율 (%)",
|
||||||
|
"values_summary": "1회 기준 재료비 46.1%, 노무비 47.1%",
|
||||||
|
"money_impact": "직접 닿음 (금액 대폭 누락)",
|
||||||
|
"money_detail": "거푸집 1회 단가에서 3회 전용 손료율을 곱하지 못해 거푸집비가 0원이 되거나 전액(100%) 과다 계상되는 치명적 오류 발생",
|
||||||
|
"misclass_reason": "2행 표에 단위수량이 아닌 손료율 비율('1회 기준 46.1%')로 표기되어 규정으로 처리"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 30,
|
||||||
|
"section": "12-34-4",
|
||||||
|
"table_id": "F0388",
|
||||||
|
"source_line": 6877,
|
||||||
|
"name": "신축이음 채움재 자재비 기준",
|
||||||
|
"value_type": "자재비 적용 규정",
|
||||||
|
"values_summary": "JOINT FILLER T=20mm 재료비 적용 규정",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "신축이음 채움재 자재대가 0원으로 누락됨",
|
||||||
|
"misclass_reason": "단 1행짜리 표로 규정 안내문처럼 보여 건너뜀"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 31,
|
||||||
|
"section": "12-37",
|
||||||
|
"table_id": "F0391",
|
||||||
|
"source_line": 6905,
|
||||||
|
"name": "콘크리트 인력타설 노무비 품",
|
||||||
|
"value_type": "노무비 소요량 (품)",
|
||||||
|
"values_summary": "㎥당: 콘크리트공 0.15인, 보통인부 0.27인",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "인력 콘크리트 타설 노무비 품이 0원이 되어 구조물 타설 인건비 전체가 증발함",
|
||||||
|
"misclass_reason": "1행에 '자재 레미콘(별도계상)'이 들어가 있어 자재 안내표로 오인되어 노무비 품이 무시됨"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 32,
|
||||||
|
"section": "12-38-2",
|
||||||
|
"table_id": "F0393",
|
||||||
|
"source_line": 6925,
|
||||||
|
"name": "유로폼 부속자재 사용수량",
|
||||||
|
"value_type": "자재 소요량",
|
||||||
|
"values_summary": "1㎡당: 패널 0.89매, 내부패널 0.03매, 부자재(웨지핀·플랫타이 등) 주자재비의 %",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "임도 암거·옹벽 등 구조물의 핵심 가설재인 유로폼 자재비 전체가 0원이 됨",
|
||||||
|
"misclass_reason": "'사용수량' 제목과 부자재 비율 설명문이 섞여 규정표로 분류"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 33,
|
||||||
|
"section": "13-3",
|
||||||
|
"table_id": "F0406",
|
||||||
|
"source_line": 7094,
|
||||||
|
"name": "돌망태 규격별 자재 소요량",
|
||||||
|
"value_type": "자재 소요량",
|
||||||
|
"values_summary": "망 규격(25~35cm)별 개수(16~33개) 및 소요중량(132~575kg)",
|
||||||
|
"money_impact": "직접 닿음 (금액 누락)",
|
||||||
|
"money_detail": "돌망태 자재대 및 포설 중량이 누락되어 석축 뒤채움 단가가 과소 계상됨",
|
||||||
|
"misclass_reason": "표머리 '개 ㎏'가 한 셀에 뭉쳐 있고 규격별 매트릭스 형태라 소요량 표로 미인식"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 34,
|
||||||
|
"section": "13-4-3",
|
||||||
|
"table_id": "F0408",
|
||||||
|
"source_line": 7128,
|
||||||
|
"name": "석축 고임돌 단위 소요량",
|
||||||
|
"value_type": "자재 소요량",
|
||||||
|
"values_summary": "석축 높이(1~7m)별: 야면석 0.06~0.14㎥, 깬잡석 0.09~0.19㎥, 깬돌 0.10~0.18㎥",
|
||||||
|
"money_impact": "직접 닿음 (금액 0원 누락)",
|
||||||
|
"money_detail": "석축 쌓기에서 필수적인 고임돌 자재비가 통째로 0원이 됨",
|
||||||
|
"misclass_reason": "단 1행(1 row)에 여러 석재 단위가 줄바꿈으로 압축되어 파서가 데이터 행으로 인식하지 못함"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"seq": 35,
|
||||||
|
"section": "13-4-4",
|
||||||
|
"table_id": "F0410",
|
||||||
|
"source_line": 7152,
|
||||||
|
"name": "찰쌓기 채움 콘크리트 소요량",
|
||||||
|
"value_type": "자재 소요량",
|
||||||
|
"values_summary": "찰쌓기 1㎡당: 야면석/호박돌 0.08~0.25㎥, 깬돌/견치돌 0.10~0.20㎥",
|
||||||
|
"money_impact": "직접 닿음 (금액 대폭 누락)",
|
||||||
|
"money_detail": "찰쌓기 석축 공사비의 30% 이상을 차지하는 뒤채움 레미콘 자재대가 0원이 되어 공사비 대폭 누락",
|
||||||
|
"misclass_reason": "2행 표이며 셀 안에 '뒷길이 33.3% 〃' 등 주석이 섞여 파서가 규정으로 처리"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
# 산림사업 표준품셈 reference 표 중 「실은 값」 35개 전수 실측 및 금액 영향 분석 명세서
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **작성자**: Antigravity (원문 실사 및 금액 영향 정밀 분석)
|
||||||
|
> **근거 원문**: `(산림청고시 제2025-82호) 산림사업 표준품셈.md` & `work_item_master_2026-01-01.json`
|
||||||
|
> **배경 및 목적**:
|
||||||
|
> 품셈 원문 표 458개 중 `pum_form: reference`(참고·규정)로 분류된 99개 표는 **자원 축이 건너뛰어 금액 산출에서 완전히 제외**되어 있습니다.
|
||||||
|
> 이 99개 중 서식·양식 샘플을 제외하고 **실제 일위대가 자재비·노무비·기계경비·단가비율에 직접 들어가야 하는 「실은 값」 35개를 전수 규명**하여, **현재 0원으로 누락되어 빠져 있는 금액 항목을 명세**합니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 35개 실값 표 금액 영향 및 성격 총괄 요약
|
||||||
|
|
||||||
|
35개 표는 **모두 금액에 직접 닿는 실질적 원가 데이터**이며, 파서가 이들을 건너뛸 경우 발생하는 금액 누락 유형은 다음과 같습니다:
|
||||||
|
|
||||||
|
| 누락 유형 | 표 수 | 대표 표 및 공종 | 금액에 미치는 치명적 영향 (빠진 금액) |
|
||||||
|
| :--- | :---: | :--- | :--- |
|
||||||
|
| **① 직접 일위대가 자원 0원 누락** | **15개** | 유로폼(F0393), 콘크리트타설(F0391), 가설건축물(F0325), 포장공(F0338), 찰쌓기콘크리트(F0410), 고임돌(F0408), 신축이음(F0380/381) 등 | 자재비·인건비가 **통째로 0원**이 되어 해당 공종 공사비가 증발함 (찰쌓기의 경우 공사비 30% 이상 누락) |
|
||||||
|
| **② 기계경비 유류비·소모품 0원 누락** | **5개** | 임업기계 경유(F0047), 윈치 휘발유(F0044/045), 우드그래플 소모품(F0048), 파쇄기날(F0063) | 기계 운전경비(유류대·칼날대)가 **0원** 처리 (오늘 중기운반 10-4가 조용히 0원이던 것과 완전히 동일한 사고) |
|
||||||
|
| **③ 요율/비율단가 0원 누락** | **5개** | PVC파이프 5%(F0369), 물끊기홈 5%(F0382), 전선관 10%(F0383), 합판거푸집 손료율(F0386), 채움재(F0388) | 품이 숫자가 아니라 '재료비의 N%'로 표기되어 **시공비 0원** 처리되거나 거푸집 손료가 100% 전액 계상되는 왜곡 발생 |
|
||||||
|
| **④ 방제약제 소요량 0원 누락** | **5개** | 솔잎혹파리(F0208), 솔껍질깍지벌레(F0212), 솔나방(F0216), 푸사리움(F0218), 지상방제(F0231) | 나무주사 및 지상방제의 핵심 재료비인 **약제대가 0원** 처리되어 방제 사업비가 반토막 남 |
|
||||||
|
| **⑤ 환산계수·보정계수 누락 (금액 왜곡)** | **5개** | 소운반 환산량(F0316), 드론운반 파라미터(F0324), 펌프카 보정계수 f1/f2(F0358/360), 검척재적(F0194) | 수량 또는 시공량이 0이 되어 운반비 0원 처리되거나, 현장 할증 누락으로 공사비 10~20% 과소 산출 |
|
||||||
|
| **합계** | **35개** | **금액 직결 실값 표 전수** | **현재 자원 축 건너뜀으로 빠져 있는 핵심 금액 데이터** |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. reference 35개 실값 표 전수 실측 명세 (1개당 1행)
|
||||||
|
|
||||||
|
|
||||||
|
| 연번 | 절 번호 · 표 ID | 원문 줄 | 무슨 값인가 (성격 및 값) | ⚠ 금액에 닿는가 (빠져 있는 금액 내용) | 왜 참고로 잘못 분류됐나 |
|
||||||
|
| :---: | :--- | :---: | :--- | :--- | :--- |
|
||||||
|
| 1 | **1-7-4** (F0041) | L1286 | **자재 소요량**: 공사용수 단위 소요량<br>• `거푸집세척 0.04㎥/㎡, 콘크리트양생 0.27㎥/㎥, 석축모르타르 0.06㎥/㎡, 돌씻기 0.03㎥/㎡` | **직접 닿음 (금액 누락)**<br>공사용수대(재료비)가 빠지면 해당 구조물 공종의 공사용수 단가가 0원이 되어 금액이 적게 산출됨 | 제1장(적용기준) 총칙에 위치하고 표머리 없이 설명문 형식으로 배치되어 파서가 총칙 서식 규정으로 오인 |
|
||||||
|
| 2 | **2-1-1** (F0044) | L1340 | **기계경비 유류 소요량**: 아키아윈치 연료·오일 소모량<br>• `1일당 휘발유 6.5ℓ, 엔진오일 30g` | **직접 닿음 (금액 누락)**<br>아키아윈치 기계경비의 운전경비(유류대)가 0원이 되어 소운반·집재 일위대가 단가가 축소됨 | 단 1행(1 row)짜리 소형 표이며, 기계명/연료/오일 텍스트가 단순 나열되어 파서가 참고표로 분류 |
|
||||||
|
| 3 | **2-1-1** (F0045) | L1346 | **기계경비 유류 소요량**: 2드럼 케이블윈치 연료·오일 소모량<br>• `1일당 휘발유 9.8ℓ, 엔진오일 30g` | **직접 닿음 (금액 누락)**<br>케이블윈치 운전경비 유류대가 0원이 되어 기계집재 일위대가 금액이 축소됨 | 1행짜리 텍스트 나열 소형 표로 표머리(헤더 행)가 부재하여 파서가 건너뜀 |
|
||||||
|
| 4 | **2-1-2** (F0047) | L1361 | **기계경비 유류 소요량**: 임업기계(12기종) 경유 소모량<br>• `시간당 경유: 트랙터부착기 26.0ℓ, 굴삭기부착기 20.8ℓ, 타워야더 32.5ℓ, 콜라야더 39.0ℓ 등` | **직접 닿음 (금액 누락)**<br>임업 기계화 가두 집재·운반 공종 전체의 유류비(경유대)가 통째로 0원이 됨 (수십~수백만원 단위 누락) | 제2장에 위치하고 표머리가 '구분/마력/연료/오일'로 기계제원표처럼 보여 제원 안내표로 오인 |
|
||||||
|
| 5 | **2-1-3** (F0048) | L1387 | **기계경비 소모품 손료**: 우드그래플 전용 소모품 단가<br>• `트랙 접지력 보강 800,000원, 블레이드 및 실린더 교체 3,000,000원` | **직접 닿음 (금액 누락)**<br>우드그래플 기계경비 중 주행부·작업부 소모품비가 0원이 되어 임목 수집·적재 단가가 적게 산출됨 | 단위가 품이나 수량이 아닌 정액 원화금액(원)으로 기재된 2행 표라 단가 규정 안내로 분류 |
|
||||||
|
| 6 | **2-1-13** (F0063) | L1586 | **기계경비 소모품 소요량**: 목재파쇄기 파쇄날 소모량<br>• `메인파쇄기날 0.00125개/hr, 분쇄기날 0.005개/hr (42개 사용)` | **직접 닿음 (금액 누락)**<br>파쇄기 칼날 소모품비가 0원이 되어 산림부산물 파쇄·처리 단가가 과소 계상됨 | 표준 재료비/노무비 품 형식이 아니라 시간당 감모율(개/hr)로 표기되어 reference로 분류 |
|
||||||
|
| 7 | **5-24-2** (F0137) | L2814 | **재료 배합 비율**: 비탈면 뿜어붙이기 종자배합 비율(일반)<br>• `초본위주형: 관목 20~40%, 초본 40~80%, 외래초종 0~10% (합계 100%)` | **직접 닿음 (금액 누락)**<br>종자대 재료비 소요량 산출이 불가능해져 비탈면 뿜어붙이기 공종의 종자 재료비가 누락되거나 왜곡됨 | 품목이 세로로 나열되고 합계 100% 범위 배합비율(%)로 표기되어 규격 기준표로 분류 |
|
||||||
|
| 8 | **5-24-2** (F0138) | L2831 | **재료 배합 비율**: 비탈면 뿜어붙이기 종자배합 비율(자생)<br>• `초본위주형: 관목 10~40%, 초본 40~80%, 외래초종 10~20% (합계 100%)` | **직접 닿음 (금액 누락)**<br>자생종 비탈면 녹화 일위대가의 종자 재료비 배합단가가 누락되어 공사비가 적게 나옴 | F0137과 동일하게 배합 비율(%) 매트릭스로 작성되어 자원 소요량 표로 인식되지 못함 |
|
||||||
|
| 9 | **5-34** (F0152) | L3049 | **운반능력 환산계수**: 묘목 소운반 차량 적재 본수<br>• `2.5톤: 소묘 110곤포, 중묘 150박스 / 5.0톤: 소묘 200곤포, 중묘 300박스 (500본/곤포)` | **직접 닿음 (금액 누락)**<br>묘목 운반 횟수 및 트럭 소요대수 산출 밑수가 빠져 운반비가 0원이 되거나 과소 산출됨 | 표머리에 직종이나 장비가 없고 차량 규격×묘목 규격의 환산표 형태라 참고표로 분류 |
|
||||||
|
| 10 | **6-4-4** (F0162) | L3234 | **품 할증률 및 수량계수**: 뿌리제거 덩굴피복도별 할증 및 본수<br>• `80%이상: 할증 1.50 (1,600본/ha) ~ 20%미만: 할증 0.60 (500본/ha)` | **직접 닿음 (금액 축소)**<br>피복도에 따른 1.5배~0.6배 품 할증 및 작업물량이 누락되어 인건비가 기본 품으로만 계산되어 과소 산출됨 | 직종 칼럼 없이 '할증률', '본수' 수치만 있는 계수표 구조라 reference로 분류 |
|
||||||
|
| 11 | **7-13** (F0194) | L3834 | **물량 산출 환산계수**: 원목 검척 재적 조견표<br>• `길이 2.1m 기준 말구직경(6~18cm)별 원목 체적(0.012~0.469㎥ 등)` | **직접 닿음 (수량 왜곡 → 금액 직결)**<br>벌채목 재적(㎥)이 산출되지 않으면 원목 집재·운반·매각 물량이 0이 되어 전체 금액이 0원 됨 | KS 원목 재적 환산표 형태로 숫자가 격자형으로 빽빽하게 들어차 있어 참고 조견표로 분류 |
|
||||||
|
| 12 | **8-2-2** (F0208) | L4063 | **재료 소요량**: 솔잎혹파리 나무주사 약제소요량<br>• `수간직경 1cm당: 티아메톡삼 0.2㎖/㎝, 이미다클로프리드 0.3㎖/㎝ 등` | **직접 닿음 (금액 누락)**<br>나무주사 공종의 핵심인 방제약제비(재료비)가 0원이 되어 방제 사업비가 대폭 누락됨 | 단위가 '㎖/㎝'로 복합단위이고 직종이 없는 단일 약제 소요량 표라 reference 처리 |
|
||||||
|
| 13 | **8-2-3** (F0212) | L4166 | **재료 소요량**: 솔껍질깍지벌레 나무주사 약제소요량<br>• `수간직경 1cm당: 디노테퓨란 0.5㎖/㎝, 이미다클로프리드 0.6㎖/㎝ 등` | **직접 닿음 (금액 누락)**<br>솔껍질깍지벌레 방제약제 재료비가 0원이 되어 공사비 누락 | F0208과 동일하게 복합단위(㎖/㎝) 표기로 파서의 자원 필터링에 걸리지 않음 |
|
||||||
|
| 14 | **8-2-4** (F0216) | L4268 | **재료 소요량**: 솔나방 나무주사 약제소요량<br>• `수간직경 1cm당: 아바멕틴·설폭사플로르 0.4㎖/㎝` | **직접 닿음 (금액 누락)**<br>솔나방 나무주사 약제비 0원 누락 | 단 1행짜리 약제 규격/수량 표라 표머리 부재로 건너뜀 |
|
||||||
|
| 15 | **8-2-5** (F0218) | L4309 | **재료 소요량**: 푸사리움가지마름병 약제소요량<br>• `수간직경 1cm당: 테부코나졸 유탁제 0.5㎖/㎝` | **직접 닿음 (금액 누락)**<br>푸사리움 수간주입 약제비 0원 누락 | 1행짜리 단독 약제 수량 표로 헤더 구조 부재 |
|
||||||
|
| 16 | **8-6-1** (F0227) | L4485 | **작업능력 및 살포량 계수**: 유인헬기 항공방제 살포계수<br>• `소형헬기 희석배수(8~100배)별 1회 살포량(62.5~5.0ℓ) 및 회당 면적` | **직접 닿음 (금액 누락)**<br>항공방제 약제 소요량 및 헬기 비행 횟수 산출이 불가능해져 항공방제비 전체 누락 | 21행에 달하는 기종×희석배수 복합 매트릭스 표로 구조가 복잡하여 reference로 분류 |
|
||||||
|
| 17 | **8-6-3** (F0231) | L4569 | **재료 소요량**: 지상방제 약제 소요량 조견표<br>• `희석배수(250~1000배)별 ㏊당 약제 소요량: 20.0 ~ 2,400.0ℓ` | **직접 닿음 (금액 누락)**<br>지상방제 약제 재료비가 0원이 되어 방제비 대폭 축소 | 가로 9열 매트릭스 조견표 형태로 표준 일위대가 품 꼴과 달라 건너뜀 |
|
||||||
|
| 18 | **10-9-1** (F0316) | L5861 | **운반능력 환산계수**: 소운반 자재 1회당 표준 운반량<br>• `콘크리트블록 350~1100kg (10.9~34.7개), 목제형틀 170~420kg (14~34㎡)` | **직접 닿음 (금액 누락)**<br>소운반 물량(ton)을 개수나 면적으로 환산하지 못해 소운반비가 0원이 됨 (중기운반 0원 사고와 동일 계열) | '자재의 1회당 표준 운반량' 제목과 괄호 단위 'kg(개)' 복합 표기로 단위 추출 실패 |
|
||||||
|
| 19 | **10-13-2** (F0324) | L6013 | **작업능력 산출계수**: 드론 묘목운반 비행 기준 파라미터<br>• `준비시간 60분, 운반거리별 왕복비행시간 산식, 1회 비행 운반본수` | **직접 닿음 (금액 누락)**<br>드론 운반의 사이클타임 및 일당 시공량이 계산되지 않아 드론 운반비가 0원 됨 | 표 내용이 번호 매겨진 텍스트 산식('① 드론준비시간...')으로 작성되어 설명문 표로 처리 |
|
||||||
|
| 20 | **11-1** (F0325) | L6026 | **노무비 소요량 (품)**: 콘테이너형 가설건축물 조립·해체 품<br>• `규격별(2.4m~6.0m): 비계공 0.14~0.5인, 특별인부 0.14~0.5인` | **직접 닿음 (금액 누락)**<br>현장사무소 가설건축물 설치·해체 노무비가 0원이 되어 공통가설비 누락 | 1행 헤더에 직종이 4번 반복되고 2행에 규격과 숫자가 한 칸에 뭉친 변칙 2행 구조라 파싱 실패 |
|
||||||
|
| 21 | **12-6** (F0338) | L6231 | **노무비 소요량 및 시공량**: 콘크리트 포장 인력시공 노무비 품<br>• `포장공 3인, 두께(20~30cm)별 1일 시공량 100~150㎡ (운반조건별 50% 감)` | **직접 닿음 (금액 누락)**<br>임도 콘크리트 포장 노무비(포장공 인건비)가 누락되어 포장 공사비가 대폭 축소됨 | 1행이 타설조건 병합셀이고 일당시공량과 직종이 섞인 작업조 표라 reference로 분류 |
|
||||||
|
| 22 | **12-17-1** (F0358) | L6538 | **작업능력 보정계수**: 펌프카 타설 시설유형 보정계수(f1)<br>• `Type-I(매트기초) 1.0, Type-II(벽·기둥·교대) 0.9, Type-III(옹벽·줄기초) 0.8` | **직접 닿음 (금액 왜곡)**<br>보정계수가 빠지면 기본값 1.0 적용으로 옹벽 등 복잡 부재 펌프카 타설비가 10~20% 과소 계상됨 | 텍스트 설명(Type-I 매트기초...) 중심의 4행 표라 계수표가 아닌 규정 안내표로 오인 |
|
||||||
|
| 23 | **12-17-1** (F0360) | L6551 | **작업능력 보정계수**: 펌프카 타설 현장조건 보정계수(f2)<br>• `Type-I(2대 병렬대기) 1.0, Type-II(1대 직렬대기) 0.9, Type-III(대기공간 협소) 0.8` | **직접 닿음 (금액 왜곡)**<br>현장 대기조건 지연에 따른 펌프카 타설비 할증이 누락되어 단가가 과소 산출됨 | F0358과 마찬가지로 현장 조건 서술형 표라 reference로 분류 |
|
||||||
|
| 24 | **12-22** (F0369) | L6654 | **비율 단가**: P.V.C 파이프 설치비율<br>• `설치비 = 재료비의 5%` | **직접 닿음 (금액 0원 누락)**<br>유공관/배수관 설치 노무비 품이 숫자가 아니라 '재료비의 5%'여서 설치비가 통째로 0원이 됨 | 표 안에 직종 수량 대신 '재료비의 5%' 한글 텍스트만 적혀 있어 소요량 표로 인식 못함 |
|
||||||
|
| 25 | **12-30-1** (F0380) | L6786 | **자재 소요량 및 가공품**: 신축이음부 자재 및 가공 품<br>• `개소당: 강봉 EA, 철근가공조립 ton, PVC파이프 m, 특별인부 0.1인, 보통인부 0.001인` | **직접 닿음 (금액 0원 누락)**<br>콘크리트 구조물 신축이음 일위대가 전체(자재대+가공노무비)가 0원이 됨 | 비고란에 '별도계상', '강봉수량' 등 텍스트 조건이 섞여 있고 제목 규격이 길어 reference 처리 |
|
||||||
|
| 26 | **12-30-2** (F0381) | L6798 | **자재 소요량**: 접속스라브부 자재 소요량<br>• `개소당: 원형철근 ton(별도계상), 탄성고무받침 ㎡, 스티로폴 ㎡, 타르페이퍼 ㎡` | **직접 닿음 (금액 0원 누락)**<br>교량/암거 접속슬래브 부대자재 일위대가 금액이 0원이 됨 | 재료 품목 열에 치수가 길게 적혀 있고 수량 열에 '별도계상'이 섞여 파싱 건너뜀 |
|
||||||
|
| 27 | **12-31** (F0382) | L6814 | **비율 단가**: 물끊기 홈(NOTCH) 설치비율<br>• `설치비 = 주재료비의 5%` | **직접 닿음 (금액 0원 누락)**<br>콘크리트 암거/교량 물끊기 홈 시공 단가가 0원이 되어 누락됨 | 수치 대신 '주재료비의 5%' 한글 텍스트 비율만 적혀 있어 누락 |
|
||||||
|
| 28 | **12-32** (F0383) | L6823 | **비율 단가**: 전선관 설치비율<br>• `설치비 = 주재료비의 10%` | **직접 닿음 (금액 0원 누락)**<br>암거 및 구조물 내부 전선관 매설 시공비가 0원으로 누락됨 | 수치 대신 '주재료비의 10%' 한글 텍스트 비율만 적혀 있어 누락 |
|
||||||
|
| 29 | **12-34-2** (F0386) | L6855 | **손료율 (%)**: 합판거푸집(3회) 손료율<br>• `1회 기준 재료비 46.1%, 노무비 47.1%` | **직접 닿음 (금액 대폭 누락)**<br>거푸집 1회 단가에서 3회 전용 손료율을 곱하지 못해 거푸집비가 0원이 되거나 전액(100%) 과다 계상되는 치명적 오류 발생 | 2행 표에 단위수량이 아닌 손료율 비율('1회 기준 46.1%')로 표기되어 규정으로 처리 |
|
||||||
|
| 30 | **12-34-4** (F0388) | L6877 | **자재비 적용 규정**: 신축이음 채움재 자재비 기준<br>• `JOINT FILLER T=20mm 재료비 적용 규정` | **직접 닿음 (금액 누락)**<br>신축이음 채움재 자재대가 0원으로 누락됨 | 단 1행짜리 표로 규정 안내문처럼 보여 건너뜀 |
|
||||||
|
| 31 | **12-37** (F0391) | L6905 | **노무비 소요량 (품)**: 콘크리트 인력타설 노무비 품<br>• `㎥당: 콘크리트공 0.15인, 보통인부 0.27인` | **직접 닿음 (금액 0원 누락)**<br>인력 콘크리트 타설 노무비 품이 0원이 되어 구조물 타설 인건비 전체가 증발함 | 1행에 '자재 레미콘(별도계상)'이 들어가 있어 자재 안내표로 오인되어 노무비 품이 무시됨 |
|
||||||
|
| 32 | **12-38-2** (F0393) | L6925 | **자재 소요량**: 유로폼 부속자재 사용수량<br>• `1㎡당: 패널 0.89매, 내부패널 0.03매, 부자재(웨지핀·플랫타이 등) 주자재비의 %` | **직접 닿음 (금액 0원 누락)**<br>임도 암거·옹벽 등 구조물의 핵심 가설재인 유로폼 자재비 전체가 0원이 됨 | '사용수량' 제목과 부자재 비율 설명문이 섞여 규정표로 분류 |
|
||||||
|
| 33 | **13-3** (F0406) | L7094 | **자재 소요량**: 돌망태 규격별 자재 소요량<br>• `망 규격(25~35cm)별 개수(16~33개) 및 소요중량(132~575kg)` | **직접 닿음 (금액 누락)**<br>돌망태 자재대 및 포설 중량이 누락되어 석축 뒤채움 단가가 과소 계상됨 | 표머리 '개 ㎏'가 한 셀에 뭉쳐 있고 규격별 매트릭스 형태라 소요량 표로 미인식 |
|
||||||
|
| 34 | **13-4-3** (F0408) | L7128 | **자재 소요량**: 석축 고임돌 단위 소요량<br>• `석축 높이(1~7m)별: 야면석 0.06~0.14㎥, 깬잡석 0.09~0.19㎥, 깬돌 0.10~0.18㎥` | **직접 닿음 (금액 0원 누락)**<br>석축 쌓기에서 필수적인 고임돌 자재비가 통째로 0원이 됨 | 단 1행(1 row)에 여러 석재 단위가 줄바꿈으로 압축되어 파서가 데이터 행으로 인식하지 못함 |
|
||||||
|
| 35 | **13-4-4** (F0410) | L7152 | **자재 소요량**: 찰쌓기 채움 콘크리트 소요량<br>• `찰쌓기 1㎡당: 야면석/호박돌 0.08~0.25㎥, 깬돌/견치돌 0.10~0.20㎥` | **직접 닿음 (금액 대폭 누락)**<br>찰쌓기 석축 공사비의 30% 이상을 차지하는 뒤채움 레미콘 자재대가 0원이 되어 공사비 대폭 누락 | 2행 표이며 셀 안에 '뒷길이 33.3% 〃' 등 주석이 섞여 파서가 규정으로 처리 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 왜 reference로 잘못 분류되었는가? (파서 오분류 4대 원인)
|
||||||
|
|
||||||
|
1. **머리 행(헤더) 없는 소형/단독 1행 표 (11개)**:
|
||||||
|
- `F0044`, `F0045`, `F0216`, `F0218`, `F0369`, `F0382`, `F0383`, `F0388`, `F0408` 등.
|
||||||
|
- 직종이나 자원명이 정형화된 컬럼 헤더 없이 본문 텍스트처럼 1~2행으로 압축되어 파서가 데이터 행으로 인식하지 못함.
|
||||||
|
2. **숫자가 아닌 비율(%) 한글 텍스트 표기 (6개)**:
|
||||||
|
- `재료비의 5%`, `주재료비의 10%`, `1회 기준 46.1%`, `초본 40~80%` 등.
|
||||||
|
- 파서가 실수(float) 수치만 기대하다가 한글 비율 텍스트를 만나 정규식 매칭에 실패하고 규정 텍스트로 건너뜀.
|
||||||
|
3. **제1장(총칙) 및 제2장(기계경비) 선입견 분류 (7개)**:
|
||||||
|
- 공사용수(F0041), 윈치 연료(F0044/045), 경유(F0047), 우드그래플 소모품(F0048) 등.
|
||||||
|
- 단가 총칙이나 기계 제원 안내에 위치하여 파서가 "기준/안내"로 간주함.
|
||||||
|
4. **매트릭스 축(Axis) 및 괄호 복합 단위 표기 (11개)**:
|
||||||
|
- 검척 재적표(F0194), 지상방제 약제표(F0231), 소운반 환산표(F0316 `kg(개)`), 찰쌓기 채움 콘크리트(F0410) 등.
|
||||||
|
- 셀 내부에 단위와 숫자가 뭉쳐 있거나 가로 8~10열로 넓어 일위대가 세로 폼과 달라 reference로 밀려남.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 결론 및 파서 개선 긴급 지침
|
||||||
|
|
||||||
|
- **금액 복원 긴급 조치**:
|
||||||
|
위 35개 표는 단순 참고가 아니라 일위대가의 **자재비, 노무비, 유류대, 소모품비, 할증률**을 결정하는 핵심 원가 테이블입니다.
|
||||||
|
- **파서 전환 규칙**:
|
||||||
|
- `F0393`, `F0391`, `F0325`, `F0338`, `F0380`, `F0381`, `F0406`, `F0408`, `F0410` 등 **15개는 즉시 `pum_form: requirement`로 전환**하여 자원 축에 적재해야 합니다.
|
||||||
|
- `F0369`, `F0382`, `F0383`, `F0386` 등 **비율단가 5개는 `pum_form: percentage_rate` 파이프라인을 신설**하여 주재료비 곱셈 수식을 연결해야 합니다.
|
||||||
|
- `F0044`, `F0045`, `F0047`, `F0048`, `F0063` 등 **유류·소모품 5개는 `machine_operating_cost` 엔진과 직접 연결**하여 중기운반 0원과 같은 유류비 누락 사고를 원천 방지해야 합니다.
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
# 산림사업 표준품셈 reference 표 중 실질적 원가/계산값 전수 목록
|
||||||
|
|
||||||
|
> **작성일**: 2026-09-17
|
||||||
|
> **근거 원문**: `(산림청고시 제2025-82호) 산림사업 표준품셈.md`
|
||||||
|
> **배경**: `work_item_master_2026-01-01.json`의 원문 표 458개 중 `reference`(참고·규정)로 자동 분류된 99개 표를 전수 검증한 결과, **약 40여 개 표가 실은 일위대가 자재비·노무비·단가비율·계산계수에 직접 쓰이는 실질적 값 표**임을 확인하여 이를 기술정보DB로 보존·관리함.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 개요 및 통계
|
||||||
|
|
||||||
|
| 분류 | 표 수 | 내용 및 용도 |
|
||||||
|
| :--- | :---: | :--- |
|
||||||
|
| **A. 공종 소요량 (`requirement`)** | **12개** | 유로폼 자재소요량, 찰쌓기 콘크리트량, 고임돌량, 기초다짐 등 일위대가 직접 투입량 |
|
||||||
|
| **B. 비율/요율 단가 (`percentage`)** | **5개** | PVC파이프, 물끊기홈, 전선관 등 "주재료비의 N%"로 단가를 산출하는 공종 |
|
||||||
|
| **C. 할증률 및 손료율 (`coefficient`)** | **45개** | 거푸집 손료율, 작업조건별 품 할증률(1장), 병해충 직경별 약제량, 운반량 환산계수 |
|
||||||
|
| **D. 순수 참고·서식 (`pure reference`)** | **37개** | 설계내역서 작성 양식 샘플, 묘목 규격 명칭 정의, 공사 운반 일반 지침 등 |
|
||||||
|
| **합계** | **99개** | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 실값 표 상세 목록 (A, B, C군)
|
||||||
|
|
||||||
|
### A. 공종 소요량 표 (`requirement` 전환 대상)
|
||||||
|
|
||||||
|
| 표 ID | 공종 코드 | 공종명 | 원문 위치 | 표에 담긴 실제 값의 성격 |
|
||||||
|
| :--- | :--- | :--- | :---: | :--- |
|
||||||
|
| **F0393** | `FP-12-38-02` | 유로폼 사용수량 | L6925 | 패널 `0.89매`, 내부패널 `0.03매`, 앵글 `0.02매`, 플랫타이 `0.78개`, 핀 `3.87개` 등 **유로폼 일위대가 핵심 자재량** |
|
||||||
|
| **F0391** | `FP-12-37` | 콘크리트 타설(무근진동기 제외) | L6905 | 콘크리트공 `0.15인` 명시 (노임 품) |
|
||||||
|
| **F0325** | `FP-11-01` | 콘테이너형 가설건축물 | L6026 | 규격별(2.4m~6.0m) 비계공·특별인부 조립/해체 인력 품 |
|
||||||
|
| **F0338** | `FP-12-06` | 콘크리트 포장(인력시공) | L6231 | 1일 타설량 및 포장공 `3인` 등 |
|
||||||
|
| **F0380** | `FP-12-30-01` | 신축 이음부 | L6786 | 강봉 EA 수량, 철근가공조립 ton 수량 |
|
||||||
|
| **F0381** | `FP-12-30-02` | 접속스라이부 | L6798 | 원형철근 ton, 탄성고무받침 ㎡ 수량 |
|
||||||
|
| **F0406** | `FP-13-03` | 기초다짐 및 뒷채움 | L7094 | 규격별 소요 개수 및 단위중량(kg) 소요량 |
|
||||||
|
| **F0408** | `FP-13-04-03` | 고임돌 소요량 | L7128 | 야면석, 깬잡석, 깬돌, 견치돌별 고임돌 소요량(㎥) |
|
||||||
|
| **F0410** | `FP-13-04-04` | 찰쌓기(인력) 뒷채움 | L7152 | 석재 종류별 찰쌓기 채움 콘크리트 소요량(㎥) |
|
||||||
|
| **F0411** | `FP-13-04-04` | 찰쌓기(인력) 상·하부 두께 | L7166 | 석축 높이별 상·하부 두께 기준 치수(cm) |
|
||||||
|
| **F0412** | `FP-13-04-04` | 찰쌓기(인력) 돌 뒷길이 | L7174 | 석축 높이별 메쌓기/찰쌓기 돌 뒷길이 규격(cm) |
|
||||||
|
| **F0400** | `FP-13-02-03` | 큰돌 채집 | L7006 | 큰돌 직경 규격별 소요 뒷길이 치수 기준(cm) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### B. 비율/요율 단가 표 (`percentage rate`)
|
||||||
|
|
||||||
|
| 표 ID | 공종 코드 | 공종명 | 원문 위치 | 표에 담긴 실제 값의 성격 |
|
||||||
|
| :--- | :--- | :--- | :---: | :--- |
|
||||||
|
| **F0369** | `FP-12-22` | P.V.C 파이프 설치(50mm) | L6654 | 설치비 = **재료비의 5%** 로 단가 산출 |
|
||||||
|
| **F0382** | `FP-12-31` | 물끊기 홈(NOTCH) 설치 | L6814 | 설치비 = **주재료비의 5%** 로 단가 산출 |
|
||||||
|
| **F0383** | `FP-12-32` | 전선관 설치(P.V.C ø54m/m) | L6823 | 설치비 = **주재료비의 10%** 로 단가 산출 |
|
||||||
|
| **F0386** | `FP-12-34-02` | 합판거푸집(3회 0~7m) | L6855 | 1회 기준 재료비 `46.1%`, 노무비 `47.1%` 손료율 |
|
||||||
|
| **F0388** | `FP-12-34-04` | 채움재 (JOINT FILLER) | L6877 | 신축이음 채움재 자재비 적용 규정 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### C. 할증률 및 환산계수 표 (`coefficient`)
|
||||||
|
|
||||||
|
| 표 ID | 공종 코드 | 공종명 | 원문 위치 | 표에 담긴 실제 값의 성격 |
|
||||||
|
| :--- | :--- | :--- | :---: | :--- |
|
||||||
|
| **F0010~F0012** | `FP-01-03-01` | 재료의 할증 | L878~901 | 모래(4%), 원형철근(5%), 이형철근(3%), 각재(5%), 판재(10%) 등 법정 재료할증률 |
|
||||||
|
| **F0013~F0038** | `FP-01-04-XX` | 품의 할증 (26개 표) | L930~1212 | 작업시기(10%), 조림경과(10%), 경사도(10%), 도보이동(10%), 덩굴피복도(50%), 소규모제한 등 단가 가산 계수 |
|
||||||
|
| **F0040** | `FP-01-07-01` | 거푸집 사용횟수 | L1266 | 구조물 부위별 합판거푸집 설계 적용 사용횟수 (2회~4회) |
|
||||||
|
| **F0041** | `FP-01-07-04` | 공사용수 | L1286 | 거푸집 씻기용수 `0.04㎥/㎡`, 콘크리트 타설/양생용수 `0.27㎥/㎥` |
|
||||||
|
| **F0162** | `FP-06-04-04` | 뿌리제거 덩굴피복도 | L3234 | 덩굴 피복도별(과밀~과소) 할증률(1.50~0.50) 및 본수 계수(1,600~500본/ha) |
|
||||||
|
| **F0205~F0218** | `FP-08-02-XX` | 병해충 약제주입 (5개 표) | L4014~4309 | 수간 직경(cm)당 약제 주입량 (`0.2㎖/㎝`, `0.5㎖/㎝` 등) |
|
||||||
|
| **F0231** | `FP-08-06-03` | 지상방제 약제량 | L4569 | 희석배수별(250배~1000배) ㏊당 약제 소요량 표 |
|
||||||
|
| **F0316** | `FP-10-09-01` | 1회당 표준 운반량 | L5861 | 콘크리트 블록(350kg/10.9개), 목제형틀(170kg/14㎡) 단위중량 환산표 |
|
||||||
|
| **F0358, F0360** | `FP-12-17-01` | 펌프카 타설 보정계수 | L6538~6551 | 시설유형($f_1$), 현장조건($f_2$) 타설량 보정계수 표 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 순수 참고/서식 표 (`pure reference`, 37개)
|
||||||
|
|
||||||
|
* **서식 샘플 (14개)**: `FP-14-02` 근주이식 및 조림/숲가꾸기 설계서 작성 양식 (`F0452~F0456, F0472~F0476` 등)
|
||||||
|
* **단위 표준 및 토질 정의 (4개)**: `FP-01-02-02` 단위 표준, `FP-01-02-03` 토질 분류 기준 표
|
||||||
|
* **지침 및 약어 (19개)**: `FP-10-01~03` 철근·시멘트·골재 운반 일반사항(화물차 톤수 지침), 묘목 품종별 분류 등
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 산림품셈 결측 밑수 256개 실측 셈 및 정밀 분석
|
||||||
|
|
||||||
|
`work_item_master`에서 밑수(`basis_quantity`, `basis_unit`)가 결측된 256개 표를 전수 실측 대조한 결과:
|
||||||
|
|
||||||
|
1. **원래 밑수가 없는 무차원/서식 표 (`101개`) — 결측이 아님**:
|
||||||
|
* **무차원 계수/할증률 표 (28개)**: 재료할증률(1-3), 품의 할증률(1-4 20개 표), 굴착기 파라미터(K, f, E, Cm), 펌프카 보정계수(f1, f2) 등 $\rightarrow$ 특정 작업물량 단위가 존재하지 않는 무차원 비율이므로 `basis = dimensionless`로 확정.
|
||||||
|
* **서식/안내/지침 표 (73개)**: 단위표준, 토질분류, 설계내역서 서식 등 비계산 참조 표.
|
||||||
|
2. **실제로 채워야 할 대상 (`155개`) — 256개에서 절반 넘게 감소**:
|
||||||
|
* **표 머리(Header 행/열)에 명시 (`107개`)**: 표 1~2행 칼럼별로 단위(`인/100속`, `m당`, `인/㎥` 등)가 분기되어 파서가 놓친 표. 컬럼별 단위 슬래시 뒤를 읽어 추출.
|
||||||
|
* **본문(표 윗줄 괄호/소제목)에 명시 (`48개`)**: 표 바로 윗줄 `(단위: 일당)`, `(㎥/1대, 1일)` 또는 소제목 `### 4-2-1. 100본당` 등 괄호 단위를 파서가 건너뛴 표.
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
| 트리 | 그룹 | 상태 |
|
| 트리 | 그룹 | 상태 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 01_임도/ | 01_계획노선 · 02_상세설계 · 03_계산정보 · 04_수량분석정보 · 05_원가정보 | 53문서(목록 기준, draft) |
|
| 01_임도/ | 01_계획노선 · 02_상세설계 · 03_계산정보 · 04_수량분석정보 · 05_원가정보 | 61문서(목록 기준, draft) |
|
||||||
| 02_사방댐/ | 01_대상지_타당성평가 · 02_상세설계 · 03_계산정보 · 04_수량분석정보 · 05_원가정보 | 15문서 draft (2026-08-11) |
|
| 02_사방댐/ | 01_대상지_타당성평가 · 02_상세설계 · 03_계산정보 · 04_수량분석정보 · 05_원가정보 | 15문서 draft (2026-08-11) |
|
||||||
|
|
||||||
## 01_임도/01_계획노선 — 임도망·노선계획 영역 (프로그램 반영 2027 예정, 문서 수립은 현재 진행)
|
## 01_임도/01_계획노선 — 임도망·노선계획 영역 (프로그램 반영 2027 예정, 문서 수립은 현재 진행)
|
||||||
@@ -115,6 +115,17 @@
|
|||||||
| 01_임도/05_원가정보/원가_출력변수_사전.md | 임도 내역서 **출력변수 사전**(문서 17·공종 79·기초단가·원가 14) + §F 계산 로직(입력 G → 출력 A/B/D 5단계 파이프라인) — 채택 칸 = 사용자 결정용 | 별표2·산림품셈·미결 No.17·실무 관측 집약 | draft |
|
| 01_임도/05_원가정보/원가_출력변수_사전.md | 임도 내역서 **출력변수 사전**(문서 17·공종 79·기초단가·원가 14) + §F 계산 로직(입력 G → 출력 A/B/D 5단계 파이프라인) — 채택 칸 = 사용자 결정용 | 별표2·산림품셈·미결 No.17·실무 관측 집약 | draft |
|
||||||
| 01_임도/05_원가정보/원가_입력변수_사전.md | 외부 수집 입력변수 사전 G1~G8(환율 5·유가 2·노임·자재·중기 5필드·품·제비율 11·계수) — data_cost_input_value 파일 설계 기초, 변수별 총람 연결 | 원가 문서 5건 집약 | draft |
|
| 01_임도/05_원가정보/원가_입력변수_사전.md | 외부 수집 입력변수 사전 G1~G8(환율 5·유가 2·노임·자재·중기 5필드·품·제비율 11·계수) — data_cost_input_value 파일 설계 기초, 변수별 총람 연결 | 원가 문서 5건 집약 | draft |
|
||||||
| 01_임도/05_원가정보/단수처리_규칙.md | 단수처리 위치별 3함수(내역서·제경비 ROUNDDOWN 원절사 / 집계표 ROUND 반올림 / 관급자재대 ROUNDUP 천원올림), 행별 시점, 조달수수료 산식 — 실무 5공사지 xlsx 수식 교차 추출 (값은 과거 관측, 현행 근거 대조 미완) | 실무 xlsx 수식층 관측 (2026-08-15) | draft |
|
| 01_임도/05_원가정보/단수처리_규칙.md | 단수처리 위치별 3함수(내역서·제경비 ROUNDDOWN 원절사 / 집계표 ROUND 반올림 / 관급자재대 ROUNDUP 천원올림), 행별 시점, 조달수수료 산식 — 실무 5공사지 xlsx 수식 교차 추출 (값은 과거 관측, 현행 근거 대조 미완) | 실무 xlsx 수식층 관측 (2026-08-15) | draft |
|
||||||
|
| 01_임도/05_원가정보/품셈_원문표_reference_실값목록.md | 품셈 원문 표 458개 중 reference(참고)로 분류된 99개 표 전수 검증 — 실은 일위대가·단가 산출에 쓰이는 실제 값 표(A소요량 12·B비율 5·C할증/계수 45) 및 순수참고 37 분류 목록 | 산림사업 표준품셈 2025-82호 전수실사 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/건설품셈_원문표_성격_및_밑수_분석.md | 건설품셈 원문 표 2,192개 전수 실사 — 성격 분류(req 1,206·coeff 497·ref 437·prod 52), 밑수 꼴(윗줄 1,034·표머리 446·무차원 711) 및 산림 대비 5대 구조 차이점 명세 | 건설공사 표준품셈 2026년판 전수실사 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/산림_건설_미명시7건_대응매핑.md | 산림품셈에서 구체적 절 번호 없이 건설품셈 준용을 지시한 7건 전수 실사 매핑 (확정 6건, 규격 미수록 1건 정밀 사유 및 건설 원문 라인 명시) | 산림사업 표준품셈 2025-82호 & 건설공사 표준품셈 2026 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/산림품셈_표모양_6대유형_분류.md | 산림품셈 requirement 279개 표 전수 실사 — 6대 표 모양(세로단일 93·세로혼합 133·가로직종 20·가로매트릭스 7·병렬 4·복합 22) 분류, 값 위치 및 22개 고위험 복합표 목록 | 산림사업 표준품셈 2025-82호 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/산림품셈_결측밑수_155개_자리명세.md | 산림품셈 결측 밑수 256개 실측 — 무차원 101개 제외 실채움 155개(본문 윗줄 48·표머리 헤더 107) 전수 원문 위치 및 파싱 규칙 명세서 | 산림사업 표준품셈 2025-82호 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/연결고리_건설공종_6유형_분류.md | 임도-건설 확정 연결 64개 링크(고유 건설 42개 절) 스키마 분석 — 공종 소요량 22개 절 6대 유형(세로단일 6·세로혼합 9·가로직종 3·가로매트릭스 3·복합 1) 분류, 일당시공량 작업조 나눗셈 규칙 및 산림 대비 3대 구조 차이점 명세 | 국토부 건설공사 표준품셈 2026년판 및 연결고리 마스터 실사 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/품셈_원문표_reference_실값_35개_목록.md | 산림품셈 reference(참고) 99개 표 전수 실사 — 실은 자재비·노무비·기계경비에 직접 닿는 실값 35개(직접자원 15·유류소모품 5·비율단가 5·약제 5·계수 5) 전수 명세, 누락된 금액 분석 및 4대 오분류 원인 규명 | 산림사업 표준품셈 2025-82호 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/연결고리_건설공종_밑수꼴_분석.md | 임도 연결 확정 건설 공종 42개 절 밑수 꼴 전수 실사 — 소요량 22개 절 중 본문 윗줄 19개(86.4%)·표머리 2개·소제목 1개 및 무차원 20개 분류, 작업조 일당시공량 나눗셈 및 윗줄 단독행 탐색 파서 규칙 명세 | 국토부 건설공사 표준품셈 2026년판 및 연결고리 마스터 실사 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/건설품셈_연결공종_reference_병_진단.md | 임도 연결 확정 건설 공종 42개 절 내 reference 표 전수 진단 — 산림과 동일한 '주석 내 참고 표기 자재량 누락 병' 5개 절(지수판 6-3-9 자재량·줄눈 1-6-6 날손료·암발파 3-3-6 화약량·적재량 1-2-7 7호 덤프환산·레미콘 6-1-1 가산율) 규명 및 파서 대응책 명세 | 국토부 건설공사 표준품셈 2026년판 및 연결고리 마스터 실사 (2026-09-17) | draft |
|
||||||
|
| 01_임도/05_원가정보/산림품셈_form_미판정_14개_원문대조_규명.md | 산림품셈 form 미판정(undetermined) 14개 표 전수 원문 실사 규명 — 머리 소실 9개(막갈이 등 2단헤더/1행 룩업 복원)·혼합 행렬 3개(천연림 수확/10종자재 피벗/펌프카)·공식 1개(물운반 파라미터)·글값 1개(파형강관 별산/필요시적용 플래그) 명세 | 산림사업 표준품셈 2025-82호 (2026-09-17) | verified |
|
||||||
|
|
||||||
|
|
||||||
## 02_사방댐 — 사방댐 설계자동화 기술문서
|
## 02_사방댐 — 사방댐 설계자동화 기술문서
|
||||||
|
|
||||||
|
|||||||
@@ -217,7 +217,8 @@ def test_사람이_가른_표_형태는_까닭을_달고_절_번호가_어긋나
|
|||||||
with pytest.raises(ValueError):
|
with pytest.raises(ValueError):
|
||||||
judged_form("F0413", "13-4-5")
|
judged_form("F0413", "13-4-5")
|
||||||
assert all(why for _, _, why in FORM_JUDGMENTS.values())
|
assert all(why for _, _, why in FORM_JUDGMENTS.values())
|
||||||
# 마스터에 실렸고, 파형강관 12-11-3 처럼 못 가른 표는 미판정으로 남는다
|
# 마스터에 실렸고, 형태가 제대로 갈려 있다
|
||||||
|
# (2026-09-17 파형강관 12-11-3 F0349 도 사람 판정으로 소요량형이 됨 — 산림 미판정 0)
|
||||||
path = Path("resources/data_work_item_master/work_item_master_2026-01-01.json")
|
path = Path("resources/data_work_item_master/work_item_master_2026-01-01.json")
|
||||||
tables = {
|
tables = {
|
||||||
t["pum_table_id"]: t
|
t["pum_table_id"]: t
|
||||||
@@ -226,7 +227,8 @@ def test_사람이_가른_표_형태는_까닭을_달고_절_번호가_어긋나
|
|||||||
}
|
}
|
||||||
assert tables["F0413"]["pum_form"] == "reference"
|
assert tables["F0413"]["pum_form"] == "reference"
|
||||||
assert tables["F0189"]["pum_form"] == "productivity"
|
assert tables["F0189"]["pum_form"] == "productivity"
|
||||||
assert tables["F0349"]["pum_form"] == "undetermined"
|
assert tables["F0349"]["pum_form"] == "requirement"
|
||||||
|
assert tables["F0349"]["form_basis"].startswith("사람 판정")
|
||||||
|
|
||||||
|
|
||||||
def test_인력_찰쌓기는_표준경사_표에_막히지_않는다():
|
def test_인력_찰쌓기는_표준경사_표에_막히지_않는다():
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
일할 표(작업량·소요량·형식 미정)를 가진 잎 공종인데 **제목도 사유도 없는** 것 — 표를 읽는 길이 없어
|
일할 표(작업량·소요량·형식 미정)를 가진 잎 공종인데 **제목도 사유도 없는** 것 — 표를 읽는 길이 없어
|
||||||
한 줄도 안 서고 `unattached`·`component_gaps`·밑수·[주] 사유 어디에도 안 남아, 내역서엔 「일위대가가 아직
|
한 줄도 안 서고 `unattached`·`component_gaps`·밑수·[주] 사유 어디에도 안 남아, 내역서엔 「일위대가가 아직
|
||||||
없습니다」 만 뜸(무엇을 손볼지 모름). 예: 3-1 경계표시 F0075 「0.2 | 보통인부」(값이 이름 앞) ·
|
없습니다」 만 뜸(무엇을 손볼지 모름). 예: 3-1 경계표시 F0075 「0.2 | 보통인부」(값이 이름 앞) ·
|
||||||
6-4-1 덩굴걷기 F0158 · 7-3 아키야윈치 F0174 · 10-13-1 드론운반 F0322(형식 미정).
|
6-4-1 덩굴걷기 F0158 · 7-3 아키야윈치 F0174.
|
||||||
|
(10-13-1 드론운반 F0322 는 2026-09-17 사람 판정으로 풀림.)
|
||||||
⇒ 읽는 길을 만드는 것은 뒤(예취기 한 모양 4 …) — 여기서는 **버린 표를 사유로 남김**(버릴 때는 사유).
|
⇒ 읽는 길을 만드는 것은 뒤(예취기 한 모양 4 …) — 여기서는 **버린 표를 사유로 남김**(버릴 때는 사유).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -47,7 +48,9 @@ def test_사유는_표_번호와_모양을_가리킴() -> None:
|
|||||||
("FP-03-08", "F0082"),
|
("FP-03-08", "F0082"),
|
||||||
):
|
):
|
||||||
assert table in gaps[code] and "한 줄도" in gaps[code], (code, gaps.get(code))
|
assert table in gaps[code] and "한 줄도" in gaps[code], (code, gaps.get(code))
|
||||||
assert "F0322" in gaps["FP-10-13-01"] and "형식 미정" in gaps["FP-10-13-01"]
|
# 2026-09-17 F0322 드론운반은 사람 판정으로 소요량형(묘목 1,000본당)이 됐다 —
|
||||||
|
# 「형식 미정」 사유가 사라지고, 표를 읽는 길이 열렸다.
|
||||||
|
assert "FP-10-13-01" not in gaps or "형식 미정" not in gaps["FP-10-13-01"]
|
||||||
|
|
||||||
|
|
||||||
def test_부모와_제목_선_공종에는_안_붙음() -> None:
|
def test_부모와_제목_선_공종에는_안_붙음() -> None:
|
||||||
|
|||||||
@@ -27,22 +27,32 @@ from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Keys import ( # noqa: E402
|
|||||||
assign_keys,
|
assign_keys,
|
||||||
axis_role,
|
axis_role,
|
||||||
empty_registry,
|
empty_registry,
|
||||||
|
assign_variant_keys,
|
||||||
format_key,
|
format_key,
|
||||||
general_provision_roots,
|
general_provision_roots,
|
||||||
load_policy,
|
load_policy,
|
||||||
path_names,
|
path_names,
|
||||||
toc_edition,
|
toc_edition,
|
||||||
|
variant_display,
|
||||||
|
variant_match,
|
||||||
toc_slot,
|
toc_slot,
|
||||||
)
|
)
|
||||||
|
|
||||||
MASTER = OUT_DIR / "work_item_master_2026-01-01.json"
|
MASTER = OUT_DIR / "work_item_master_2026-01-01.json"
|
||||||
|
|
||||||
#: 열쇠를 얹기 **전** 벌(`work_items`)의 지문. 2026-09-17 데스크탑_서브가 뜬 값.
|
#: 열쇠를 얹기 **전** 벌(`work_items`)의 지문. 2026-09-17 데스크탑_서브가 뜬 값.
|
||||||
#: ⚠ 이 값이 흔들리면 열쇠 작업이 값을 건드렸다는 뜻이다 — 지문을 고치지 말고 원인을 찾을 것.
|
#: ⚠ 이 값이 흔들리면 값이 움직였다는 뜻이다 — 지문을 고치지 말고 **원인을 먼저 찾을 것.**
|
||||||
|
#: 2026-09-17 두 번 갱신 — 둘 다 **더하기만**(덮어쓴 것 0 · 사라진 것 0):
|
||||||
|
#: ① 표머리 몫꼴(`인/ha`·`인/100kg`)에서 밑수 18개를 새로 읽음
|
||||||
|
#: ② 형태 미판정 14표를 사람 판정으로 가름(안티그래비티 원문 대조) · 그중 5표는 밑수도 확인
|
||||||
|
#: ⇒ 곱하면 안 되던 줄이 곱할 수 있게 된 것이지, 있던 값이 바뀐 것이 아니다.
|
||||||
#: 2026-09-17 랩탑 메인 — 목차 오기 둘을 본문 번호로 바로잡아(브레인 지시) **네 줄만** 바뀌어 새로 뜸
|
#: 2026-09-17 랩탑 메인 — 목차 오기 둘을 본문 번호로 바로잡아(브레인 지시) **네 줄만** 바뀌어 새로 뜸
|
||||||
#: (옛 f8b8fba1…). 네 줄 모습은 `test_목차_오기는_본문_번호로_바로잡고_열쇠는_그대로` 가 잼 ·
|
#: (옛 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 = "cd9a0e755249fb408c01499e980afed02a7b882b36ae7029a5bd35ab63f5c5da"
|
||||||
|
|
||||||
#: 열쇠 작업이 새로 얹은 칸. 지문을 잴 때만 떼어낸다.
|
#: 열쇠 작업이 새로 얹은 칸. 지문을 잴 때만 떼어낸다.
|
||||||
ADDED_FIELDS = (
|
ADDED_FIELDS = (
|
||||||
@@ -52,6 +62,7 @@ ADDED_FIELDS = (
|
|||||||
"toc_edition",
|
"toc_edition",
|
||||||
"path_name",
|
"path_name",
|
||||||
"axis_role",
|
"axis_role",
|
||||||
|
"variants",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -220,11 +231,15 @@ def test_총칙_범위는_코드가_아니라_자료가_정함() -> None:
|
|||||||
assert general_provision_roots("forest") == ("FP-01", "FP-02")
|
assert general_provision_roots("forest") == ("FP-01", "FP-02")
|
||||||
const = load_policy("const")
|
const = load_policy("const")
|
||||||
assert const["key_prefix"] == "CW"
|
assert const["key_prefix"] == "CW"
|
||||||
assert const["settled"] is False
|
assert const["settled"] is True # 2026-09-17 안티그래비티 조사 · 브레인 확정
|
||||||
# 건설 뿌리는 **장 파일 이름**으로 적는다 — 뽑는 코드가 목차 코드로 바꿔 준다(랩탑 메인 `file_place`).
|
# 건설 뿌리는 **장 파일 이름**으로 적는다 — 뽑는 코드가 목차 코드로 바꿔 준다(랩탑 메인 `file_place`).
|
||||||
# ⚠ 바뀐 코드에는 부문 자리가 들어간다(`CP-01-01`) — 부문마다 장 번호가 1부터 다시 시작해서다.
|
# ⚠ 바뀐 코드에는 부문 자리가 들어간다(`CP-01-01`) — 부문마다 장 번호가 1부터 다시 시작해서다.
|
||||||
assert const["general_provision_roots"] == ["01_공통부문/제1장_적용기준.md"]
|
assert const["general_provision_roots"] == [
|
||||||
assert [p["code"] for p in const["general_provision_pending"]] == ["CP-01-08", "CP-05-01"]
|
"01_공통부문/제1장_적용기준.md",
|
||||||
|
"01_공통부문/제8장_건설기계.md", # 산림 FP-02(소요재료·기계손료)와 짝
|
||||||
|
]
|
||||||
|
# 유지관리 제1장 「공 통」은 총칙이 아니라 **공종** — 미확정 목록이 비었다
|
||||||
|
assert const["general_provision_pending"] == []
|
||||||
# 뿌리를 바꿔 주면 구실도 따라 바뀐다 — 잣대가 자료에 있다는 증거
|
# 뿌리를 바꿔 주면 구실도 따라 바뀐다 — 잣대가 자료에 있다는 증거
|
||||||
assert (
|
assert (
|
||||||
axis_role({"work_item_code": "FP-09-03", "tables": []}, has_children=True, roots=("FP-09",))
|
axis_role({"work_item_code": "FP-09-03", "tables": []}, has_children=True, roots=("FP-09",))
|
||||||
@@ -238,18 +253,144 @@ def test_건설_총칙_뿌리가_실제로_붙음() -> None:
|
|||||||
(OUT_DIR / "const_work_item_master_2026-01-01.json").read_text(encoding="utf-8")
|
(OUT_DIR / "const_work_item_master_2026-01-01.json").read_text(encoding="utf-8")
|
||||||
)
|
)
|
||||||
roles = doc["stats"]["axis_roles"]
|
roles = doc["stats"]["axis_roles"]
|
||||||
assert roles["general_provision"] == 37
|
assert roles["general_provision"] == 112 # 적용기준 37 + 건설기계 75
|
||||||
assert sum(roles.values()) == len(doc["work_items"]) == 1367
|
assert sum(roles.values()) == len(doc["work_items"]) == 1367
|
||||||
under = [
|
for root, count in (("CP-01-01", 37), ("CP-01-08", 75)):
|
||||||
it
|
under = [
|
||||||
for it in doc["work_items"]
|
it
|
||||||
if it["work_item_code"] == "CP-01-01" or it["work_item_code"].startswith("CP-01-01-")
|
for it in doc["work_items"]
|
||||||
]
|
if it["work_item_code"] == root or it["work_item_code"].startswith(root + "-")
|
||||||
assert len(under) == 37
|
]
|
||||||
assert {it["axis_role"] for it in under} == {"general_provision"}
|
assert len(under) == count
|
||||||
# ⬜ 미확정 둘은 아직 공종·묶음으로 서 있다 — 안티그래비티 답이 오면 뿌리에 더한다
|
assert {it["axis_role"] for it in under} == {"general_provision"}
|
||||||
기계 = next(it for it in doc["work_items"] if it["work_item_code"] == "CP-01-08")
|
# 유지관리 제1장 「공 통」은 공종으로 남는다(총칙 아님)
|
||||||
assert 기계["axis_role"] != "general_provision"
|
공통 = next(it for it in doc["work_items"] if it["work_item_code"] == "CP-05-01")
|
||||||
|
assert 공통["axis_role"] != "general_provision"
|
||||||
|
|
||||||
|
|
||||||
|
def test_갈래에도_불변_열쇠가_있다(master: dict) -> None:
|
||||||
|
"""갈래 열쇠는 `FW-00105#01` — **글자가 아니라 번호**다(2026-09-17 브레인).
|
||||||
|
|
||||||
|
글자를 열쇠에 담으면 원문 자간·물결표가 다듬어지는 날 열쇠가 갈린다. 공종 열쇠와 같은 병이다.
|
||||||
|
"""
|
||||||
|
items = master["work_items"]
|
||||||
|
keys, pairs = [], []
|
||||||
|
for it in items:
|
||||||
|
for v in it.get("variants") or []:
|
||||||
|
assert re.fullmatch(r"\d{2}", v["variant_key"]), v
|
||||||
|
keys.append(f"{it['work_item_key']}#{v['variant_key']}")
|
||||||
|
pairs.append((v["name"], v["name_clean"]))
|
||||||
|
assert len(keys) == 332 # 갈래 수
|
||||||
|
assert len(set(keys)) == len(keys) # 겹침 0
|
||||||
|
# 한 공종 안에서 번호는 1부터 빠짐없이
|
||||||
|
for it in items:
|
||||||
|
got = [v["variant_key"] for v in it.get("variants") or []]
|
||||||
|
assert got == [f"{i + 1:02d}" for i in range(len(got))], it["work_item_key"]
|
||||||
|
# 이름 칸 둘 — 원문은 손대지 않고, 다듬은 것이 따로
|
||||||
|
raw = [it.get("variant_keys") or [] for it in items]
|
||||||
|
assert [n for it in items for n in (it.get("variant_keys") or [])] == [p[0] for p in pairs]
|
||||||
|
assert sum(1 for a, b in pairs if a != b) == 14 # 자간·물결표가 다듬어진 줄
|
||||||
|
assert raw # 원문 목록은 그대로 남아 있다
|
||||||
|
|
||||||
|
|
||||||
|
def test_갈래_열쇠는_글자가_바뀌어도_안_흔들린다() -> None:
|
||||||
|
"""맞대는 꼴이 공백·물결표를 흡수한다 — 이름 다듬기가 들어와도 번호가 그대로다."""
|
||||||
|
reg = empty_registry()
|
||||||
|
node = {
|
||||||
|
"work_item_key": "FW-00105",
|
||||||
|
"sort_order": 1,
|
||||||
|
"variant_keys": ["1.1∼1.5", "간 단"],
|
||||||
|
}
|
||||||
|
assign_variant_keys([node], reg)
|
||||||
|
before = [v["variant_key"] for v in node["variants"]]
|
||||||
|
# 원문을 다듬어도(물결표 바꿈 · 자간 정리) 같은 번호가 나와야 한다
|
||||||
|
node2 = {"work_item_key": "FW-00105", "sort_order": 1, "variant_keys": ["1.1~1.5", "간 단"]}
|
||||||
|
newly = assign_variant_keys([node2], reg)
|
||||||
|
assert [v["variant_key"] for v in node2["variants"]] == before
|
||||||
|
assert newly == [] # 새 번호를 내지 않는다
|
||||||
|
assert variant_match("간 단") == variant_match("간 단") == "간단"
|
||||||
|
assert variant_display("직경 60㎝이상 ~80㎝미만") == "직경 60㎝이상 ∼80㎝미만"
|
||||||
|
|
||||||
|
|
||||||
|
def test_갈래_문자열이_열쇠라_흔들림을_못박음(master: dict) -> None:
|
||||||
|
"""⚠ 갈래가 줄 열쇠에 그대로 들어간다(`@id` = `FW-00105#1.1∼1.5`).
|
||||||
|
|
||||||
|
품셈 원문이 물결표를 두 가지로 쓰고 자간 공백도 들쭉날쭉이라, 문자열을 손질하면 **열쇠가 갈린다.**
|
||||||
|
지금 몇 개가 그런지 못박아 둔다 — 늘면 손질이 들어간 것이고, 줄면 열쇠가 바뀐 것이다.
|
||||||
|
"""
|
||||||
|
import collections
|
||||||
|
|
||||||
|
keys = [k for it in master["work_items"] for k in (it.get("variant_keys") or [])]
|
||||||
|
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)
|
||||||
|
for k in keys:
|
||||||
|
squeezed["".join(k.split()).replace("~", "∼")].add(k)
|
||||||
|
messy = {n: v for n, v in squeezed.items() if len(v) > 1}
|
||||||
|
assert len(messy) == 6, f"공백·물결표만 다른 짝이 {len(messy)} — 6 이던 것"
|
||||||
|
|
||||||
|
|
||||||
|
def test_산림_형태_미판정이_없다(master: dict) -> None:
|
||||||
|
"""2026-09-17 안티그래비티 원문 대조로 마지막 14표를 가름 — 미판정이 0 이 됐다.
|
||||||
|
|
||||||
|
⚠ 형태가 뒤집히면 값이 20배쯤 조용히 틀린다. 미판정으로 남겨 두는 편이 안전했으나,
|
||||||
|
14표 모두 **금액 대상**이라 비워 두면 그 공종이 통째로 안 선다.
|
||||||
|
"""
|
||||||
|
from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Forms import BASIS_JUDGMENTS, judged_form
|
||||||
|
|
||||||
|
forms = [t["pum_form"] for it in master["work_items"] for t in it["tables"]]
|
||||||
|
assert "undetermined" not in forms
|
||||||
|
assert master["stats"]["form_undetermined"] == 0
|
||||||
|
# 열넷이 실제로 사람 판정으로 섰는가
|
||||||
|
가른것 = {
|
||||||
|
"F0140": "requirement", "F0141": "requirement", "F0142": "requirement",
|
||||||
|
"F0195": "productivity", "F0248": "coefficient", "F0322": "requirement",
|
||||||
|
"F0323": "requirement", "F0333": "requirement", "F0346": "requirement",
|
||||||
|
"F0169": "productivity", "F0304": "requirement", "F0356": "productivity",
|
||||||
|
"F0257": "coefficient", "F0349": "requirement",
|
||||||
|
} # fmt: skip
|
||||||
|
by_id = {t["pum_table_id"]: t for it in master["work_items"] for t in it["tables"]}
|
||||||
|
for table_id, form in 가른것.items():
|
||||||
|
assert by_id[table_id]["pum_form"] == form, table_id
|
||||||
|
assert by_id[table_id]["form_basis"].startswith("사람 판정"), table_id
|
||||||
|
# 머리가 소실돼 자동으로는 못 읽는 표의 밑수만 손으로 적는다
|
||||||
|
assert set(BASIS_JUDGMENTS) <= set(가른것)
|
||||||
|
assert by_id["F0140"]["basis_quantity"] == 100.0 and by_id["F0140"]["basis_unit"] == "㎡"
|
||||||
|
assert by_id["F0322"]["basis_quantity"] == 1000.0 and by_id["F0322"]["basis_unit"] == "본"
|
||||||
|
assert judged_form("F0140", "5-26-1")[0] == "requirement"
|
||||||
|
|
||||||
|
|
||||||
|
def test_표머리_몫꼴_밑수_읽기() -> None:
|
||||||
|
"""「당」 없이 몫으로만 적힌 표머리에서 밑수를 읽는다 — 분모가 밑수다(명세 꼴 B).
|
||||||
|
|
||||||
|
⚠ 반쪽만 읽느니 「미확보」가 낫다 — 분모가 둘이거나(`ℓ/일,대`) 표머리끼리 어긋나면 거절한다.
|
||||||
|
"""
|
||||||
|
from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Table import basis_from_header, detect_basis
|
||||||
|
|
||||||
|
assert basis_from_header("(단위 : 인/ha)") == (1.0, "ha")
|
||||||
|
assert basis_from_header("소요인력 (인/100kg)") == (100.0, "kg")
|
||||||
|
assert basis_from_header("소요인력(인/본당)") == (1.0, "본")
|
||||||
|
assert basis_from_header("재료비(1km 소요량기준)") == (1.0, "km")
|
||||||
|
assert basis_from_header("주연료 (ℓ/일,대)") == (None, None) # 분모가 둘 — 거절
|
||||||
|
assert basis_from_header("기계명(주재료)") == (None, None) # 몫이 아님
|
||||||
|
# 표머리끼리 어긋나면 표 전체를 미확보로 둔다(건설 8장 기계경비표)
|
||||||
|
표 = {"headers": ["분류번호", "주연료 (ℓ/hr)", "조종원 (인/일)"], "rows": []}
|
||||||
|
assert detect_basis(표) == (None, None)
|
||||||
|
# 하나로 모이면 읽는다
|
||||||
|
표2 = {"headers": ["구 분", "정리산물(㎥/ha)", "비고"], "rows": []}
|
||||||
|
assert detect_basis(표2) == (1.0, "ha")
|
||||||
|
|
||||||
|
|
||||||
|
def test_밑수_채움은_더하기만_함(master: dict) -> None:
|
||||||
|
"""⚠ 이미 있던 밑수를 덮지 않는다 — 덮으면 금액이 조용히 움직인다.
|
||||||
|
|
||||||
|
표 안 칸(`BASIS_RE`)이 먼저고, 표머리 몫꼴은 **그 뒤**에만 본다.
|
||||||
|
"""
|
||||||
|
from B08_Quantity.B08_Quantity_Build_WorkItemMaster_Table import detect_basis
|
||||||
|
|
||||||
|
표 = {"headers": ["(단위 : 인/ha)", "100㎡당"], "rows": []}
|
||||||
|
assert detect_basis(표) == (100.0, "㎡") # 「당」이 붙은 쪽이 이긴다
|
||||||
|
|
||||||
|
|
||||||
def test_어느_구실도_지우지_않음() -> None:
|
def test_어느_구실도_지우지_않음() -> None:
|
||||||
|
|||||||
@@ -4,8 +4,12 @@
|
|||||||
뒤 줄(「무근진동기 제외」)이 앞 표(F0363 「철근, 펌프카 0-15m」)를 물고, 진짜 표(F0364)는 orphan 으로 사라졌음.
|
뒤 줄(「무근진동기 제외」)이 앞 표(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
|
from __future__ import annotations
|
||||||
@@ -62,3 +66,35 @@ def test_사라진_표는_목록으로_남음(master: dict) -> None:
|
|||||||
master["stats"]["tables_attached"] + len(master["orphan_tables"])
|
master["stats"]["tables_attached"] + len(master["orphan_tables"])
|
||||||
== master["stats"]["tables_total"]
|
== 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 미만"})
|
||||||
|
|||||||
@@ -85,6 +85,9 @@ def test_돌쌓기_경사는_도면에도_닿는다고_알림(client: TestClient
|
|||||||
"""아홉 중 하나만 수량 말고 **그림**에도 닿음 — 화면이 사전을 가지면 문구가 두 벌(브레인)."""
|
"""아홉 중 하나만 수량 말고 **그림**에도 닿음 — 화면이 사전을 가지면 문구가 두 벌(브레인)."""
|
||||||
slope = _get(client, "masonry_slope", size=1)["notice"]
|
slope = _get(client, "masonry_slope", size=1)["notice"]
|
||||||
assert any("횡단 도면" in line for line in slope) and len(slope) == 2
|
assert any("횡단 도면" in line for line in slope) and len(slope) == 2
|
||||||
|
# ⚠ 지금 상태를 먼저 — 덮개를 읽는 곳이 Z01 밖에 0(2026-09-17 브레인 「없으면 없다고」)
|
||||||
|
assert any(line.startswith("⚠ **B06 횡단설계가 아직") for line in slope)
|
||||||
|
assert slope[0].startswith("⚠ **아직 어디에도 안 쓰임**")
|
||||||
assert all(
|
assert all(
|
||||||
not any("횡단 도면" in line for line in _get(client, kind, size=1)["notice"])
|
not any("횡단 도면" in line for line in _get(client, kind, size=1)["notice"])
|
||||||
for kind in NEW_KINDS
|
for kind in NEW_KINDS
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ def test_트리_표_id_와_이름표_표_id_는_양쪽으로_같음(client: Test
|
|||||||
label_only += [f"{entry['file_id']}::{i}" for i in sorted(label_ids - tree_ids)]
|
label_only += [f"{entry['file_id']}::{i}" for i in sorted(label_ids - tree_ids)]
|
||||||
assert not_labelled == [], not_labelled
|
assert not_labelled == [], not_labelled
|
||||||
assert label_only == [], label_only
|
assert label_only == [], label_only
|
||||||
# 2026-09-17 92 → 100 — 공종 축 산출 일곱을 이름표에 올림.
|
# 2026-09-17 92 → 100 — 공종 축 산출 일곱 + 갈래 열쇠 장부 표, 형태 미판정 표는 비어 빠짐.
|
||||||
assert sum(len(t) for t in files.values()) == LABELS["counts"]["tables"] == 100
|
assert sum(len(t) for t in files.values()) == LABELS["counts"]["tables"] == 100
|
||||||
for entry in LABELS["files"]: # 이름이 실제로 붙음 · 줄 수도 이름표 셈과 같음
|
for entry in LABELS["files"]: # 이름이 실제로 붙음 · 줄 수도 이름표 셈과 같음
|
||||||
named = {t["key"]: t for t in entry["tables"]}
|
named = {t["key"]: t for t in entry["tables"]}
|
||||||
|
|||||||
@@ -38,7 +38,9 @@ def _get(client: TestClient, kind: str, **params) -> dict:
|
|||||||
def test_산림_평평한_잎_목록과_계산_규칙(client: TestClient) -> None:
|
def test_산림_평평한_잎_목록과_계산_규칙(client: TestClient) -> None:
|
||||||
listed = client.get("/api/master-data/base-prices").json()["kinds"]
|
listed = client.get("/api/master-data/base-prices").json()["kinds"]
|
||||||
forest = next(i for i in listed if i["kind"] == "work_item_forest")
|
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 브레인 ①)
|
# 상자 이름은 이름표 것 — 영문 키(work_item)로 뜨던 자리(2026-09-17 브레인 ①)
|
||||||
assert {i["group"]: i["group_label"] for i in listed} == {
|
assert {i["group"]: i["group_label"] for i in listed} == {
|
||||||
"base_price": "기초단가",
|
"base_price": "기초단가",
|
||||||
@@ -47,12 +49,12 @@ def test_산림_평평한_잎_목록과_계산_규칙(client: TestClient) -> Non
|
|||||||
}
|
}
|
||||||
|
|
||||||
table = _get(client, "work_item_forest", size=500, axis_role="") # 「전부」 — 총칙까지
|
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"])
|
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"]
|
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 (
|
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)
|
) # 잎 이름 겹침 — 경로로 풀림 · 목차 오기 바로잡아 358 → 360(12-17-2 · 12-24-1)
|
||||||
by_code = {r["work_item_code"]: r for r in rows}
|
by_code = {r["work_item_code"]: r for r in rows}
|
||||||
assert by_code["FP-09-03-02"]["name"] == "토공 › 토사깍기 › 기계"
|
assert by_code["FP-09-03-02"]["name"] == "토공 › 토사깍기 › 기계"
|
||||||
@@ -100,7 +102,9 @@ def test_불변_열쇠가_오면_id_로_씀_자료_파일은_판_id_로_가림(
|
|||||||
"steps": [{"code": "CP-01-01", "weight": "0.5"}], "steps_basis": "시험", "variant_keys": []},
|
"steps": [{"code": "CP-01-01", "weight": "0.5"}], "steps_basis": "시험", "variant_keys": []},
|
||||||
{"work_item_code": "CP-01-01", "work_item_key": "CW-00002", "number": "1-1",
|
{"work_item_code": "CP-01-01", "work_item_key": "CW-00002", "number": "1-1",
|
||||||
"name": "인력", "parent_code": "CP-01", "tables": [{"pum_table_id": "C0001"}],
|
"name": "인력", "parent_code": "CP-01", "tables": [{"pum_table_id": "C0001"}],
|
||||||
"variant_keys": ["갑", "을"]},
|
"variant_keys": ["갑", "을"],
|
||||||
|
"variants": [{"variant_key": "01", "name": "갑", "name_clean": "갑"},
|
||||||
|
{"variant_key": "02", "name": "을", "name_clean": "을"}]},
|
||||||
],
|
],
|
||||||
} # fmt: skip
|
} # fmt: skip
|
||||||
(folder / "const_work_item_master_2026-01-01.json").write_text(
|
(folder / "const_work_item_master_2026-01-01.json").write_text(
|
||||||
@@ -109,7 +113,8 @@ def test_불변_열쇠가_오면_id_로_씀_자료_파일은_판_id_로_가림(
|
|||||||
monkeypatch.setattr(work_items, "FOLDER", folder)
|
monkeypatch.setattr(work_items, "FOLDER", folder)
|
||||||
|
|
||||||
table = _get(client, "work_item_const")
|
table = _get(client, "work_item_const")
|
||||||
assert [r["@id"] for r in table["rows"]] == ["CW-00002#갑", "CW-00002#을"] # 갈래마다 한 줄
|
# 갈래마다 한 줄 · 열쇠는 **글자가 아니라 번호**(2026-09-17 브레인 — 장부가 준다)
|
||||||
|
assert [r["@id"] for r in table["rows"]] == ["CW-00002#01", "CW-00002#02"]
|
||||||
assert {r["@key"] for r in table["rows"]} == {"CW-00002"}
|
assert {r["@key"] for r in table["rows"]} == {"CW-00002"}
|
||||||
assert table["rows"][0]["work_item_code"] == "CP-01-01" # 목차 코드는 칸으로 남음
|
assert table["rows"][0]["work_item_code"] == "CP-01-01" # 목차 코드는 칸으로 남음
|
||||||
assert table["rows"][0]["name"] == "토공 › 인력"
|
assert table["rows"][0]["name"] == "토공 › 인력"
|
||||||
@@ -118,7 +123,7 @@ def test_불변_열쇠가_오면_id_로_씀_자료_파일은_판_id_로_가림(
|
|||||||
assert _get(client, "work_item_forest")["total"] == 0 # 산림 파일은 이 폴더에 없음
|
assert _get(client, "work_item_forest")["total"] == 0 # 산림 파일은 이 폴더에 없음
|
||||||
|
|
||||||
res = client.put(
|
res = client.put(
|
||||||
"/api/master-data/base-prices/work_item_const/CW-00002%23갑",
|
"/api/master-data/base-prices/work_item_const/CW-00002%2301",
|
||||||
json={"values": {"name": "바꿈"}},
|
json={"values": {"name": "바꿈"}},
|
||||||
)
|
)
|
||||||
assert res.status_code == 400 and "공종 축 뼈대" in res.json()["detail"]
|
assert res.status_code == 400 and "공종 축 뼈대" in res.json()["detail"]
|
||||||
@@ -141,9 +146,11 @@ def test_거르기는_자료에_있는_가름만_서버가_판정(client: TestCl
|
|||||||
"유지관리부문",
|
"유지관리부문",
|
||||||
]
|
]
|
||||||
assert sum(o["rows"] for o in division["options"][1:]) == const["total"]
|
assert sum(o["rows"] for o in division["options"][1:]) == const["total"]
|
||||||
|
# 2026-09-17 목록에서는 「총칙」이 아니라 **공종이 아님**을 드러내는 이름(잣대 `list_label`).
|
||||||
assert {o["value"]: o["label"] for o in by_key["axis_role"]["options"]}[
|
assert {o["value"]: o["label"] for o in by_key["axis_role"]["options"]}[
|
||||||
"general_provision"
|
"general_provision"
|
||||||
] == "총칙"
|
] == "공종 아님 · 규정·기준"
|
||||||
|
assert by_key["axis_role"]["default"] == "work_item" # 감춘 것이지 지운 것이 아님
|
||||||
|
|
||||||
civil = _get(client, "work_item_const", size=500, division="토목부문", axis_role="")
|
civil = _get(client, "work_item_const", size=500, division="토목부문", axis_role="")
|
||||||
assert civil["total"] == next(
|
assert civil["total"] == next(
|
||||||
@@ -154,8 +161,13 @@ def test_거르기는_자료에_있는_가름만_서버가_판정(client: TestCl
|
|||||||
client, "work_item_const", size=500, division="공통부문", axis_role="general_provision"
|
client, "work_item_const", size=500, division="공통부문", axis_role="general_provision"
|
||||||
)
|
)
|
||||||
assert rules["total"] > 0
|
assert rules["total"] > 0
|
||||||
assert all(r["name"].startswith("공통부문 › 적용기준") for r in rules["rows"])
|
# 2026-09-17 건설 총칙 뿌리가 둘 — 적용기준(37) + 건설기계(75 · 산림 FP-02 와 짝)
|
||||||
assert {r["axis_role"] for r in rules["rows"]} == {"총칙"} # 표시 칸 — 감추지 않고 보임
|
assert all(
|
||||||
|
r["name"].startswith(("공통부문 › 적용기준", "공통부문 › 건설기계")) for r in rules["rows"]
|
||||||
|
)
|
||||||
|
role_names = {o["value"]: o["label"] for o in by_key["axis_role"]["options"]}
|
||||||
|
# 표시 칸 — 이름은 잣대(`list_label` · 「공종 아님 · 규정·기준」) 한 곳
|
||||||
|
assert {r["axis_role"] for r in rules["rows"]} == {role_names["general_provision"]}
|
||||||
|
|
||||||
assert [f["key"] for f in _get(client, "work_item_forest", size=1)["filters"]] == [
|
assert [f["key"] for f in _get(client, "work_item_forest", size=1)["filters"]] == [
|
||||||
"link",
|
"link",
|
||||||
@@ -208,7 +220,9 @@ def test_갈래마다_한_줄이라_편_하나를_집는다(client: TestClient)
|
|||||||
"1.0 이하", "1.1∼1.5", "1.6∼2.0", "2.1∼2.5", "2.6∼3.0",
|
"1.0 이하", "1.1∼1.5", "1.6∼2.0", "2.1∼2.5", "2.6∼3.0",
|
||||||
"3.1∼3.5", "3.6∼4.0", "4.1∼4.5", "4.6∼5.0",
|
"3.1∼3.5", "3.6∼4.0", "4.1∼4.5", "4.6∼5.0",
|
||||||
] # fmt: skip
|
] # fmt: skip
|
||||||
assert rows[1]["@id"] == "FW-00105#1.1∼1.5" and rows[1]["@key"] == "FW-00105"
|
# 열쇠에 갈래 **글자**를 담지 않는다 — 원문 물결표·자간이 다듬어지면 열쇠가 갈린다(브레인).
|
||||||
|
assert rows[1]["@id"] == "FW-00105#02" and rows[1]["@key"] == "FW-00105"
|
||||||
|
assert rows[1]["variant"] == "1.1∼1.5" # 글자는 보일 이름 칸으로
|
||||||
# 갈래 없는 공종은 한 줄 · 열쇠에 # 없음
|
# 갈래 없는 공종은 한 줄 · 열쇠에 # 없음
|
||||||
plain = _get(client, "work_item_forest", q="교목굴취(근원직경)")["rows"]
|
plain = _get(client, "work_item_forest", q="교목굴취(근원직경)")["rows"]
|
||||||
assert [(r["@id"], r["variant"]) for r in plain] == [("FW-00106", None)]
|
assert [(r["@id"], r["variant"]) for r in plain] == [("FW-00106", None)]
|
||||||
|
|||||||
Reference in New Issue
Block a user