From bd167e52752d320a7beea97b3c96c914474442b1 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 19 Sep 2026 03:30:42 +0900 Subject: [PATCH 1/5] =?UTF-8?q?knowledge(=ED=92=88=EC=85=88md):=20?= =?UTF-8?q?=EB=8F=84=EA=B5=AC=20=E2=80=94=20=EB=B0=94=ED=83=95(pum=5Fmd=5F?= =?UTF-8?q?base.py)=20=EB=96=BC=EC=96=B4=20=EB=83=84=20=C2=B7=20=EC=9E=90?= =?UTF-8?q?=EA=B0=84=20=EB=B2=8C=EB=A6=B0=20=EC=88=98=20=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=20=EC=85=88=20=C2=B7=20=E3=80=8C=EC=9E=90=EA=B0=84=20=EB=B2=8C?= =?UTF-8?q?=EB=A6=B0=20=EC=88=98=E3=80=8D=20=EC=A3=BC=EC=84=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pum_md_tool.py 가 700줄을 넘어(707) 책 설정·쪽 줄 읽기·머리 찾기를 pum_md_base.py 로 옮김 (pum_md_tool 이 다시 내보냄) - read_rows: 한 자리 수끼리 틈이 글자 높이보다 좁으면 이어 셈(「체 감 온 도 3 3 도」→33) · 표 칸 틈(1.2 이상)은 그대로 - md 주석 에 적힌 글자열만 PDF 쪽에서 붙여 셈 · 기계검사 칸 「자간 벌린 수 N곳」 · PDF 에 없거나 공백 뗀 것이 아니면 불통 (브레인 지시) - 작성된 md 218개 판정 고치기 전후 같음(작업 중이던 건설 1-02 만 달라짐) - 작성규칙 6장 한 줄 - test_산림_산출도_그대로_금액_불변 하나만 skip 표시(옛 사슬 동결 · 원천 벌 json 줄바꿈 지문 · 단가 연결 때 되살림 — 브레인 지시) Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj --- .../original/_pipeline/pum_md_base.py | 178 ++++++++++++++++++ .../original/_pipeline/pum_md_tool.py | 173 +++++------------ .../original/원가계산/_품셈md_작성규칙.md | 1 + resources/tester/test_pum_md_tool.py | 43 +++++ .../tester/test_work_item_master_const.py | 1 + 5 files changed, 270 insertions(+), 126 deletions(-) create mode 100644 resources/knowledge/original/_pipeline/pum_md_base.py diff --git a/resources/knowledge/original/_pipeline/pum_md_base.py b/resources/knowledge/original/_pipeline/pum_md_base.py new file mode 100644 index 00000000..34cbeebe --- /dev/null +++ b/resources/knowledge/original/_pipeline/pum_md_base.py @@ -0,0 +1,178 @@ +# -*- coding: utf-8 -*- +"""품셈 md 도구의 바탕 — 책 설정 · 머리 칸 · 쪽 줄 읽기 · 머리 찾기. + +`pum_md_tool.py` 가 다시 내보냄. + +700줄 제한으로 `pum_md_tool.py` 에서 떼어 냄(2026-09-19). +""" + +from __future__ import annotations + +import re +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[4] # 저장소 뿌리 +sys.path.insert(0, str(ROOT)) + +from resources.tester.test_const_pdf_coverage import ( # noqa: E402,F401 + _NUM, + _ROW_TOLERANCE, + _page_rows, +) + +COST = ROOT / "resources/knowledge/original/원가계산" + +#: 책마다 — PDF · 차례 쪽(PDF 쪽 번호) · 인쇄 1쪽이 놓인 PDF 쪽 · 머리 「문서」 칸 · 새 md 뿌리 · +#: 차례 모양(block = 번호·이름·쪽이 줄마다 · inline = 한 줄에) · 절 머리 번호 뒤 마침표 · 쪽 꼬리(맨 아래 줄) +BOOKS = { + "산림": { + "pdf": COST / "산림_표준품셈/첨부/(산림청고시 제2025-82호) 산림사업 표준품셈.pdf", + "toc": (3, 12), + "first_body": 13, + "doc": "산림사업 표준품셈(산림청고시 제2025-82호)", + "out": COST / "산림_표준품셈/본문", + "toc_layout": "block", + "dot": True, + "footer": re.compile(r"^-\s*\d+\s*-$"), # 「- 123 -」 + }, + "건설": { + "pdf": COST / "건설공사_표준품셈/2026년_건설공사_표준품셈.pdf", + "toc": (3, 51), + "first_body": 57, + "doc": "2026 건설공사 표준품셈", + "out": COST / "건설공사_표준품셈/본문", + "toc_layout": "inline", + "dot": False, # 「1-5 기타」 + "footer": re.compile( + r"^\d+\s+\S+부문$|^제\s*\d+\s*장.*\s\d+$" + ), # 「30 공통부문」·「제1장 적용기준 31」 + }, +} + +HEAD_KEYS = ( + "문서", + "절", + "PDF쪽", + "인쇄쪽", + "시작표지", + "끝표지", + "상태", + "작성", + "검증", + "원천", + "기계검사", + "확정지문", +) +STATES = ("대기", "작성중", "검증대기", "확정") + + +#: 가운뎃점 여러 벌 — 차례는 「보수․복구」(U+2024) · 본문은 「보수·복구」(U+00B7). 맞대기에서만 같게 봄. +_DOTS = str.maketrans({"․": "·", "ㆍ": "·", "・": "·", "‧": "·"}) + + +def key(text: str) -> str: + """표지 맞대기 — 공백·대괄호를 떼고 번호 뒤 점을 뗌(`9-5. 발파암` = `9-5 발파암`).""" + tight = re.sub(r"[\s\[\]]", "", text).translate(_DOTS) + return re.sub(r"^(\d+(?:-\d+)*)\.", r"\1", tight) + + +def locate(doc, marker: str, first_pdf: int, slack: int = 3) -> tuple[int, int]: + """표지가 줄 맨 앞에 놓인 (PDF 쪽, 그 쪽 안 줄 차례) — first_pdf 부터 slack 쪽 안에서 찾음.""" + want = key(marker) + for number in range(first_pdf, min(first_pdf + slack, doc.page_count) + 1): + for index, row in enumerate(_page_rows(doc[number - 1])): + if key(row).startswith(want): + return number, index + raise ValueError(f"표지를 못 찾음: {marker} (PDF {first_pdf}~{first_pdf + slack})") + + +def heading_pattern(ident: str, dot: bool = True) -> re.Pattern: + """본문 머리 줄 — **번호로** 찾음. 차례 이름에 오타가 있어서(「면벅」=면벽 · 「조림」=조립 …).""" + if ident.startswith("제"): + return re.compile(r"^제\s*" + ident[1:-1] + r"\s*장(?!\d)") + if ident.startswith("부록"): + return re.compile(r"^\[?부록\s*" + ident[2:] + r"\]?(?!\d)") # 「[부록 1]」 + return re.compile(r"^" + re.escape(ident) + (r"\." if dot else "") + r"(?![\d-])") + + +#: 글자 사이 빈칸으로 볼 틈(글자 크기 대비) — 본문 머리 실측: 빈칸 7.7pt · 붙은 글자 0.7pt(14pt 글꼴) +_GAP = 0.25 + + +def visual_text(page, row: str) -> str: + """쪽 그림대로 띄운 줄 — 글자층은 빈칸을 잃어서(「설계및수량」) 글자 사이 틈으로 되살림.""" + want = re.sub(r"\s", "", row) + for block in page.get_text("rawdict")["blocks"]: + for line in block.get("lines", []): + chars = [c for span in line["spans"] for c in span["chars"]] + if re.sub(r"\s", "", "".join(c["c"] for c in chars)) != want: + continue + size = max(span["size"] for span in line["spans"]) + out = "" + for prev, ch in zip([None, *chars], chars): + gap = ch["bbox"][0] - prev["bbox"][2] if prev else 0 + if prev and not prev["c"].isspace() and gap > size * _GAP: + out += " " + out += ch["c"] + return " ".join(out.split()) + return row + + +def find_heading( + doc, ident: str, first_pdf: int, slack: int = 3, dot: bool = True +) -> tuple[int, int, str]: + """(PDF 쪽, 쪽 안 줄 차례, 머리 글자) — 머리 글자는 PDF 그대로(번호 뒤 마침표 포함) · 띄어쓰기는 쪽 그림대로.""" + pattern = heading_pattern(ident, dot) + for number in range(first_pdf, min(first_pdf + slack, doc.page_count) + 1): + for index, row in enumerate(_page_rows(doc[number - 1])): + if pattern.match(row.strip()): + title = visual_text(doc[number - 1], row.strip()) + cut = pattern.match(title).end() + lead, name = title[:cut].strip(), title[cut:].strip() + return number, index, f"{lead} {join_spaced(name)}".strip() + raise ValueError(f"머리를 못 찾음: {ident} (PDF {first_pdf}~{first_pdf + slack})") + + +def join_spaced(name: str) -> str: + """자간을 벌려 찍은 이름은 붙임(「측 량」 → 「측량」 · 규칙 3장) — 이름 전체가 한 글자씩일 때만.""" + parts = name.split(" ") + if len(parts) > 1 and all(len(p) == 1 and "가" <= p <= "힣" for p in parts): + return "".join(parts) + return name + + +#: 자간을 벌려 한 자리씩 찍은 수(「1 0 %」 · 「ø 1 6 × 7 5 0」)로 볼 틈 — 글자 높이 대비. +#: 건설 실측: 벌린 수 0.2~0.7 · 표 칸 사이 1.2 이상(「인 1 1 1 2 2」). +#: 1.2~1.4 는 가를 수 없어 안 이음(「S T S 3 0 4」 — md 가 글자층대로 띄워 적음). +_DIGIT_GAP = 1.0 + + +def read_rows(page) -> list[str]: + """`_page_rows` 와 같은 줄 — 다만 자간을 벌린 한 자리 수는 이어 붙임. + + ① 수 대조가 「10」 을 「1」「0」 으로 세지 않게. + """ + words = sorted(page.get_text("words"), key=lambda w: (round(w[1] / _ROW_TOLERANCE), w[0])) + grouped: list[list] = [] + current: list = [] + top: float | None = None + for word in words: + if top is None or abs(word[1] - top) <= _ROW_TOLERANCE: + current.append(word) + top = word[1] if top is None else top + else: + grouped.append(current) + current, top = [word], word[1] + if current: + grouped.append(current) + out = [] + for row in grouped: + row.sort(key=lambda w: w[0]) + text = row[0][4] + for prev, word in zip(row, row[1:]): + digits = len(prev[4]) == len(word[4]) == 1 and prev[4].isdigit() and word[4].isdigit() + tight = digits and word[0] - prev[2] < (prev[3] - prev[1]) * _DIGIT_GAP + text += ("" if tight else " ") + word[4] + out.append(text) + return out diff --git a/resources/knowledge/original/_pipeline/pum_md_tool.py b/resources/knowledge/original/_pipeline/pum_md_tool.py index 42b5d5f3..42f72b74 100644 --- a/resources/knowledge/original/_pipeline/pum_md_tool.py +++ b/resources/knowledge/original/_pipeline/pum_md_tool.py @@ -23,55 +23,23 @@ import unicodedata from dataclasses import dataclass from pathlib import Path -ROOT = Path(__file__).resolve().parents[4] # 저장소 뿌리 -sys.path.insert(0, str(ROOT)) - -from resources.tester.test_const_pdf_coverage import _NUM, _page_rows # noqa: E402 - -COST = ROOT / "resources/knowledge/original/원가계산" - -#: 책마다 — PDF · 차례 쪽(PDF 쪽 번호) · 인쇄 1쪽이 놓인 PDF 쪽 · 머리 「문서」 칸 · 새 md 뿌리 · -#: 차례 모양(block = 번호·이름·쪽이 줄마다 · inline = 한 줄에) · 절 머리 번호 뒤 마침표 · 쪽 꼬리(맨 아래 줄) -BOOKS = { - "산림": { - "pdf": COST / "산림_표준품셈/첨부/(산림청고시 제2025-82호) 산림사업 표준품셈.pdf", - "toc": (3, 12), - "first_body": 13, - "doc": "산림사업 표준품셈(산림청고시 제2025-82호)", - "out": COST / "산림_표준품셈/본문", - "toc_layout": "block", - "dot": True, - "footer": re.compile(r"^-\s*\d+\s*-$"), # 「- 123 -」 - }, - "건설": { - "pdf": COST / "건설공사_표준품셈/2026년_건설공사_표준품셈.pdf", - "toc": (3, 51), - "first_body": 57, - "doc": "2026 건설공사 표준품셈", - "out": COST / "건설공사_표준품셈/본문", - "toc_layout": "inline", - "dot": False, # 「1-5 기타」 - "footer": re.compile( - r"^\d+\s+\S+부문$|^제\s*\d+\s*장.*\s\d+$" - ), # 「30 공통부문」·「제1장 적용기준 31」 - }, -} - -HEAD_KEYS = ( - "문서", - "절", - "PDF쪽", - "인쇄쪽", - "시작표지", - "끝표지", - "상태", - "작성", - "검증", - "원천", - "기계검사", - "확정지문", +from pum_md_base import ( # noqa: E402,F401 — 바탕(책 설정·줄 읽기·머리 찾기)은 pum_md_base.py + _NUM, + BOOKS, + COST, + HEAD_KEYS, + ROOT, + STATES, + _page_rows, + find_heading, + heading_pattern, + join_spaced, + key, + locate, + read_rows, + visual_text, ) -STATES = ("대기", "작성중", "검증대기", "확정") + _TOC_SKIP = {"장", "내 용", "페이지", "- 목 차 -"} _TOC_ID = re.compile(r"제\d+장|\d+-\d+(?:-\d+)*|부록\d*") _BAD_NAME = re.compile(r'[/:*?"<>|\\]') @@ -144,81 +112,6 @@ def parse_toc_inline(raw: list[str]) -> list[Entry]: return out -#: 가운뎃점 여러 벌 — 차례는 「보수․복구」(U+2024) · 본문은 「보수·복구」(U+00B7). 맞대기에서만 같게 봄. -_DOTS = str.maketrans({"․": "·", "ㆍ": "·", "・": "·", "‧": "·"}) - - -def key(text: str) -> str: - """표지 맞대기 — 공백·대괄호를 떼고 번호 뒤 점을 뗌(`9-5. 발파암` = `9-5 발파암`).""" - tight = re.sub(r"[\s\[\]]", "", text).translate(_DOTS) - return re.sub(r"^(\d+(?:-\d+)*)\.", r"\1", tight) - - -def locate(doc, marker: str, first_pdf: int, slack: int = 3) -> tuple[int, int]: - """표지가 줄 맨 앞에 놓인 (PDF 쪽, 그 쪽 안 줄 차례) — first_pdf 부터 slack 쪽 안에서 찾음.""" - want = key(marker) - for number in range(first_pdf, min(first_pdf + slack, doc.page_count) + 1): - for index, row in enumerate(_page_rows(doc[number - 1])): - if key(row).startswith(want): - return number, index - raise ValueError(f"표지를 못 찾음: {marker} (PDF {first_pdf}~{first_pdf + slack})") - - -def heading_pattern(ident: str, dot: bool = True) -> re.Pattern: - """본문 머리 줄 — **번호로** 찾음. 차례 이름에 오타가 있어서(「면벅」=면벽 · 「조림」=조립 …).""" - if ident.startswith("제"): - return re.compile(r"^제\s*" + ident[1:-1] + r"\s*장(?!\d)") - if ident.startswith("부록"): - return re.compile(r"^\[?부록\s*" + ident[2:] + r"\]?(?!\d)") # 「[부록 1]」 - return re.compile(r"^" + re.escape(ident) + (r"\." if dot else "") + r"(?![\d-])") - - -#: 글자 사이 빈칸으로 볼 틈(글자 크기 대비) — 본문 머리 실측: 빈칸 7.7pt · 붙은 글자 0.7pt(14pt 글꼴) -_GAP = 0.25 - - -def visual_text(page, row: str) -> str: - """쪽 그림대로 띄운 줄 — 글자층은 빈칸을 잃어서(「설계및수량」) 글자 사이 틈으로 되살림.""" - want = re.sub(r"\s", "", row) - for block in page.get_text("rawdict")["blocks"]: - for line in block.get("lines", []): - chars = [c for span in line["spans"] for c in span["chars"]] - if re.sub(r"\s", "", "".join(c["c"] for c in chars)) != want: - continue - size = max(span["size"] for span in line["spans"]) - out = "" - for prev, ch in zip([None, *chars], chars): - gap = ch["bbox"][0] - prev["bbox"][2] if prev else 0 - if prev and not prev["c"].isspace() and gap > size * _GAP: - out += " " - out += ch["c"] - return " ".join(out.split()) - return row - - -def find_heading( - doc, ident: str, first_pdf: int, slack: int = 3, dot: bool = True -) -> tuple[int, int, str]: - """(PDF 쪽, 쪽 안 줄 차례, 머리 글자) — 머리 글자는 PDF 그대로(번호 뒤 마침표 포함) · 띄어쓰기는 쪽 그림대로.""" - pattern = heading_pattern(ident, dot) - for number in range(first_pdf, min(first_pdf + slack, doc.page_count) + 1): - for index, row in enumerate(_page_rows(doc[number - 1])): - if pattern.match(row.strip()): - title = visual_text(doc[number - 1], row.strip()) - cut = pattern.match(title).end() - lead, name = title[:cut].strip(), title[cut:].strip() - return number, index, f"{lead} {join_spaced(name)}".strip() - raise ValueError(f"머리를 못 찾음: {ident} (PDF {first_pdf}~{first_pdf + slack})") - - -def join_spaced(name: str) -> str: - """자간을 벌려 찍은 이름은 붙임(「측 량」 → 「측량」 · 규칙 3장) — 이름 전체가 한 글자씩일 때만.""" - parts = name.split(" ") - if len(parts) > 1 and all(len(p) == 1 and "가" <= p <= "힣" for p in parts): - return "".join(parts) - return name - - def name_of(ident: str, title: str, dot: bool = True) -> str: """머리 글자에서 번호를 뗀 이름(「9-5. 발파암」 → 「발파암」).""" return title[heading_pattern(ident, dot).match(title).end() :].strip() @@ -491,7 +384,7 @@ def pdf_lines(doc, head: dict[str, str], footer: re.Pattern) -> list[tuple[int, pass out = [] for number in range(start_page, min(end_page, last) + 1): - rows = [row.strip() for row in _page_rows(doc[number - 1])] + rows = [row.strip() for row in read_rows(doc[number - 1])] if rows and footer.match(rows[-1]): rows[-1] = "" # 쪽 꼬리 for index, row in enumerate(rows): @@ -580,6 +473,26 @@ def compare(pdf: list[tuple[int, str]], md: list[tuple[int, str]]) -> dict: } +#: 자간 벌린 수 — md 주석 `` (규칙 3-13). +#: 짐작으로 붙이지 않고 **적힌 글자열만** PDF 쪽에서 붙여 셈 · 오른쪽은 왼쪽에서 공백만 뺀 것이어야 함. +_SPACED = re.compile(r"", re.S) +_SPACED_PAIR = re.compile(r"「([^」]+)」\s*→\s*「([^」]+)」") + + +def join_spaced_numbers(pdf: list[tuple[int, str]], body: str): + """(PDF 줄, 붙인 곳 수, 못 쓴 글자열) — md 주석에 적힌 자간 벌린 수만 PDF 줄에서 붙임.""" + joined, bad = 0, [] + for block in _SPACED.findall(body): + for spaced, tight in _SPACED_PAIR.findall(block): + hits = sum(line.count(spaced) for _, line in pdf) + if not hits or re.sub(r"\s", "", spaced) != tight: + bad.append(spaced) + continue + pdf = [(at, line.replace(spaced, tight)) for at, line in pdf] + joined += hits + return pdf, joined, bad + + def verdict(result: dict) -> str: counts = ( sum(v for v, _ in result["num_missing"].values()), @@ -587,7 +500,8 @@ def verdict(result: dict) -> str: sum(result["char_missing"].values()), sum(result["char_extra"].values()), ) - word = "통과" if not any(counts) else "불통" + joined, bad = result.get("spaced", (0, [])) + word = "통과" if not any(counts) and not bad else "불통" line = ( f"{word} · ①수 결손 {counts[0]} 허구 {counts[1]} · ②글자 빠짐 {counts[2]} 더함 {counts[3]}" ) @@ -595,6 +509,10 @@ def verdict(result: dict) -> str: if glyphs or result.get("off_md"): # ③ 이 그림으로 그 식을 꼭 보게 where = f"({', '.join(map(str, pages))}쪽)" if pages else "" line += f" · 글자층 밖 글리프 {glyphs}개{where} · 받아씀 {result.get('off_md', 0)}자" + if joined: # ③ 이 그림으로 그 수를 꼭 보게 + line += f" · 자간 벌린 수 {joined}곳" + if bad: + line += " · 자간 벌린 수 못 씀 " + " ".join(f"「{s}」" for s in bad) return line @@ -618,7 +536,10 @@ def check_file(path: Path) -> tuple[dict, str]: _, body = split_head(path.read_text(encoding="utf-8").replace("\r\n", "\n")) book = book_of(path) with pymupdf.open(book["pdf"]) as doc: - result = compare(pdf_lines(doc, read_head(path), book["footer"]), md_lines(body)) + pdf = pdf_lines(doc, read_head(path), book["footer"]) + pdf, joined, bad = join_spaced_numbers(pdf, body) + result = compare(pdf, md_lines(body)) + result["spaced"] = (joined, bad) return result, verdict(result) diff --git a/resources/knowledge/original/원가계산/_품셈md_작성규칙.md b/resources/knowledge/original/원가계산/_품셈md_작성규칙.md index 7c11aa41..23ce3dcc 100644 --- a/resources/knowledge/original/원가계산/_품셈md_작성규칙.md +++ b/resources/knowledge/original/원가계산/_품셈md_작성규칙.md @@ -86,6 +86,7 @@ PDF쪽: 135~136 - ①② 대조에서 빼는 것 — PDF 쪽: 쪽 맨 아래 꼬리(「- 51 -」 · 「30 공통부문」 · 「제1장 적용기준 31」) · 쪽 끝 이어짐 표지 「→」 / md 쪽: 머리 · `` · 그림 링크 · 표 문법(`|` · 구분 줄 · `
`) · 제목 `#` · 인용 `>` · 첨자 표시 `^` `_` (막음표 `\` 뒤 글자는 원문으로 셈). - 글자층 밖 — PDF 글자층의 사용자 영역 글리프(U+E000–F8FF · 식의 「(m³)」·분수선)는 ①② 에서 빼고 기계검사 칸에 「글자층 밖 글리프 N개(쪽)」로 적음. 그 자리를 그림 보고 받아쓴 md 글자는 `(m^3)` 로 감쌈(①② 에서 빠지고 「받아씀 N자」로 드러남) — **이 칸이 뜬 파일은 ③ 이 그림으로 그 식을 꼭 봄.** 사용자 영역 글리프 자리 말고는 감싸지 않음. - 호환 한자(U+F900–FAFF · 率 U+F9DB)는 ② 에서 통합 한자(率 U+7387)와 같게 봄. 다른 글자(㎥·①·㎡ 등)는 그대로 견줌. +- 자간을 벌려 한 자리씩 찍은 수(「체 감 온 도 3 3 도」)는 도구가 이어 셈(틈 < 글자 높이). 틈이 넓어 표 칸과 가를 수 없는 것(「S T S 3 0 4」 · 「1 . 3」)은 md 에 붙여 쓰고 `` 주석 — 도구가 PDF 쪽의 그 글자열만 붙여 셈(PDF 에 있고 공백만 뺀 것일 때만 · 기계검사 칸 「자간 벌린 수 N곳」 → ③ 이 그림으로 봄 · 못 쓰면 불통). - ①②가 0 이어도 칸이 뒤바뀐 것은 못 잡음 → ③ 없이는 `확정` 아님. - ③에서 고칠 곳이 나오면 검증 창이 고치지 않고 **작성 창에 돌려보냄**(줄 번호 + PDF 쪽 + 무엇이 다른지). - `확정` 뒤 파일이 바뀌면 시험이 빨강. 고치려면 상태를 `작성중` 으로 되돌리고 ①②③ 다시. diff --git a/resources/tester/test_pum_md_tool.py b/resources/tester/test_pum_md_tool.py index 2cbbc60a..9266dadc 100644 --- a/resources/tester/test_pum_md_tool.py +++ b/resources/tester/test_pum_md_tool.py @@ -183,3 +183,46 @@ def test_off_layer_glyphs_and_compat_han(): # 감싸지 않으면 받아쓴 글자가 더함으로 뜸 bare = tool.compare(pdf, tool.md_lines("체적 V (m^3) = 1.5\n공극率 ㎥ ①")) assert tool.verdict(bare).startswith("불통") + + +def test_read_rows_joins_letter_spaced_digits_only(): + """자간을 벌린 한 자리 수(틈 < 글자 높이)만 이음 · 표 칸 사이 넓은 틈은 그대로 · 한 줄 묶기는 `_page_rows` 와 같음.""" + + class Page: + def __init__(self, words): + self.words = words + + def get_text(self, kind): + return self.words + + words = [ + (0, 0, 5, 10, "1"), # 「1 0 %」 — 틈 1pt(높이 10pt) + (6, 0, 11, 10, "0"), + (12, 0, 17, 10, "%"), + (40, 0, 45, 10, "2"), # 표 칸 — 틈 12pt + (57, 0, 62, 10, "2"), + (0, 20, 5, 30, "3"), # 다음 줄 + ] + assert tool.read_rows(Page(words)) == ["10 % 2 2", "3"] + assert tool.read_rows(Page(words)) != tool._page_rows(Page(words)) + assert len(tool.read_rows(Page(words))) == len(tool._page_rows(Page(words))) + + +def test_spaced_numbers_marker_joins_only_listed_strings(): + """md 주석 「자간 벌린 수」 에 적힌 글자열만 PDF 쪽에서 붙여 셈 · 없거나 공백 뗀 것이 아니면 불통.""" + pdf = [(395, "굴착기 ( 1 . 3 ㎥/ m i n ) 0 . 7 ㎥"), (395, "칸 1 3 따로")] + body = "굴착기(1.3㎥/min) 0.7㎥\n칸 1 3 따로\n" + joined, count, bad = tool.join_spaced_numbers(pdf, body) + assert count == 2 and not bad + assert joined[1] == (395, "칸 1 3 따로") # 적히지 않은 곳은 그대로 + result = tool.compare(joined, tool.md_lines(body)) + result["spaced"] = (count, bad) + line = tool.verdict(result) + assert line.startswith("통과") and "자간 벌린 수 2곳" in line, line + # PDF 에 없는 글자열 · 공백만 뗀 것이 아닌 짝은 못 씀 → 불통 + _, _, bad = tool.join_spaced_numbers( + pdf, "" + ) + assert bad == ["9 . 9", "1 . 3"] + result["spaced"] = (0, bad) + assert tool.verdict(result).startswith("불통") diff --git a/resources/tester/test_work_item_master_const.py b/resources/tester/test_work_item_master_const.py index 6cf7f0e3..95857357 100644 --- a/resources/tester/test_work_item_master_const.py +++ b/resources/tester/test_work_item_master_const.py @@ -135,6 +135,7 @@ def test_산출_파일이_지금_코드로_뽑은_것(built: tuple, master: dict _same_except_time(built[0], master) +@pytest.mark.skip(reason="품셈 md 확정 단계 — 옛 사슬 동결 · 원천 벌 json 줄바꿈 지문 · 단가 연결 때 되살림") def test_산림_산출도_그대로_금액_불변() -> None: """표 읽기를 떼어내고(`_Table`) 건설과 나눠 써도 산림 산출은 한 글자도 안 바뀜.""" saved = json.loads((OUT / "work_item_master_2026-01-01.json").read_text(encoding="utf-8")) From 3e54ac0e4c967917c698b3bc786fc28fc817b7b6 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 19 Sep 2026 03:30:52 +0900 Subject: [PATCH 2/5] =?UTF-8?q?knowledge(=ED=92=88=EC=85=88md):=20?= =?UTF-8?q?=EA=B1=B4=EC=84=A4=20=EA=B3=B5=ED=86=B5=20=EC=A0=9C1=EC=9E=A5?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9=EA=B8=B0=EC=A4=80=20=EC=9E=91=EC=84=B1=20?= =?UTF-8?q?(=EC=9E=A5=EB=A8=B8=EB=A6=AC=C2=B71-1~1-5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 1-02 그림 2개(pic/1-02_1·2) · 그림 속 글자는 글자층 밖으로 감싸 적음 · 식 두 줄의 분수 글리프도 받아씀 - 1-02 「STS 3 0 4」「STS 4 3 0」은 「자간 벌린 수」 주석으로 셈 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj --- .../제01장_적용기준/0-00_장머리.md | 8 +- .../제01장_적용기준/1-01_일반사항.md | 27 +- .../제01장_적용기준/1-02_설계_및_수량.md | 657 +++++++++++++++++- .../1-03_재료_및_노임의_할증.md | 173 ++++- .../제01장_적용기준/1-04_품의_할증.md | 298 +++++++- .../01_공통부문/제01장_적용기준/1-05_기타.md | 101 ++- .../제01장_적용기준/pic/1-02_1.png | Bin 0 -> 36802 bytes .../제01장_적용기준/pic/1-02_2.png | Bin 0 -> 23629 bytes 8 files changed, 1246 insertions(+), 18 deletions(-) create mode 100644 resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/pic/1-02_1.png create mode 100644 resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/pic/1-02_2.png diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/0-00_장머리.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/0-00_장머리.md index 973f7c32..7d871676 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/0-00_장머리.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/0-00_장머리.md @@ -5,10 +5,12 @@ PDF쪽: 59 인쇄쪽: 3 시작표지: 제1장 적용기준 끝표지: 1-1 일반사항 -상태: 대기 -작성: +상태: 검증대기 +작성: sub_laptop_1 검증: 원천: 글자층 -기계검사: +기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 확정지문: --- + +# 제1장 적용기준 diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-01_일반사항.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-01_일반사항.md index b6fa9cf4..8523cbc7 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-01_일반사항.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-01_일반사항.md @@ -5,10 +5,31 @@ PDF쪽: 59 인쇄쪽: 3 시작표지: 1-1 일반사항 끝표지: 1-2 설계 및 수량 -상태: 대기 -작성: +상태: 검증대기 +작성: sub_laptop_1 검증: 원천: 글자층 -기계검사: +기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 확정지문: --- + +## 1-1 일반사항 + +### 1-1-1 목적 + +정부 등 공공기관에서 시행하는 건설공사의 적정한 예정가격을 산정하기 위한 일반적인 기준을 제공하는 데 있다. + +### 1-1-2 적용범위('12년 보완) + +국가, 지방자치단체, 공기업・준정부기관, 기타공공기관 및 위 기관의 감독과 승인을 요하는 기관에서는 본 표준품셈을 건설공사 예정가격 산정의 기초로 활용한다. + +### 1-1-3 적용방법('05, '08, '09, '12, '14년, '23년 보완) + +1\. 공사의 예정가격 산정은 본 표준품셈을 활용한다. +2\. 본 표준품셈에서 제시된 품은 일일 작업시간 8시간을 기준한 것이다. +3\. 본 표준품셈은 건설공사 중 대표적이고 보편적이며 일반화된 공종, 공법을 기준한 것이며 현장여건, 기후의 특성 및 조건에 따라 조정하여 적용하되, 예정가격작성기준 제2조에 의거 부당하게 감액하거나 과잉 계산되지 않도록 한다. +4\. 본 표준품셈에 명시되지 않는 사항은 각종 사업을 시행하는 국가기관, 지방자치단체, 공기업・준정부기관, 기타공공기관 등의 장의 책임 하에 적정한 예정가격 산정 기준을 적의 결정하여 사용한다. +5\. 건설공사의 예정가격 산정 시 공사규모, 공사기간 및 현장조건 등을 감안하여 가장 합리적인 공법을 채택 적용한다. +6\. 본 표준품셈에 명시되지 않은 품으로서 타부문(전기, 통신, 문화재 등)의 표준품셈에 명시된 품은 그 부분의 품을 적용하고, 타부문과 유사한 공종의 품은 본 표준품셈을 우선하여 적용한다. +7\. 소방법, 총포・도검・화약류 등 단속법, 산업안전보건법, 산업재해보상보험법, 건설기술 진흥법, 대기환경 보건법, 소음・진동규제법 등 관계법령이나 계약 조건에 따라 소요되는 비용은 별도로 계상한다. +8\. 각 발주기관에서 4항에 의하여 별도로 결정하여 적용한 품셈이 표준품셈 보완에 반영할 필요가 있다고 인정될 경우에는 그 자료를 표준품셈 관리단체(한국건설기술연구원)에 제출한다. diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-02_설계_및_수량.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-02_설계_및_수량.md index a2a99caf..7bc784b7 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-02_설계_및_수량.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-02_설계_및_수량.md @@ -5,10 +5,661 @@ PDF쪽: 59~75 인쇄쪽: 3~19 시작표지: 1-2 설계 및 수량 끝표지: 1-3 재료 및 노임의 할증 -상태: 대기 -작성: +상태: 검증대기 +작성: sub_laptop_1 검증: 원천: 글자층 -기계검사: +기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 · 글자층 밖 글리프 21개(64, 71, 72쪽) · 받아씀 120자 · 자간 벌린 수 2곳 확정지문: --- + +## 1-2 설계 및 수량 + +### 1-2-1 수량의 계산('05, '23년 보완) + +1\. 수량의 단위 및 소수자리는 표준품셈 단위표준에 의한다. +2\. 수량의 계산은 지정 소수자리 아래 1자리까지 산출하여 반올림 한다. +3\. 계산에 쓰이는 분도(分度)는 분까지, 원둘레율(圓周率), 삼각함수(三角函數) 및 호도(弧度)의 유효숫자는 3자리(3位)로 한다. +4\. 곱하거나 나눗셈에 있어서는 기재된 순서에 따라 계산한다. +5\. 면적 및 체적의 계산은 측량 결과 또는 설계도서를 바탕으로 수학적 공식에 의해 산출함을 원칙으로 한다. +6\. 다음에 열거하는 것의 체적과 면적은 구조물의 수량에서 공제하지 아니한다. +가. 콘크리트 구조물 중의 말뚝머리 +나. 볼트의 구멍 +다. 모따기 또는 물구멍(水切) +라. 이음줄눈의 간격 +마. 포장공종의 1개소당 0.1㎡ 이하의 구조물 자리 +바. 강(鋼)구조물의 리벳 구멍 +사. 철근 콘크리트 중의 철근 +아. 기타 전항에 준하는 것 +7\. 성토 및 사석공의 준공토량은 성토 및 사석공 설계도의 양으로 한다. 그러나 지반침하량은 지반성질에 따라 가산할 수 있다. +8\. 절토(切土)량은 자연상태의 설계도의 양으로 한다. + +### 1-2-2 단위표준('12, '23년 보완) + +1\. 설계서의 단위 및 소수의 표준 + +| 종목 | 규격 | | 단위수량 | | 비고 | +|---|---|---|---|---|---| +| | 단위 | 소수자리 | 단위 | 소수자리 | | +| 공사연장 | m | 2 | m | - | | +| 공사폭원 | - | - | m | 1 | | +| 직공인부 | - | - | 인 | 2 | | +| 공사면적 | - | - | ㎡ | 1 | | +| 용지면적 | - | - | ㎡ | - | | +| 토적(높이, 너비) | - | - | m | 2 | | +| 토적(단면적) | - | - | ㎡ | 1 | | +| 토적(체적) | - | - | ㎥ | 2 | | +| 토적(체적합계) | - | - | ㎥ | - | | +| 떼 | ㎝ | - | ㎡ | 1 | | +| 모래, 자갈 | ㎝ | - | ㎥ | 2 | | +| 조약돌 | ㎝ | - | ㎥ | 2 | | +| 견치돌, 깬돌 | ㎝ | - | ㎡ | 1 | | +| 견치돌, 깬돌 | ㎝ | - | 개 | - | | +| 야면석(野面石) | ㎝ | - | 개 | - | | +| 야면석(야面石) | ㎝ | - | ㎥ | 1 | | +| 야면석(野面石) | ㎝ | - | ㎡ | 1 | | +| 돌쌓기 및 돌붙임 | ㎝ | - | ㎥ | 1 | | + +| 돌쌓기 및 돌붙임 | ㎝ | - | ㎡ | 1 | | +| 사석(捨石) | ㎝ | - | ㎥ | 1 | | +| 다듬돌(切石, 板石) | ㎝ | - | 개 | 2 | | +| 벽돌 | ㎜ | - | 개 | - | | +| 블록 | ㎜ | - | 개 | - | | +| 시멘트 | - | - | ㎏ | - | | +| 모르타르 | - | - | ㎥ | 2 | | +| 콘크리트 | - | - | ㎥ | 2 | | +| 석분 | - | - | ㎏ | - | | +| 석회 | - | - | ㎏ | - | | +| 화산회 | - | - | ㎏ | - | | +| 아스팔트 | - | - | ㎏ | - | | +| 목재(판재) | 길이m | 1 | ㎡ | 2 | | +| 목재(판재) | 폭,두께 | 1 | ㎥ | 3 | | +| 목재(판재) | ㎝ | 1 | ㎥ | 3 | | +| 합판 | ㎜ | - | 장 | 1 | | +| 말뚝 | 길이m | 1 | 개 | - | | +| | 지름㎜ | - | | | | +| 철강재 | ㎜ | - | ㎏ | 3 | 총량표시는 ton으로 한다. | +| 용접봉 | ㎜ | - | ㎏ | 1 | | +| 구리판, 함석류 | - | - | ㎡ | 2 | | +| 철근 | ㎜ | - | ㎏ | - | | +| 볼트, 너트 | ㎜ | - | 개 | - | | +| 꺽쇠 | ㎜ | - | 개 | - | | +| 철선류 | ㎜ | 1 | ㎏ | 2 | | +| PC강선 | - | - | ㎏ | 2 | | +| 돌망태 | 길이m | 1 위 | m | 1 | 망눈(網目)㎝ | +| | 지름m | - | 개 | - | | +| | 높이m | - | | | | +| 로프류 | ㎜ | - | m | 1 | | +| 못 | 길이㎝ | 1 | ㎏ | 2 | | +| 석유, 휘발유, 모빌유 | - | - | ℓ | 2 | | +| 구리스 | - | - | ㎏ | 2 | | +| 넝마 | - | - | ㎏ | 2 | | +| 화약류 | - | - | ㎏ | 3 | | +| 뇌관 | - | - | 개 | - | | +| 도화선 | - | - | m | 1 | | +| 석탄, 목탄, 코크스 | - | - | ㎏ | 1 | | +| 산소 | - | - | ℓ | - | | +| 카바이트 | - | - | ㎏ | 1 | | + +| 도료(塗料) | - | - | ℓ또는㎏ | 2 | | +| 도장(塗裝) | - | - | ㎡ | 1 | | +| 관류(管類) | 길이m | 2 | 개 | - | | +| | 지름㎜ | - | | | | +| | 두께㎜ | - | | | | +| 수로연장 | - | - | m | 1 | | +| 옹벽 | - | - | ㎡ | 1 | | +| 승강장옹벽 및 울타리 | - | - | m | 1 | | +| 궤도부설 | - | - | ㎞ | 3 | | +| 시험하중 | - | - | ton | - | | +| 보오링(試錐) | - | - | m | 1 | | +| 방수면적 | - | - | ㎡ | 1 | | +| 건물(면적) | - | - | ㎡ | 2 | | +| 건물(지붕, 벽붙이기) | - | - | ㎡ | 1 | | +| 우물 | 깊이 | - | m | 1 | | +| 마대 | - | - | 매 | - | | + + + +[주] +① 설계서 수량의 단위와 소수자리 표시는 본 표에 따르며, 반올림하여 적용한다. +② 품셈 각 항목에서 제시한 소수자리가 본 표의 내용과 상이할 경우 항목에서 제시하는 소수자리를 우선하여 적용한다. +③ 본 표에 제시하지 않은 품의 경우 유사 품의 규격과 단위수량을 참고하여 적용하며, C.G.S 단위로 하는 것을 원칙으로 한다. + +2\. 금액의 단위표준 + +| 종목 | 단위 | 자리 | 비고 | +|---|---|---|---| +| 설계서의 총액 | 원 | 1,000 | 미만버림 | +| 설계서의 소계 | 원 | 1 | 미만버림 | +| 설계서의 금액란 | 원 | 1 | 미만버림 | +| 일위대가표의 계금 | 원 | 1 | 미만버림 | +| 일위대가표의 금액란 | 원 | 0.1 | 미만버림 | + + +[주] +일위대가표 금액란 또는 기초계산금액에서 소액이 산출되어 공종이 없어질 우려가 있어 소수자리 1자리 이하의 산출이 불가피할 경우에는 소수자리의 정도를 조정 계산한다. + +### 1-2-3 토질('99, '14, '23년 보완) + +1\. 지반설계 +지하지반은 토질조사시험에 따라 설계하는 것을 원칙으로 한다. 다만, 공사량이 소규모인 경우에는 지형 또는 표면상태에 의하여 추정설계 할 수 있다. + +2\. 토질 및 암의 분류 +가. 보통토사 : 보통 상태의 실트 및 점토 모래질 흙 및 이들의 혼합물로서 삽이나 괭이를 사용할 정도의 토질(삽작업을 하기 위하여 상체를 약간 구부릴 정도) +나. 경질토사 : 견고한 모래질 흙이나 점토로서 괭이나 곡괭이를 사용할 정도의 토질(체중을 이용하여 2∼3회 동작을 요할 정도) +다. 고사 점토 및 자갈섞인 토사 : 자갈질 흙 또는 견고한 실트, 점토 및 이들의 혼합물로서 곡괭이를 사용하여 파낼 수 있는 단단한 토질 +라. 호박돌 섞인 토사 : 호박돌 크기의 돌이 섞이고 굴착에 약간의 화약을 사용해야 할 정도로 단단한 토질 +마. 풍화암 : 일부는 곡괭이를 사용할 수 있으나 암질(岩質)이 부식되고 균열이 1∼10㎝로서 굴착 또는 절취에는 약간의 화약을 사용해야할 암질 +바. 연암 : 혈암, 사암 등으로서 균열이 10∼30㎝ 정도로서 굴착 또는 절취에는 화약을 사용해야 하나 석축용으로는 부적합한 암질 +사. 보통암 : 풍화상태는 엿볼 수 없으나 굴착 또는 절취에는 화약을 사용해야 하며 균열이 30∼50㎝정도의 암질 +아. 경암 : 화강암, 안산암 등으로서 굴착 또는 절취에 화약을 사용해야 하며 균열상태가 1m이내로서 석축용으로 쓸 수 있는 암질 +자. 극경암 : 암질이 아주 밀착된 단단한 암질 + +[주] +표준 품셈에 표시되는 돌재료의 분류는 다음을 기준으로 한다. +① 모암(母岩) : 석산에 자연상태로 있는 암을 모암이라 한다. +② 원석(原石) : 모암에서 1차 파쇄된 암석을 원석이라 한다. +③ 건설공사용 석재 : 석재의 품질은 그 용도에 적합한 강도를 갖고 균열이나 결점이 없고 질이 좋은 치밀한 것이며 풍화나 동결의 해를 받지 않는 것이라야 한다. +④ 다듬돌(切石) : 각석(角石) 또는 주석(柱石)과 같이 일정한 규격으로 다듬어 진 것으로서 건축이나 또는 포장 등에 쓰이는 돌 +⑤ 막다듬돌(荒切石) : 다듬돌을 만들기 위하여 다듬돌의 규격 치수의 가공에 필요한 여분의 치수를 가진 돌 +⑥ 견치돌(間知石) : 형상은 재두각추체(栽頭角錐體)에 가깝고 전면은 거의 평면을 이루며 대략 정사각형으로서 뒷길이(控長), 접촉면의 폭(合端), 뒷면(後面) 등이 규격화 된 돌로서 4방락(四方落) 또는 2방락(二方落)의 것이 있으며 접촉면의 폭은 전면 1변의 길이의 1/10이상이라야 하고 접촉면의 길이는 1변의 평균 길이의 1/2이상인 돌 + +![4방락견치돌 · 2방락견치돌](pic/1-02_1.png) +뒷면 · 전면 · 뒷길이 · 4방락견치돌(四方落間知石) · 2방락견치돌(二方落間知石) + + +⑦ 깬돌(割石) : 견치돌에 준한 재두방추형(栽頭方錐形)으로서 견치돌보다 치수가 불규칙하고 일반적으로 뒷면(後面)이 없는 돌로서 접촉면의 폭(合端)과 길이는 각각 전면의 일변의 평균길이의 약 1/20과 1/3이 되는 돌 +⑧ 깬 잡석(雜割石) : 모암에서 일차 폭파한 원석을 깬 돌로서, 깬돌(割石)보다도 형상이 고르지 못한 돌로서 전면의 변의 평균 길이는 뒷길이의 약 2/3되는 돌 +⑨ 사석(捨石) : 막 깬돌 중에서 유수에 견딜 수 있는 중량을 가진 큰 돌 +⑩ 잡석(雜石) : 크기가 지름 10∼30㎝ 정도의 것이 크고 작은 알로 고루고루 섞여져 있으며 형상이 고르지 못한 큰 돌 +⑪ 전석(轉石) : 1개의 크기가 0.5㎥ 내・외의 정형화 되지 않은 석괴 +⑫ 야면석(野面石) : 천연석으로 표면을 가공하지 않은 것으로서 운반이 가능하고 공사용으로 사용될 수 있는 비교적 큰 석괴 +⑬ 호박돌(玉石) : 호박형의 천연석으로서 가공하지 않은 지름 18㎝이상의 크기의 돌 +⑭ 조약돌(栗石) : 가공하지 않은 천연석으로서 지름 10∼20㎝ 정도의 계란형의 돌 +⑮ 부순돌(碎石) : 잡석을 지름 0.5∼10㎝ 정도의 자갈 크기로 작게 깬 돌 +⑯ 굵은 자갈(大砂利) : 가공하지 않은 천연석으로서 지름 7.5∼20㎝ 정도의 돌 +⑰ 자갈(砂利) : 천연석으로서 자갈보다 알이 작고 지름 0.5∼7.5㎝정도의 둥근 돌 +⑱ 역(磁) : 천연석이 굵은 자갈과 작은 자갈이 고루고루 섞어져 있는 상태의 돌 + +⑲ 굵은 모래(祖砂) : 천연산으로서 지름 0.25∼2㎜ 정도의 알맹이의 돌 + +⑳ 잔모래(細砂) : 천연산으로서 지름 0.05∼0.25㎜ 정도의 알맹이의 돌 + 돌가루(石紛) : 돌을 바수어 가루로 만든 것 + + 고로슬래그 부순돌 : 제철소의 선철(銑鐵) 제조 과정에서 생산되는 고로슬래그를 0∼40㎜로 파쇄 가공한 돌 + +3\. 체적환산계수 +가. 토공에 있어 토질 시험하여 적용하는 것을 원칙으로 하나 소량의 토량인 경우에는 표준품셈의 체적환산계수표에 따를 수도 있다. +나. 체적의 변화 + +| L= | 흐트러진 상태의 체적(㎥) | C= | 다져진 상태의 체적(㎥) | +|---|---|---|---| +| | 자연상태의 체적(㎥) | | 자연상태의 체적(㎥) | + + +다. 체적의 변화율 + +| 종별 | L | C | +|---|---|---| +| 경암(硬岩) | 1.70∼2.00 | 1.30∼1.50 | +| 보통암(普通硬岩) | 1.55∼1.70 | 1.20∼1.40 | +| 연암(軟岩) | 1.30∼1.50 | 1.00∼1.30 | +| 풍화암(風化岩) | 1.30∼1.35 | 1.00∼1.15 | +| 폐콘크리트 | 1.40∼1.60 | 별도 설계 | +| 호박돌(玉石) | 1.10∼1.15 | 0.95∼1.05 | +| 역(礫) | 1.10∼1.20 | 1.05∼1.10 | +| 역질토(礫質土) | 1.15∼1.20 | 0.90∼1.00 | +| 고결(固結)된 역질토(礫質土) | 1.25∼1.45 | 1.10∼1.30 | +| 모래(砂) | 1.10∼1.20 | 0.85∼0.95 | +| 암괴(岩塊)나 호박돌이 섞인 모래 | 1.15∼1.20 | 0.90∼1.00 | +| 모래질흙 | 1.20∼1.30 | 0.85∼0.90 | +| 암괴(岩塊)나 호박돌이 섞인 모래질흙 | 1.40∼1.45 | 0.90∼0.95 | + +| 점질토 | 1.25∼1.35 | 0.85∼0.95 | +| 역(礫)이 섞인 점질토(粘質土) | 1.35∼1.40 | 0.90∼1.00 | +| 암괴(岩塊)나 호박돌이 섞인 점질토 | 1.40∼1.45 | 0.90∼0.95 | +| 점토(粘土) | 1.20∼1.45 | 0.85∼0.95 | +| 역이 섞인 점토 | 1.30∼1.40 | 0.90∼0.95 | +| 암괴(岩塊)나 호박돌이 섞인 점토 | 1.40∼1.45 | 0.90∼0.95 | + + +[주] +암(경암・보통암・연암)을 토사와 혼합성토할 때는 공극채움으로 인한 토사량을 계상할 수 있다. + +라. 체적환산계수(f)표 + +| 구하는 Q | 자연상태의
체적 | 흐트러진상태의
체적 | 다져진후의
체적 | +|---|---|---|---| +| 기준이 되는 q | | | | +| 자연상태의 체적 | 1 | L | C | +| 흐트러진상태의 체적 | 1/L | 1 | C/L | + + +4\. 토취장 및 골재원 +가. 토취장 및 골재원(석산, 콘크리트 및 포장용 재료, 기타)을 필요로 하는 공사에는 설계서에 그 위치를 명시할 수 있다. +나. 토취장 및 골재원은 품질과 경제성(수량, 거리, 채집방법, 거래가격 등) 및 관련 법적규제 등을 고려하여 설계한다. +다. 모암을 발파하여 깬돌 등 규격품을 채취할 경우 규격품으로 사용할 수 없는 파쇄된 돌의 발생량은 10∼40%를 표준으로 하며, 이때 파쇄된 돌의 유용이 가능하여 유용할 경우 이에 따른 경비는 별도 계상하고, 그 발생량에 대해서는 무대(無代)로 한다. +마. 잡석을 부순 돌(碎石)로 사용하려 할 때에는 채집비를 계상할 수 있다. + +바. 원석대와 채취장 및 기타 보상비는 실정에 따라 별도 계상할 수 있다. +사. 국유지인 경우에는 필요한 조치를 취하여 사용토록 한다. +아. 토취장 및 골재원은 사용 후 정리하여 사방을 하거나 조경을 하여야 하며 정리비, 사방비 및 조경비는 별도 계상한다. + +5\. 오픈케이슨 기초 +우물통 기초굴착시 굴착토량은 외토 침입률을 감안하여 산정한다. + +### 1-2-4 재료 및 자재의 단가('05, '06, '14, '12, '22, '23년 보완) + +1\. 주요자재 +가. 공사에 대한 주요자재의 관급은 “국가를당사자로하는계약에관한법률시행규칙” 및 기획재정부 회계예규 등 관계규정이나 계약조건에 따른다. +나. 자재구입은 필요에 따라 시방서를 작성하고 그 물건의 기능, 특징, 용량, 제작방법, 성능, 시험방법, 부속품 등에 관하여 명시하여야 한다. +다. 국내에서 생산되는 자재를 우선적으로 사용함을 원칙으로 하고 그 중에서도 한국산업규격표시품(KS), 우수재활용제품(GR) 또는 건설기술진흥법 제60조제1항의 규정에 의한 국・공립시험기관의 시험결과 한국산업규격표시품과 동등 이상의 성능이 있다고 확인된 자재를 우선한다. +라. 한국산업규격에 없는 제품 사용시 공사조건에 맞는 관련규격 및 시방(외국규격 등) 등을 검토하여 사용토록 한다. + +2\. 재료 및 자재의 단가 +가. 건설재료 및 자재의 단가는 거래실례가격 또는 통계법 제15조의 규정에 의한 지정기관이 조사하여 공표한 가격, 감정가격, 유사한 거래실례가격, 견적가격을 기준하며, 적용순서는 국가를 당사자로 하는 계약에 관한 법률 시행규칙 제7조의 규정에 따른다. +나. 재료 및 자재단가에 운반비가 포함되어 있지 않은 경우 구입 장소로부터 현장까지의 운반비를 계상한다. +다. 품셈의 각 항목에 명시되어 있지 않는 재료 및 자재는 설계수량을 적용하고, 잡재료 및 소모재료는 ‘[공통부문] 1-2-4/7. 잡재료 및 소모재료’ 등을 따른다. + +3\. 재료의 단위 중량 +재료의 단위중량은 입경, 습윤도 등에 따라 달라지므로 시험에 의하여 결정하여야 하며, 일반적인 추정 단위중량은 다음과 같다. + +| 종별 | 형상 | 단위중량(㎏/㎥) | 비고 | +|---|---|---|---| +| 암석 | 화강암 | 2,600∼2,700 | 자연상태 | +| | 안산암 | 2,300∼2,710 | 〃 | +| | 사암 | 2,400∼2,790 | 〃 | +| | 현무암 | 2,700∼3,200 | 〃 | +| 자갈 | 건조 | 1,600∼1,800 | 〃 | +| | 습기 | 1,700∼1,800 | 〃 | +| | 포화 | 1,800∼1,900 | 〃 | +| 모래 | 건조 | 1,500∼1,700 | 〃 | +| | 습기 | 1,700∼1,800 | 〃 | +| | 포화 | 1,800∼2,000 | 〃 | +| 점토 | 건조 | 1,200∼1,700 | 〃 | +| | 습기 | 1,700∼1,800 | 〃 | +| | 포화 | 1,800∼1,900 | 〃 | +| 점질토 | 보통의 것 | 1,500∼1,700 | 〃 | +| | 력이 섞인 것 | 1,600∼1,800 | 〃 | +| | 력이 섞이고 습한 것 | 1,900∼2,100 | 〃 | +| 모래질흙 | | 1,700∼1,900 | 〃 | +| 자갈섞인토사 | | 1,700∼2,000 | 〃 | +| 자갈섞인모래 | | 1,900∼2,100 | 〃 | +| 호박돌 | | 1,800∼2,000 | 〃 | +| 사석 | | 2,000 | 〃 | +| 조약돌 | | 1,700 | 〃 | + +| 주철 | | 7,250 | | +| 강, 주강, 단철 | | 7,850 | | +| 스테인리스 | STS 304 | 7,930 | KSD3695 | +| | STS 430 | 7,700 | ('93 신설) | +| 연철 | | 7,800 | | +| 놋쇠 | | 8,400 | | +| 구리 | | 8,900 | | +| 납(鉛) | | 11,400 | | +| 목재 | 생송재(生松材) | 800 | | +| 소나무 | 건재(乾材) | 580 | | +| 소나무(적송) | 건재 | 590 | | +| 미송 | 〃 | 420∼700 | | +| 시멘트 | | 3,150 | | +| 시멘트 | | 1,500 | 자연상태 | +| 철근콘크리트 | | 2,400 | | +| 콘크리트 | | 2,300 | | +| 시멘트모르타르 | | 2,100 | | +| 역청포장 | | 2,350 | '01 보완 | +| 역청재(방수용) | | 1,100 | | +| 물 | | 1,000 | | +| 해수 | | 1,030 | | +| 눈 | 분말상(粉末狀) | 160 | | +| 눈 | 동결(凍結) | 480 | | +| 눈 | 수분포화(水分飽和) | 800 | | +| 고로슬래그부순돌 | | 1,650∼1,850 | 자연상태 | + + + +[주] +① 부순돌 및 조약돌 등은 모암의 암질(巖質)을 고려하여 결정한다. +② 본 표에 없는 품종에 대하여는 단위중량 시험에 의해 결정함을 원칙으로 하며, 필요시 (재료량이 소규모인 경우 등) 문헌에 의한 결과를 참고한다. + +4\. 재료시험 결과 이용 +설계는 재료시험에 의하여 제원을 결정함을 원칙으로 한다. + +5\. 발생재의 처리 +사용고재 등 발생재의 처리는 다음 표에 의하여 그 대금을 설계 당시 미리 공제한다. + +| 품명 | 공제율 | +|---|---| +| 사용고재(시멘트공대 및 공드람 제외) | 90% | +| 강재스크랩(Scrap) | 70% | +| 기타발생재 | 발생량 | + + +[주] +① 공제금액 계산 : 발생량×공제율×고재단가 +② 기존시설물의 철거, 해체, 이설 등으로 인한 발생재는 ‘예정가격 작성기준 제17조’를 따른다. + +6\. 강관배관의 부자재 산정요율 +가. 일반업무용 건물 + +(강관금액에 대한 %) + +| 항목 | 관이음부속 | | | 관지지물 | | | +|---|---|---|---|---|---|---| +| 건물규모별
시공부위별 | 소 | 중 | 대 | 소 | 중 | 대 | +| 가. 냉온수배관 | | | | | | | +| - 기계실 | 75 | 70 | 65 | 30 | 15 | 15 | +| - 옥내일반 | 45 | 45 | 45 | 40 | 25 | 25 | +| 나. 냉각수배관 | | | | | | | +| - 기계실 | 75 | 75 | 75 | 7 | 7 | 7 | +| - 옥내일반 | 70 | 55 | 40 | 9 | 9 | 9 | +| 다. 증기배관 | | | | | | | +| - 기계실 | 75 | 65 | 50 | 30 | 30 | 30 | +| - 옥내일반 | 45 | 45 | 45 | 30 | 30 | 30 | +| 라. 급수・급탕배관 | | | | | | | +| - 기계실 | 80 | 80 | 80 | 15 | 15 | 15 | +| - 옥내일반 | 60 | 60 | 60 | 15 | 15 | 15 | +| 마. 보일러급유배관 | 50 | 50 | 50 | 15 | 15 | 15 | +| 바. 통기배관 | 30 | 30 | 30 | 10 | 10 | 10 | +| 사. 소화배관 | | | | | | | +| - 옥내소화전 | 65 | 55 | 50 | 10 | 10 | 10 | +| - 스프링클러 | 70 | 70 | 70 | 15 | 15 | 15 | + + +[주] +① 상기요율은 일반업무용 건물의 배관재로 사용하는 일반탄소강관금액에 대한 관이음부속및 관지지물의 금액비율이다. +② 건물규모별 소, 중, 대는 다음과 같다. +소 : 연면적 5,000㎡이하의 건물 +중 : 연면적 5,000㎡초과 30,000㎡미만의 건물 +대 : 연면적 30,000㎡이상의 건물 +③ 관이음부속류는 엘보, 티, reducer, 유니온, 소켓, 캡, 플러그, 니플, 부싱, 플랜지 등을 말한다. +④ 관이음부속류에는 각종 밸브장치, 증기트랩장치, By Pass관 장치 및 계량기 장치의 관이음부속과 각종 펌프토출측의 연결용 플랜지는 제외되었다. +⑤ 관지지물류는 클레비스행거, 보온용 클레비스행거, 파이프 클램프, 롤러행거, 행거볼트, U-볼트, 파이프 앵커, 턴버클, 나비밴드 등을 말한다. +⑥ 관지지물에는 단열지지대 및 관지지대가 제외되어 있으므로 별도 계상한다. +⑦ 증기배관의 관지지물에는 ⑥항 및 롤러, 새들, 보온재 보호판이 제외되어 있으므로 별도 계상한다. +⑧ 통기배관의 요율은 환상통기식이므로 각개 통기방식일 때는 별도 계상한다. +⑨ 상기부자재 산정요율 계산방식과 도면에 의한 물량산출 방식을 병행사용 한다. + +나. 병원건물 + +(강관금액에 대한 %) + +| 시공부위별 | 관이음부속 | 관지지물 | +|---|---|---| +| 가. 냉・온수배관 | | | +| - 기계실 | 80 | 50 | +| - 옥내일반 | 40 | 30 | +| 나. 증기배관 | | | +| - 기계실 | 55 | 20 | +| 다. 급수・급탕배관 | | | +| - 기계실 | 70 | 15 | +| - 옥내일반 | 50 | 40 | +| 라. 통기관 | 30 | 8 | +| 마. 소화배관 | | | +| - 옥내소화전배관 | 45 | 10 | +| - 스프링클러배관 | 75 | 20 | + + +[주] +① 상기 요율은 병원건물의 배관재로 사용하는 일반 탄소 강관금액에 대한 관이음부속 및 관지지물의 금액비율이다. +② 관이음 부속류는 엘보, 티, reducer, 유니온, 소켓, 캡, 플러그, 니플, 부싱, 플랜지 등을 말한다. +③ 관이음부속류에는 각종 밸브장치, 증기트랩장치, By Pass관 장치 및 계량기 장치의 관이음부속과 각종 펌프, 토출측의 연결용 플랜지는 제외되어 있다. +④ 관지지물에는 단열 지지대 및 공동구내 관지지대, 롤러스탠드 새들, 보온재보호판 등은 제외되어 있다. +⑤ 소화배관 요율에는 소화펌프의 토출측 밸브류 방진이음용 플랜지 유니온은 제외되어 있다. +⑥ 수직관은 2개 층마다 플랜지 또는 유니온을 적용하였다. + +7\. 잡재료 및 소모재료 +각 항목에 명시되어 있는 잡재료 및 소모재료에 대해서는 이를 계상하고, 명시되어 있지 않는 잡재료 및 소모재료 등을 계상하고자 할 때에는 주재료비(재료비의 할증수량 제외)의 2∼5%까지 별도 계상하되 산정근거를 명시하여야 한다. + +### 1-2-5 인력('22, '23, '25년 보완) + +1\. 직종의 선정 +각 항목에 명시되어 있는 직종은 보편적이며 일반화된 직종을 기준한 것이며, 통계법 제17조의 지정통계에 의한 「건설업 임금실태 조사 보고서」와 엔지니어링 산업진흥법에 의한 「엔지니어링업체 임금실태조사」의 직종해설에 따라 변경·적용할 수 있다. + +2\. 작업반장 +작업조건에 따른 작업조의 편성 시 작업조장은 기능 인력을 중심으로 편성하며, 다수의 보통인부에 대한 원활한 지휘통제가 필요할 경우 작업반장을 계상할 수 있다. + +[참고] + +| 현장작업조건 | 작업반장수 | +|---|---| +| 작업장이 광활하여 감독이 용이하고 고도의 기능이 필요치 않을 경우 | 보통인부 25인∼50인에 1인 | +| 작업장이 협소하고 감독시야가 보통이며 약간의 기능을 요하는 경우 | 보통인부 15인∼25인에 1인 | +| 고도의 기능과 철저한 감독이 요구되는 경우 | 보통인부 5인∼15인에 1인 | + +3\. 공사 중 안전관리를 위한 인력 +공사 시공 과정에서 안전의 확보를 위해 해당 법령(법, 령, 규칙, 지침 등)에 따라 배치하는 신호수, 유도자, 교통정리원, 감시자 및 기타 안전확보를 위한 인력은 품셈의 각 항목에서 제외되어 있으므로 작업방법 및 현장여건 등을 고려하여 필요한 인력을 별도 계상한다. + +### 1-2-6 공구 및 경장비('93, '23년 보완) + +각 항목에 명시되어 있는 공구손료 및 경장비의 기계경비에 대해서는 이를 계상하고, 명시되어 있지 않는 공구손료 및 경장비의 기계경비 등을 계상하고자 할 때에는 다음에 따라 별도 계상하되 산정근거를 명시하여야 한다. + +1\. 공구손료 +일반공구 및 시험용 계측기구류의 손료로서 공사 중 상시 일반적으로 사용되는 것이며, 인력품(노임할증과 작업시간 증가에 의하지 않은 품 할증 제외)의 3%까지 계상하며 특수공구(철골공사, 석공사 등) 및 검사용 특수계측기류의 손료는 별도 계상한다. + +[참고] +◦일반공구 및 일반시험용 계측기구 : 스패너류, 렌치류, 턴버클, 샤클, 스프레이건, 바이스, 클립 또는 클램프류, 용접봉건조통, 게이지류, V블록, 마이크로메타, 버어니어캘리퍼스 및 이와 유사한 것으로 공사 중 상시 일반적으로 사용하는 것으로서 별도의 동력을 필요로 하지 않는 것. + +2\. 경장비의 기계경비 +아래 참고와 같은 경장비류의 손료 및 운전경비(운전원 제외)이며, 손료는 기계경비산정표에 명시된 가장 유사한 장비의 제수치(내용시간, 연간표준 가동시간, 상각비율, 정비비율, 연간관리비율 등)를 참조하여 계상한다. + +[참고] +◦경장비 : 휴대용 전기드릴, 휴대용 전기그라인더, 체인블럭, 콘크리트브레이커(기초수정용), 임팩트렌치, 전기용접기, 윈치, 세어링머신, 벤딩롤러, 수압펌프(수압시험용) 및 이와 유사한 것, 주로 동력에 의하여 구동되는 장비류로서 기계경비산정표에 명시되지 아니한 소규모의 것. + +### 1-2-7 운반('08, '10, '16, '22, '23년 보완) + +1\. 소운반의 운반거리 +가. 품에서 자재의 소운반은 포함하며, 품에서 포함된 것으로 규정된 소운반 거리는 20m 이내의 거리를 의미한다. +나. 경사면의 소운반 거리는 직고 1m를 수평거리 6m의 비율로 본다. +다. 현장 내 운반거리가 소운반 범위를 초과하거나, 별도의 2차 운반이 발생될 경우 별도 계상한다. + +2\. 인력운반 기본공식 +Q = N × q +N = T/(60 × L × 2/V + t) = VT/(120L + Vt) + +여기서 Q : 1일 운반량(㎥ 또는 ㎏) +N : 1일 운반횟수 +q : 1회 운반량(㎥ 또는 ㎏) +T : 1일 실작업시간(480분-30분) +L : 운반거리(m) +t : 적재적하 시간(분) +V : 평균왕복속도(m/hr) + +[주] +삽으로 적재할 수 없는 자재(시멘트・목재・철근・말뚝・전주・관・큰석재 등)의 인력적사는 기본공식을 적용하되 25㎏을 1인의 비율로 계산하고 t 및 v는 자재 및 현장여건을 감안하여 계상한다. + +3\. 지게운반 + +| 구분 | 적재적하
시간(t) | 평균왕복속도(m/hr) | | | +|---|---|---|---|---| +| 종류 | | 양호 | 보통 | 불량 | +| 토사류 | 1.5분 | 3,000 | 2,500 | 2,000 | +| 석재류 | 2분 | | | | + + +[주] +① 절취는 별도 계상한다. +② 양호 : 운반로가 평탄하며 보행이 자유롭고 운반상 장애물이 없는 경우 +보통 : 운반로가 평탄하지만 다소 운반에 지장이 있는 경우 +불량 : 보행에 지장이 있는 운반로의 경우, 습지, 모래질, 자갈질, 암반 등 지장이 있는 운반로의 경우 +③ 1회 운반량은 보통토사 25㎏으로 하고, 삽작업이 가능한 토석재를 기준으로 한다. +④ 석재류라 함은 자갈, 부순돌 및 조약돌 등을 말한다. +⑤ 고갯길인 경우에는 직고(直高) 1m를 수평거리 6m의 비율로 본다. +⑥ 적재운반 적하는 1인을 기준으로 한다. + +4\. 벽돌운반 + +(1,000매당) + +| 구분 | 단위 | 층수 | | | | | +|---|---|---|---|---|---|---| +| | | 1층 | 2층 | 3층 | 4층 | 5층 | +| 보통인부 | 인 | 0.44 | 0.56 | 0.74 | 0.96 | 1.19 | +| 비고 | - 리프트를 사용할 경우 보통인부 0.31인을 적용한다. | | | | | | + + +[주] +본 품은 기본벽돌(19×9×5.7㎝)을 인력으로 층별(층고 3.6m) 운반하는 기준이다. + +5\. 인력운반(기계설비) +장대물, 중량물 등 인력운반비 산출공식 +가. 기본공식 +운반비 = M/T × A(60 × 2 × L/V + t) + + +여기에서, A : 인력운반공의 노임 +M : 필요한 인력운반공의 수(총운반량/1인당 1회 운반량) +L : 운반거리(km) +V : 왕복평균속도(km/hr) +T : 1일 실작업시간 +t : 준비작업시간(2분) +인력운반공의 1회 운반량(25㎏) +왕복평균속도 : 도로상태 양호 : 2km/hr +도로상태 보통 : 1.5km/hr +도로상태 불량 : 1km/hr +도로상태 물논 : 0.5km/hr +※ 도로상태 구분은 토목부분 참조 + +나. 경사지 운반 환산계수(α) + +| 경사도 | % | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | +|---|---|---|---|---|---|---|---|---|---|---|---| +| | 각도 | 6 | 11 | 17 | 22 | 27 | 31 | 35 | 39 | 42 | 45 | +| 환산계수(α) | | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | + + +경사지 환산거리 a×L + + +6\. 운반로의 개설 및 유지보수 +운반로의 신설 또는 유지보수는 작업량을 감안하여 작업속도가 증가됨으로써 신설 또는 유지 보수하지 않을 때보다 경제적일 경우에만 계상해야 한다. + +7\. 화물자동차의 적재량 +가. 중량으로 적재할 수 있는 품종에 대하여는 중량적재 하는 것을 원칙으로 한다. +나. 중량적재가 곤란한 것에 대하여는 적재할 수 있는 실측치에 의한다. +다. 화물자동차의 적재량은 중량적재나 용량적재 그 어느 쪽의 제한 범위도 벗어나지 않도록 해야 하며 운반로의 종별(공도, 사도) 및 상태에 따라서도 달라질 수 있다. +라. 화물자동차의 적재량은 중량으로 적재하거나 특수한 품목을 제외하고는 일반적으로 다음의 값을 기준으로 한다. + +| 종별 | 규격 | 단위 | 적재량 | | | | 비고 | +|---|---|---|---|---|---|---|---| +| | | | 6톤
차량 | 8톤
차량 | 11톤
차량 | 20톤
트레일러 | | +| 목재(원목) | 길이가 긴 것은 낱개 | ㎥ | 7.7 | 10 | 13 | - | | +| 목재(제재목) | 〃 | 〃 | 9.0 | 12 | 16 | - | | +| 경유・휘발유 | 200ℓ | 드럼 | 30 | 40 | 55 | - | | +| 아스팔트 | 〃 | 〃 | 24 | 35 | 50 | - | | +| 새끼 | 12㎜, 9.4㎏ | 다발 | 480 | 640 | - | - | | +| 벽돌 | 19㎝×9㎝×5.7㎝(표준형) | 개 | 2,930 | 3,900 | 5,300 | - | | +| 기와 | 34㎝×30㎝×1.5㎝ | 매 | 1,860 | 2,480 | 3,400 | - | | +| 보도블록 | 30㎝×45㎝×6㎝ | 개 | 490 | 650 | 890 | - | | +| 견치돌 | 뒷길이 45㎝ | 개 | 100 | 135 | 180 | - | | +| 블록 | 두께 10㎝ | 〃 | 650 | 860 | 1,180 | - | | +| 〃 | 두께 15㎝ | 〃 | 450 | 600 | 820 | - | | +| 〃 | 두께 20㎝ | 〃 | 350 | 460 | 630 | - | | +| 타일 | 두께 6㎜ | ㎡ | 500 | 660 | - | - | 모자
이크
포함 | +| | (8㎜) | | (350) | (460) | - | - | | +| 크링커타일 | 두께 24㎜ | 〃 | 150 | 200 | - | - | | +| 합판 | 12×900×1,800㎜ | 매 | 450 | 600 | 820 | - | | +| 유리 | 두께 3㎜ | ㎡ | 700 | 930 | - | - | | +| 페인트 | 4ℓ(18ℓ)/통 | 통 | 1,300 | 1,720 | 2,365 | - | | +| | | | (300) | (400) | (550) | - | | +| 아스타일 | 3㎜×30㎝×30㎝ | 매 | 9,600 | 12,800 | 17,600 | - | | +| 흄관 | ø300㎜ L=2.5m | 본 | 27 | 36 | 52 | - | | +| 〃 | 450 〃 | 〃 | 15 | 20 | 27 | - | | +| 〃 | 600 〃 | 〃 | 8 | 12 | 15 | - | | +| 〃 | 800 〃 | 〃 | 4 | 6 | 9 | - | | +| 〃 | 900 〃 | 〃 | 4 | 5 | 7 | - | | +| 〃 | 1,000 〃 | 〃 | 3 | 4 | 5 | 10 | | +| 〃 | 1,200 〃 | 〃 | 2 | 3 | 4 | 7 | | +| 〃 | 1,500 〃 | 〃 | 1 | 2 | 2 | 5 | | +| 콘크리트관 | ø250㎜ L=1m | 본 | 60 | 80 | 110 | - | | +| 〃 | 300 〃 | 〃 | 52 | 70 | 96 | - | | +| 〃 | 350 〃 | 〃 | 42 | 60 | 82 | - | | +| 〃 | 450 〃 | 〃 | 25 | 30 | 41 | - | | +| 〃 | 600 〃 | 〃 | 16 | 20 | 27 | - | | +| 〃 | 900 〃 | 〃 | 9 | 12 | 16 | - | | +| 〃 | 1,000∼1,500 〃 | 〃 | 3∼6 | 4∼8 | 5∼10 | 12 | | + +| 주철관 | ø80㎜∼150㎜L=6.0m | 본 | 42∼111 | 46∼123 | - | - | | +| 〃 | 200∼450 〃 | 〃 | 9∼30 | 10∼34 | - | - | | +| 〃 | 500∼600 〃 | 〃 | 6 | 6∼9 | - | - | | +| 〃 | 700∼900 〃 | 〃 | 3 | 3∼5 | - | - | | +| 〃 | 1,000〃 | 〃 | 2 | 2 | - | - | | +| 도복장강관 | ø300㎜∼450㎜
L=6.0m | 본 | 10∼18 | 14∼22 | - | - | | +| 〃 | 500∼ 700〃 | 〃 | 3∼9 | 6∼10 | - | - | | +| 〃 | 800∼1,000〃 | 〃 | 1∼3 | 3 | - | - | | +| 〃 | 1,200∼2,100〃 | 〃 | 1 | 1 | - | - | | +| 〃 | 2,200∼2,300〃 | 〃 | - | 1 | - | - | | +| P・C파일 | ø300㎜∼440㎜
L=9.0m | 본 | - | - | 6∼10 | 11∼18 | | +| | 450∼500 〃 | 〃 | - | - | 4∼5 | 8∼9 | | +| 시멘트 | 40㎏ | 대 | 150 | 200 | 275 | 637
(25.5톤
화물차는
풀카고
기준) | | +| 전주 | 10m(일반용) | 본 | - | - | 12 | 23 | | +| 〃 | 체신주 8m | 〃 | - | 17 | 23 | 43 | | + + +### 1-2-8 작업조 구성 및 적용('24년 신설) + +1\. 작업조 구성 +가. 표준품셈의 작업조는 대표적이고, 보편적이며 일반화된 투입 요소를 제시한다. +나. 현장여건에 따라 투입자원(인력, 장비 등)의 변경이 필요한 경우 이를 보완할 수 있으며, 산정근거를 명시하여야 한다. + +2\. 작업조 적용 +가. 작업조는 일당시공량을 시공하기 위한 필수자원(인력, 장비)의 조합으로 제시 되어있다. +나. 시설물의 설계조건 및 현장여건에 따라 복수의 작업조를 적용할 수 있다. + +3\. 시공단위의 품 산정 +가. 작업조 기준의 일당시공량이 제시된 항목을 시공단위(m당, ㎡당, ㎥당, ton당 등)의 품으로 산정하는 경우에는 다음 표를 참고하여 산출하되, 품의 규격과 단위수량을 고려하여 소수자리의 정도를 조정하여 적용할 수 있다. + +| 일당시공량 | 1단위이하 | 10단위 | 100단위 | 1,000단위 | 10,000단위 | +|---|---|---|---|---|---| +| 소수자리 | 2 | 3 | 4 | 5 | 6 | + +[참고] 시공단위의 품으로 산정하는 경우 소수자리 표기 예시 + +| 구분 | 단위 | 수량 | 일당시공량(예시) | | | | | +|---|---|---|---|---|---|---|---| +| | | | 1단위이하
(3㎡) | 10단위
(30㎡) | 100단위
(300㎡) | 1,000단위
(3,000㎡) | 10,000단위
(30,000㎡) | +| 인력 | 인 | 1 | 0.33 | 0.033 | 0.0033 | 0.00033 | 0.000033 | +| | 인 | 3 | 1.00 | 0.100 | 0.0100 | 0.00100 | 0.000100 | +| | 인 | 5 | 1.67 | 0.167 | 0.0167 | 0.00167 | 0.000167 | +| 장비 | 대 | 1 | 2.67 | 0.267 | 0.0267 | 0.00267 | 0.000267 | +| ※ 인력품 산정(인) : 인력(인) ÷ 시공량(일당) | | | | | | | | +| ※ 장비품 산정(hr) : 장비(대) × 8(hr) ÷ 시공량(일당) | | | | | | | | + + +### 1-2-9 소규모(작업물량 제한)(‘23년 신설, ‘25년 보완) + +"시공량/일"으로 명시된 항목 중 총 시공량이 본 품(시공량/일)의 기준 미만인 소규모 공사인 경우 다음과 같이 적용하며, “시공량/일”이 제시되지 않는 항목의 경우 시공수량과 투입자원(인력, 장비)의 작업능력을 고려하여 산정한다(재료량에는 적용하지 않는다.). + +| 구분 | 조건 | 적용시공량 | +|---|---|---| +| 1 | A ≦ B/2 일 경우 | Q = B/2 | +| 2 | B/2 < A < B 일 경우 | Q = B | + +![소규모 적용시공량 그래프](pic/1-02_2.png) +적용시공량(Q) · 1일시공량(B) · 1일시공량(B)/2 · 1일시공량(B)/2 · 1일시공량(B) · 총시공량(A) + + +[주] +① 시공량(A), 1일시공량(표준품셈)(B), 적용시공량(Q) +② 시공량은 총 시공량을 기준한다. 단, 외부환경(교통통제 및 발주물량 제한으로 “시공량/일”이 제한되는 경우 등)으로 인해 “시공량/일” 미만으로 계획되는 경우 해당 시공량을 적용한다. +③ 동일 항목 내 다수의 규격이 혼재되어 있는 경우 현장조건 등을 고려하여 다음과 같이 적용한다. +㉮ 규격별 소요일수를 산정 : 시공량 ÷ 표준품셈 일당시공량 +㉯ 규격별 소요일수의 합이 1일 미만일 경우 소규모(작업물량 제한) 적용 +㉰ 규격별 소요일수의 합이 1일 이상일 경우 소규모(작업물량 제한) 미적용 +㉱ 규격별 시공량에 일수 편차에 따른 요율을 각각 곱하여 시공량 계산 + +| 구분 | | 규격 | A.현장수량
(m) | B.일당시공량
(m) | Q. 적용시공량
(m) | 소요일수
(A/B) | 일수편차
(요율) | +|---|---|---|---|---|---|---|---| +| 소규모
적용 | 예시1 | 15mm | 40 | 83 | 44 | 0.5 | 0.1
(+10%) | +| | | 20mm | 30 | 75 | 33 | 0.4 | | +| | | 계 | 70 | | 77 | 0.9 | | +| | 예시2 | 15mm | 10 | 83 | 12 | 0.1 | 0.2
(+20%) | +| | | 20mm | 15 | 75 | 18 | 0.2 | | +| | | 100mm | 9 | 18 | 10.8 | 0.5 | | +| | | 계 | 34 | | 40.8 | 0.8 | | +| 소규모
미적용 | 예시3 | 15mm | 30 | 83 | - | 0.4 | - | +| | | 20mm | 15 | 75 | | 0.2 | | +| | | 100mm | 10 | 18 | | 0.6 | | +| | | 계 | 55 | | | 1.2 | | + + +④ 복합 공종 시공 시에는 본 할증을 적용하지 않는다. diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-03_재료_및_노임의_할증.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-03_재료_및_노임의_할증.md index 469016fd..f5b2c1c6 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-03_재료_및_노임의_할증.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-03_재료_및_노임의_할증.md @@ -5,10 +5,177 @@ PDF쪽: 76~79 인쇄쪽: 20~23 시작표지: 1-3 재료 및 노임의 할증 끝표지: 1-4 품의 할증('97, '01, '03, '11, '14, '15, '16, '17년 보완) -상태: 대기 -작성: +상태: 검증대기 +작성: sub_laptop_1 검증: 원천: 글자층 -기계검사: +기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 확정지문: --- + +## 1-3 재료 및 노임의 할증 + +### 1-3-1 재료의 할증('06, '11, '12, '19, '22, '23년 보완) + +공사용 재료의 할증률은 일반적으로 다음표의 값 이내로 한다. 다만, 품셈의 각 항목에 할증률이 포함 또는 표시되어 있는 것에 대하여는 본 할증률을 적용하지 아니한다. + +1\. 콘크리트 및 포장용 재료 + +| 종류 | 정치식(%) | 기타(%) | +|---|---|---| +| 시멘트 | 2 | 3 | +| 잔골재・채움재 | 10 | 12 | +| 굵은골재 | 3 | 5 | +| 아스팔트 | 2 | 3 | +| 석분 | 2 | 3 | +| 혼화재 | 2 | - | + + +[주] +속채움 재료의 경우에도 이 값을 준용한다. + +2\. 노상 및 노반재료(선택층, 보조기층, 기층 등) + +| 종류 | 할증률(%) | +|---|---| +| 모래 | 6 | +| 부순돌・자갈・막자갈 | 4 | +| 점질토 | 6 | + + +3\. 관 및 구조물기초 부설재료 + +| 종류 | 할증률(%) | +|---|---| +| 모래 | 4 | + +4\. 토사(해상) + +| 종류 | 할증률(%) | 비고 | +|---|---|---| +| 치환모래(置換砂) | 20 | 표면건조포화상태의 모래에
대한 할증률 | +| 깔모래(敷砂) | 30 | | +| 사항용모래(砂抗用砂) | 20 | | +| 압입모래(壓入砂) | 40 | | + + +5\. 사석(해상) + +| 지반 | 보통지반 | | 모래치환지반 | | 연약지반 | | +|---|---|---|---|---|---|---| +| 사석두께
종류 | 2m미만 | 2m이상 | 2m미만 | 2m이상 | 2m미만 | 2m이상 | +| 기초사석 | 25% | 20% | 30% | 25% | 50% | 40% | +| 피복석(被覆石) | 15% | 15% | 15% | 15% | 20% | 20% | +| 뒤채움사석 | 20% | 20% | 20% | 20% | 25% | 25% | + + +[주] +사석의 재료할증률은 공사의 위치, 자연조건(수심, 조류, 파랑, 조위, 해저지질 등)과 제체의 규모 및 공사의 종류 등 현장조건에 적합하게 적용할 수 있다. + +6\. 속채움(해상) + +| 종류 | 할증률(%) | 비고 | +|---|---|---| +| 모래 | 10 | 케이슨 또는 세라 블록 등의 속채움시 | +| 사석 | 10 | 단, 블록 또는 콘크리트의 속채움재는 제외 | + +7\. 강재류 + +| 종류 | 할증률(%) | +|---|---| +| 원형철근 | 5 | +| 이형철근 | 3 | +| 이형철근(교량・지하철 및 이와 유사한
복잡한 구조물의 주철근) | 6∼7 | +| 일반볼트 | 5 | +| 고장력볼트(H.T.B) | 3 | +| 강판(板) | 10 | +| 강관 | 5 | +| 대형형강(形鋼) | 7 | +| 소형형강 | 5 | +| 봉강(棒鋼) | 5 | +| 평강대강 | 5 | +| 경량형강, 각파이프 | 5 | +| 리벳(제품) | 5 | +| 스테인리스강판 | 10 | + +| 스테인리스강관 | 5 | +| 동판 | 10 | +| 동관 | 5 | +| 덕트용금속판 | 28 | +| 프레스접합식스테인리스강관 | 5 | +| 이음부속류 | 5 | + + +[주] +① 이형철근의 경우, 해당 공사 또는 구조물의 시공실적에 따라 조정하여 적용할 수 있다. +② 강관, 스테인리스강관의 할증률(%)은 옥외공사를 기준한 것이며 옥내공사용 재료의 할증률은 10% 이내로 한다. +③ 형강(形鋼)의 대형구분은 100㎜ 이상을 말한다. +④ 현장 여건상 절단 및 가공 등이 불필요한 경우, 상기 할증률을 조정하여 적용할 수 있다. + +8\. 기타재료 + +| 재료별 | | 할증률(%) | +|---|---|---| +| 목재 | 각재 | 5 | +| | 판재 | 10 | +| 합판 | 일반용합판 | 3 | +| | 수장용합판 | 5 | +| 쉬즈관 | | 8 | +| 쉬즈판 | | 8 | +| PVC관/PE관 | | 5('23 신설) | +| 원심력철근콘크리트관 | | 3 | +| 조립식구조물(U형플륨관 등) | | 3('92 신설) | +| 도료 | | 2 | +| 벽돌 | 붉은벽돌 | 3 | +| | 시멘트벽돌 | 5 | +| | 내화벽돌 | 3 | +| | 경계블록 | 3 | +| | 콘크리트블록 | 4 | +| | 호안블록 | 5 | +| 원석(마름돌용) | | 30 | +| 석재판붙임용재 | 정형돌 | 10 | +| | 부정형돌 | 30 | +| 조경용수목 | | 10 | +| 잔디 및 초화류 | | 10 | +| 래디믹스트 콘크리트
타설(현장플랜트포함) | 무근구조물 | 2 | +| | 철근구조물 | 1 | +| | 철골구조물 | 1 | +| 현장 혼합 콘크리트
타설(인력 및 믹서) | 무근구조물 | 3 | +| | 철근구조물 | 2 | +| | 소형구조물 | 5 | +| 콘크리트포장혼합물의 포설 | | 4 | +| 아스팔트콘크리트포설(현장플랜트포함) | | 2 | +| 졸대 | | 20 | +| 텍스 | | 5 | +| 석고판(못붙임용) | | 5 | +| 석고판(본드붙임용) | | 8 | +| 콜크판 | | 5 | +| 단열재 | | 10 | +| 유리 | | 1 | + +| 테라콧타 | | 3 | +| 블록 | | 4 | +| 기와 | | 5 | +| 슬레이트 | | 3 | +| 타일 | 모자이크 | 3 | +| | 도기 | 3 | +| | 자기 | 3 | +| | 아스팔트 | 5 | +| | 리노륨 | 5 | +| | 비닐 | 5 | +| | 비닐렉스 | 5 | +| | 크링카 | 3 | +| 테라죠판 | | 6('18 신설) | +| 위생기구(도기, 자기류) | | 2 | + + +[주] +① 거푸집 및 동바리, 가건축물 또는 품셈에 할증률이 포함 또는 표시되어 있는 것에 대하여는 본 할증률을 적용하지 아니한다. +② 개별 부재의 설계조건에 의해 제작이 완료된 상태의 PC부재(PC암거, 건축용 구조부재 등)는 할증수량을 적용하지 않는다. +③ PVC, PE관의 할증률(%)은 옥외공사 기준이며 옥내공사용 재료의 할증률은 10% 이내로 한다. +④ 현장 여건상 절단 및 가공 등이 불필요한 경우, 상기 할증률을 조정하여 적용할 수 있다. + +### 1-3-2 노임의 할증('25년 보완) + +1\. 노임은 관계법령의 규정에 따른다. +2\. 근로시간을 벗어난 시간외, 유급휴일, 야간 및 휴일의 근무가 불가피한 경우에는 근로기준법 제50조, 제55조, 제56조, 유해 위험작업인 경우 산업안전보건법 제139조에 정하는 바에 따른다. diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-04_품의_할증.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-04_품의_할증.md index 0f530897..a503ee01 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-04_품의_할증.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-04_품의_할증.md @@ -5,10 +5,302 @@ PDF쪽: 79~86 인쇄쪽: 23~30 시작표지: 1-4 품의 할증('97, '01, '03, '11, '14, '15, '16, '17년 보완) 끝표지: 1-5 기타 -상태: 대기 -작성: +상태: 검증대기 +작성: sub_laptop_1 검증: 원천: 글자층 -기계검사: +기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 확정지문: --- + +## 1-4 품의 할증('97, '01, '03, '11, '14, '15, '16, '17년 보완) + +### 1-4-1 적용기준('23년, '25년 보완) + +1\. 품의 할증은 필요한 경우 다음의 기준 이내에서 적정공사비 산정을 위하여 공사규모, 현장조건 등을 감안하여 적용한다. +2\. 할증의 적용은 품셈 각 항목에서 반영하고 있는 작업조건에서 벗어나는 경우에 고려되어야 하며, 해당 항목에서 규격 또는 별도의 할증조건으로 제시하는 경우 해당 조건을 우선 적용한다. +3\. 품의 할증은 생산성에 영향을 받는 품 요소(인력 및 건설기계)에 적용함을 원칙으로 한다. +4\. 품의 할증은 각각의 할증 요소에서 제시하고 있는 기준과 동일하거나 유사한 시공조건에서 적용할 수 있으며, 할증의 적용에 판단이 필요한 경우는 발주기관의 장 또는 계약 당사자간 협의하여 적용함을 원칙으로 한다. +5\. 할증율(%)은 요소별 일반적인 작업조건을 기준으로 제시하였으며, 일부의 작업에 영향을 미치는 경우 할증율의 범위내에서 보완하여 적용한다. + +### 1-4-2 할증의 중복가산요령 + +W=기본품×(1+a1+a2+a3+………an) +단, 동일성격의 품할증요소의 이중적용은 불가함. +여기서 W : 할증이 포함된 품 +기본품 : 각 항 [주]란의 필요한 할증・감 요소가 감안된 품 +a1-an : 품 할증요소 + +### 1-4-3 작업지연('23, '25년 보완) + +공사 수행 시 특정 시공조건 발생(출입통제, 중단, 이동 등)하여 일일 작업시간에 제약을 받는 경우를 대상으로 한다. + +1\. 현장조건 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 통제보안지역 | - 보안구역 등 작업인력의 출입통제로 작업에 지장을 받는 경우 | 20% | +| 군(軍)통제지역 | - 인근 사격훈련 등 군(軍) 관련 지역 내 출입통제 등으로 작업에 지장을 받는 경우 | 50% | +| 도서지역 | - 본토와 도서지구간 인력의 이동(출퇴근) 발생으로 작업에 지장을 받는 경우 | 50% | +| 공항지역 | - 공항 내 이착륙(1일 20회 이상)발생으로 작업에 지장을 받는 경우 | 50% | + + +[주] +① 본 할증은 인력의 출입 및 작업 통제에 의해 실 작업시간이 줄어드는 경우에 적용한다. +② 도서지역에서 자원(인력, 자재, 건설기계)의 수급에 영향을 받는 경우는 본 할증과 무관하며, 별도 반영하여야 한다. + +2\. 열차의 운행빈도 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 본선상작업 | - 열차운행횟수(8시간) 13회 이하 | 14% | +| | - 열차운행횟수(8시간) 14~18회 이하 | 25% | +| | - 열차운행횟수(8시간) 19회 이상 | 37% | +| 열차운행선
인접작업 | - 열차운행횟수(8시간) 13회 이하 | 3% | +| | - 열차운행횟수(8시간) 14~18회 이하 | 5% | +| | - 열차운행횟수(8시간) 19회 이상 | 7% | + + +[주] +① 열차 통과에 따라 작업이 중단(지장 또는 대피)되는 경우에 적용한다. +② 열차운행선 인접공사시 열차통과에 따라 작업이 중단되어 작업능률이 저하되는 경우 대피 할증율을 적용하며, 선로와의 이격거리는 철도안전법 기준을 적용한다. + +3\. 건물 층수 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 지상층 | 2~5층 | 1% | +| | 10층 이하 | 3% | +| | 15층 이하 | 4% | +| | 20층 이하 | 5% | +| | 25층 이하 | 6% | +| | 30층 이하 | 7% | +| | 30층 초과 | 5층마다 1%씩 가산 | +| 지하층 | 지하 1층 | 1% | +| | 지하 2층 | 2% | +| | 지하 2층 초과 | 1층마다 1%씩 가산 | + + +[주] +① 시설(건물 등) 내부에서 작업자의 이동에 따라 작업능률이 저하되는 경우에 적용한다. +② 층의 구분을 할 수 없는 경우 층고를 3.6m로 기준하여 환산한다. + +### 1-4-4 지세/지형('23, '25년 보완) + +시공위치의 형상(산지 등), 환경(교통, 주거 등) 등의 조건에 의해 작업효율에 영향을 받는 공종에 한하여 적용한다. + +1\. 지세 + +| 구분 | 할증 | | 적용조건 | +|---|---|---|---| +| 산지 | 산지 A | 15% | - ‘산지의 등급 구분’ 참조 | +| | 산지 B | 25% | | +| | 산지 C | 50% | | +| 경사지 | 경사지 A | 10% | - 비탈면 등 경사면 작업으로 작업에 지장을 받는 경우 | +| | 경사지 B | 20% | - ‘경사지의 등급 구분’ 참조 | +| 습지/해안지 | 20% | | - 습지(물이 있는 논 등) 또는 해안지역(갯벌, 간척지,
모래사장 등)에서 직접 작업하는 경우 | + + +[주] +① 시공위치의 형상 변화(간섭, 경사 등)로 인해 작업에 지장을 받는 경우에 적용한다. +② 작업조건의 개선(지형 평탄화, 탑승장비 활용 등)으로 본 작업의 영향을 받지 않는 경우 적용하지 않는다. +③ ‘산지의 등급 구분’은 아래와 같다. + +| 구분 | 산지 A | 산지 B | 산지 C | +|---|---|---|---| +| 적용대상 | -국도 주변 야산지
-지방도 주변 야산지
-시가지 주변 야산지
-마을 주변 야산지 | -순수 야산지
-해안 야산지 | - 산악지 | + +④ ‘경사지의 등급 구분’은 아래와 같다. + +| 구분 | 경사지 A | 경사지 B | +|---|---|---| +| 적용대상 | -수평각 15도 ~ 30도 미만 경사 | -수평각 30도 이상 경사 | + +[참고] 지세구분 + +| 지구 | | 평탄지 | 산지 A
(국도 등 주변
야산지) | 산지 B
(야산지) | 산지 C
(산악지) | +|---|---|---|---|---|---| +| 구분 | | | | | | +| 지형 | | 평지 또는 보통
야산으로 교통이
편리한 곳 | 험한 야산지대 및
수목이 우거진 보통
산악지대 | 험한 야산지대 및
수목이 우거진 보통
산악지대로서 교통이
불편한 곳 | 산림이 우거진
험준한 산악지대로서
교통이 극히 불편한
곳 | +| 지세 | | 평지 또는
보통 야산 | 험한 야산 또는
보통 산악 | 험한 야산 또는
보통 산악 | 험한 산악 | +| 높이
기준 | 해발 | 100m 미만 | 300m 미만 | 300m 미만 | 400m 미만 | +| | 표고 | 50m 미만 | 150m 미만 | 150m 미만 | 200m 미만 | +| 통행
조건 | 도로 | 대소로(유) | 대소로(유) | 대로(무) | 대소로(무) | +| | 구배 | 완만 | 완만 | 완급 | 극급 | +| | 통행 | 양호 | 양호 | 불편 | 극히불량 | +| 자연
환경 | 지세 | 양호 | 불편 | 불편 | 불량 | +| | 수목 | 소수 또는 소목 | 보통 또는 약간울창 | 보통 또는 약간울창 | 울창 | +| | 기상 | 보통 | 불편 | 불편 | 불편 | +| 기타
조건 | 교통 | 도로에서 500m 이내 | 도로에서 500m 이내 | 도로에서 1㎞ 이내 | 도로에서 1㎞ 이상 | +| | 숙소 | 편리 | 편리 | 불편 | 극히 불편 | +| | 통신 | 편리 | 편리 | 불편 | 불가 | +| | 인력동원 | 편리 | 편리 | 불편 | 불가 | + + +[주] +① 교통 +\- 도로 : 도시․군계획시설의 결정․구조 및 설치기준에 관한 규칙 제9조 참고 +\- 편리 : 대형차의 통행가능 +\- 불편 : 소형차 또는 리어카 정도의 통행가능 +\- 극히불편 : 사람 이외의 통행불가 +② 표고 : 활동 중심구역에서의 거리 300m 기준 +③ 구배 +\- 완만 : 사거리 100m 미만으로 수평각 15도 미만 정도 +\- 완급 : 사거리 100m 이상의 수평각 30도 미만 정도 +\- 극급 : 사거리 100m 이상으로 수평각 30도 이상 정도 +④ 선정기준 : 상기 구분기준 중 4개 이상에 해당되는 경우를 대상으로 함 + +2\. 도심지 + +| 구분 | 할증 | | 적용조건 | +|---|---|---|---| +| 도로점유
차도공사 | 차도 A
(2차로) | 30% | - 교행불가 발생으로 인해 작업에 영향을 받는 경우 | +| | 차도 B
(4차로 이하) | 25% | - 통행제한 또는 저속통행으로 인해 작업에 영향을 받는
경우 | +| | 차도 C
(4차로 초과) | 20% | - 교통량 과다로 인한 차량통행에 영향을 받는 경우 | +| 주거지 및
상업지공사 | 보행자 및 차량통행 | 15% | - 보행자 또는 차량통행으로 인해 작업에 영향을 받는 경우 | +| | 주거환경영향 | | - 주변환경 영향으로 인해 작업에 영향을 받는 경우 | +| | 현장협소 | | - 현장내 자재 적치 또는 장비의 설치/운전이 어려운 경우 | +| | 지하매설물 | 15% | - 지하매설물의 간섭으로 인해 작업에 영향을 받는 경우 | +| 지하/지반
공사 | 고층/초고층 건축물 | 10% | - 장시간 연속타설이 필요한 기초공사 등
- 초대형 장비(대구경 천공기/대형 크레인 등)의
설치/운전이 어려운 경우 | +| | 대심도굴착 A | 20% | - 대심도 수직구 굴착공사에서 도심지 작업으로 인해 작업에
영향을 받는 경우(자재반입, 버력반출 제약 등)
- 수직구 깊이 40m ∼ 60m 이하 | +| | 대심도굴착 B | 30% | - 대심도 수직구 굴착공사에서 도심지 작업으로 인해 작업에
영향을 받는 경우(자재반입, 버력반출 제약 등)
- 수직구 깊이 60m 초과 | + + +[주] +① 도로점유 차도 공사는 도로를 점유하여 작업하는 공종을 기준으로 한다. +② 주거 및 상업지 공사는 ‘국토의 계획 및 이용에 관한 법률’에 따른 주거지역 및 상업지역과 공업지역 중 준공업지역을 기준으로 하며, 그 밖의 지역에서 시공환경이 유사한 경우 이를 준용하여 적용할 수 있다. +③ 지하/지반 공사는 도시지역 내 현장부지가 협소하거나 보행자 및 차량통행 등으로 현장진입이 원활하지 않은 경우에 적용한다. +④ 고층 및 초고층 건축물의 구분은 ‘건축법’ 및 ‘건축법 시행령’을 기준으로 한다. + +### 1-4-5 위험('23년 보완) + +작업 위치 및 환경에 따른 위험요소의 발생과 위험의 노출로 인해 작업능률의 저하가 예상되는 경우에 적용한다. + +1\. 고소작업 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 비계사용 | - 10m 미만 | - | +| | - 10m 이상 ~ 20m 미만 | 5% | +| | - 20m 이상 ~ 30m 미만 | 8% | +| | - 30m 이상 ~ 40m 미만 | 12% | +| | - 40m 이상 ~ 50m 미만 | 16% | +| | - 50m 이상 ~ 60m 미만 | 20% | +| | - 60m 초과 | 10m마다 4%씩 가산 | +| 고소작업차 사용 | - 10m 미만 | - | +| | - 10m 이상 ~ 20m 미만 | 4% | +| | - 20m 이상 ~ 30m 미만 | 6% | +| | - 30m 이상 ~ 40m 미만 | 8% | +| | - 40m 이상 ~ 50m 미만 | 10% | +| | - 50m 이상 ~ 60m 미만 | 12% | +| | - 60m 초과 | 10m마다 2%씩 가산 | + + +[주] +① 비계 사용은 기설치 된 비계(강관비계, 시스템비계 등)위에서 작업하는 기준이며, 고소작업차 사용은 고소작업차에 탑승하여 작업하는 기준이다. +② 굴착 등 지하에서 작업할 경우 본 표의 높이별 할증율을 동일하게 적용하며 비계 또는 고소작업차의 설치 위치를 기준으로 한다. +③ 특수 조건의 고소작업(비계틀 불사용 등)은 별도 계상한다. + +2\. 교량상 작업 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 슬래브(도상)위 | - 작업자의 추락 위험이 비교적 낮은 작업 | 15% | +| 무도상 교량/
난간 설치 및 철거 | - 작업자의 추락 위험이 높은 작업 | 30% | + +[주] +교량상 작업은 교량위에서 작업자의 안전시설(안전로프 등) 착용이 필요한 작업 기준이다. + +3\. 터널내 작업 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 도로/보행터널 | - 작업자의 대피가 용이한 터널 | 15% | +| 철도터널 | - 작업자의 대피거리가 길고, 별도의 대피공간이 필요한 터널 | 30% | +| 비고 | - 터널내 사다리작업으로 작업능률이 현저하게 저하될 시는 위 할증율에 10%까지
가산할 수 있다. | | + + +[주] +터널내 작업은 완공되어 운영 중인 터널의 입구에서 25m이상 진입하여 보수 및 보강, 유지보수 등의 작업 시에 적용한다. + +4\. 유해 작업 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 활선근접 | - 고온·고압기기 접근작업
[참고] AC140㎸급 이상(4m이내), 60㎸급 이상(3m이내), 7㎸급
이상(2m이내), 600V이상(1m이내) | 30% | +| 기타 | - 고열·위험물·극독물의 보관실내 작업 | 20% | +| | - 정화조, 축전지실, 제방실내 등 유해가스 발생장소 | 10% | + + +[주] +유해작업은 유해시설과 인접하여 작업하는 경우에 적용한다. + +### 1-4-6 작업제한('23, '24, '26년 보완) + +휴전, 단수, 선로사용중지 등 작업시간 제한 발생 또는 1일 작업물량 미만의 소규모 시공 등 일일 작업시간(8시간) 미만의 시공이 발생하는 경우를 대상으로 한다. + +1\. 작업시간 제한 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 작업가능시간 | 2시간 이하 | 50% | +| | 3시간 〃 | 35% | +| | 4시간 〃 | 25% | +| | 5시간 〃 | 20% | +| | 6시간 〃 | 15% | + + +[주] +① 휴전, 단수, 선로사용중지 등 일일 작업시간이 제한되는 경우에 적용한다. +② 작업가능시간은 작업준비, 대기 등을 제외한 실질적인 시공위치의 점유가 가능한 시간이다. + +2\. 폭염시 휴게시간 할증 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 체감온도 33도 이상 | 2시간 이상일 경우 작업시 | 5% | +| | 4시간 〃 | 10% | +| | 6시간 〃 | 15% | +| | 8시간 〃 | 20% | + + +[주] +산업안전보건기준에 관한 규칙에 따른 휴식시간을 부여할 경우를 적용한다. + +### 1-4-7 작업환경('23년 보완) + +공사외적 시공환경(작업 시간대, 환경(소음․진동 등), 위치 이동 및 분산 등)변화 또는 특수작업이 발생하는 경우를 대상으로 한다. + +1\. 야간 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 야간 | - 정상작업시간에 추가하여 야간공사 수행(돌관공사)
- 공사성격에 따라 야간작업으로 계획 | 25% | + +[주] +공정계획에 의해 정상작업(정상공기)에 의한 작업이 불가능한 경우 또는 공사성격 상 야간작업을 수행하는 경우에 적용한다. + +2\. 특수작업 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 특수작업 | - 중요기기 및 설비의 분해, 가공 또는 조립작업
- 특별한 사양 및 공법에 의한 작업
- 기타 중요한 기기 및 설비를 취급하는 작업 | 5~10% | +| 비고 | - 원자력 발전소와 같이 작업단계별 품질 및 안전도 검사 등이 엄격히 적용되는
공정의 경우에는 각 공정에 따라 품 할증을 별도 가산한다. | | + + +[주] +작업의 중요도가 높거나 특별 시방에 따라 특수한 기술과 안전관리가 필요한 작업(원자력 발전소 등)에 적용한다. + +3\. 기타 + +| 구분 | 적용조건 | 할증 | +|---|---|---| +| 기타 | - 작업공간의 협소(작업간섭)
- 동일장소에서 수종의 장비가동
- 소음·진동 발생
- 위험 발생 | 50% | +| | - 원거리, 계속이동작업, 분산작업 등 이동시간 과다발생 | 50% | + + +[주] +① 현장 조건에 따라 작업능력 저하가 발생하는 경우에 적용한다. +② 1개 이상의 적용조건이 발생하는 경우 개별 할증을 중복 가산하지 않으며, 현장 전반의 작업환경을 종합적으로 고려하여 할증율을 적용한다. +③ 이동으로 인한 작업시간 손실이 1시간 이내의 경우는 할증을 적용하지 않는다. +④ 작업환경에 따라 작업시간 감소가 예상되는 경우 ‘1-4-6 작업제한/작업시간제한’ 할증율 참고하여 적용한다. diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-05_기타.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-05_기타.md index 92c8bd08..9ef1c44b 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-05_기타.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/1-05_기타.md @@ -5,10 +5,105 @@ PDF쪽: 87~89 인쇄쪽: 31~33 시작표지: 1-5 기타 끝표지: 제2장 가설공사 -상태: 대기 -작성: +상태: 검증대기 +작성: sub_laptop_1 검증: 원천: 글자층 -기계검사: +기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 확정지문: --- + +## 1-5 기타 + +### 1-5-1 품질관리비('04, '06, '11, '14년 보완) + +1\. 건설공사의 품질관리에 필요한 비용은 건설기술진흥법 제56조제1항의 규정에 따라 공사금액에 계상하여야 한다. +2\. 품질관리비는 동법시행규칙 제53조제1항에서 규정하고 있는바와 같이 품질관리계획 또는 품질시험계획에 따른 품질관리활동에 필요한 비용을 말한다. + +[참고] +건설공사의 품질관리 시험비 계상시 건설기술진흥법 시행규칙에 명시되지 않은 것으로 고려할 사항은 시험시공비, 특수시험비(수압시험, X-Ray시험 등) 특수공종의 측량 및 규격검측비 등이 있다. + +### 1-5-2 산업안전보건관리비('04, '06, '12, '20, '23년 보완) + +1\. 건설공사현장에서 산업재해 예방에 필요한 비용인 산업안전보건관리비는 산업안전보건법 제72조제1항의 규정에 의거 공사금액에 계상하여야 한다. +2\. 공사금액에 계상된 산업안전보건관리비는 고용노동부가 고시한 “건설업 산업안전보건관리비 계상 및 사용기준”에 따라 사용하여야 한다. +3\. 산업안전보건기준에관한규칙 제146조 및 제241조의2에서 정하고 있는 타워크레인 신호업무 담당자, 화재감시자의 인건비는 공사도급 내역서에 반영한다. + +### 1-5-3 산업재해보상 보험료 및 기타('26년 보완) + +1\. 공사원가계산에 있어 간접노무비, 경비, 일반관리비, 이윤과 산업재해보상보험료 및 기타 이와 유사한 사항은 기획재정부 회계예규와 산업재해 보상보험법 등 관계규정에 따른다. +2\. 시공과정에서 필요로 하는 보상비(직접, 간접 및 일시보상 등)는 현장실정에 따라 별도 계상한다. + +### 1-5-4 환경관리비('11, '14, '17, '20년 보완) + +1\. 건설공사에서 환경오염을 방지하고 폐기물을 적정하게 처리하기 위해 필요한 환경보전비ž폐기물처리 및 재활용비 등 환경관리비는 「건설기술진흥법 시행규칙」 제61조의 규정을 따른다. + +2\. 공사현장에서 발생되는 건설폐기물의 일반적인 단위면적당 발생량의 산출은 다음을 참조할 수 있으며, 건축물 해체의 경우는 설계도서에 따라 산출함을 우선으로 한다. + +(단위 : TON/㎡) + +| 구분 | | | 폐
콘크리트류 | 폐
금속류 | 폐
보드류 | 폐
목재류 | 폐합성
수지류 | 혼합
폐기물 | +|---|---|---|---|---|---|---|---|---| +| 신축 | 주거
용 | 단독주택 | 0.03200 | - | 0.00051 | 0.00300 | 0.00174 | 0.00653 | +| | | 아파트 | 0.03561 | - | 0.00066 | 0.00416 | 0.00233 | 0.00874 | +| | 비주
거용 | 철근콘크리트조 | 0.04888 | - | 0.00117 | 0.00141 | 0.00445 | 0.00664 | +| | | 철골조 | 0.02920 | - | 0.00117 | 0.00071 | 0.00167 | 0.00353 | +| | | 철골철근콘크리트조 | 0.04087 | - | 0.00117 | 0.00128 | 0.00167 | 0.00418 | +| 해체 | 주거
용 | 단독주택 | 1.3321 | 0.0010 | - | 0.0968 | 0.0263 | 0.2030 | +| | | 아파트 | 1.4770 | 0.0655 | - | 0.0150 | 0.0261 | 0.1637 | +| | 비주
거용 | 철근콘크리트조 | 1.4028 | 0.0170 | - | 0.0638 | 0.0215 | 0.1348 | +| | | 철골조 | 0.9167 | 0.0550 | - | 0.0194 | 0.0261 | 0.1348 | +| | | 철골철근콘크리트조 | 1.5861 | 0.1220 | - | 0.0018 | 0.0245 | 0.1452 | + + +[주] +① 폐콘크리트류에는 폐콘크리트, 폐아스팔트콘크리트, 폐벽돌, 폐기와 등이 포함되어 있다. +② 폐금속류는 구조물을 구성하는 철골량이 포함되어 있으며, 철골량은 실측에 의하여 별도 산정할 수 있다. +③ 지반 안정화를 위하여 파일 시공을 실시할 경우 (연면적/건축면적)이 20 미만일 경우 15%, 20을 초과할 경우 20%이내에서 폐콘크리트 수량을 증가할 수 있다. +④ 폐기물관리법 및 건설기술진흥법에 따른 공사현장 환경시설 중 진출입로에 세륜 시설을 설치할 경우 개소당 3% 이내에서 폐콘크리트의 수량을 증가 할 수 있다. +⑤ 건축물의 특성, 시공방법 및 공사현장의 여건에 따라 조정하여 사용한다. + +### 1-5-5 안전관리비('04, '06, '11, '14, '23년 보완) + +1\. 건설기술진흥법 제63조의 규정에 따라 건설공사의 안전관리에 필요한 안전관리비를 공사금액에 계상하여야 하며, 이 비용에는 동법 시행규칙 제60조제1항의 규정에 따라 다음과 같은 항목이 포함되어야 한다. +2\. 이 비용은 건설기술진흥법 시행규칙 제60조제2항에서 규정하고 있는 기준에 따라 공사금액에 계상하여야 한다. + +### 1-5-6 사용료 + +1\. 계약에 따른 특허료와 기술료 등에 대한 비용을 계상한다. +2\. 공사에 필요한 경비 중 전력비, 수도광열비, 운반비, 기계경비, 가설비, 시험검사비 등을 계상한다. +3\. 공사용수 + +| 구분 | 단위 | 수량 | +|---|---|---| +| 거푸집씻기 | ㎥/㎡ | 0.04 | +| 콘크리트혼합 및 양생 | ㎥/㎥ | 0.27 | +| 경량콘크리트혼합 및 양생 | ㎥/㎥ | 0.24 | +| 보통벽돌쌓기 | ㎥/1,000매 | 0.18 | +| 돌쌓기모르타르 | ㎥/㎡(표면적) | 0.06 | +| 돌씻기 | ㎥/㎡(표면적) | 0.17 | +| 미장 | ㎥/㎡(표면적) | 0.02 | +| 타일붙임모르타르 | ㎥/㎡(표면적) | 0.01 | +| 타일씻기 | ㎥/㎡(표면적) | 0.013 | +| 잡용수 | ㎥ | 사용량비의 40∼50% | + + +[주] +본 표는 양생에 필요한 물의 양을 포함한 것이다. + +### 1-5-7 현장시공상세도면의 작성('11, '14, '20, '26년 보완) + +1\. 공사의 시공을 위하여 시공상세도면(입체도면 포함)을 작성하는 경우에는 이에 필요한 인건비, 소모품비 등 소요비용을 별도 계상하며, 엔지니어링진흥법 제31조제2항에 따른 「엔지니어링사업대가의 기준」을 적용한다. +2\. 공사진행단계별로 작성할 시공상세도면의 목록은 건설기술진흥법 시행규칙 제42조 규정에 의하여 발주청에서 공사시방서에 명시하여야한다. + +### 1-5-8 종합시운전 및 조정비 + +공사완공 후 각 기기의 단독시운전이 끝난 다음에 장치나 설비 전체의 종합적인 시운전 및 조정을 위하여 필요한 품 및 비용은 별도 계상한다. + +### 1-5-9 시공측량비('22년 신설) + +시공 중 발생되는 측량(시공 전 측량, 시공 측량, 준공 측량 등)은 필요 시 별도 계상한다. 다만, 품셈의 각 항목에 측량이 포함 또는 표시되어 있는 것에 대하여는 제외한다. + +### 1-5-10 표준품셈 보완실사('26년 보완) + +품을 신설 또는 개정하기 위하여 항목을 배정받은 실사기관에서는 대상공사에 대하여 실사에 소요되는 조사자의 인건비, 소모품비 등 소요비용을 설계에 반영한다. diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/pic/1-02_1.png b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/01_공통부문/제01장_적용기준/pic/1-02_1.png new file mode 100644 index 0000000000000000000000000000000000000000..78447617d528fb1624441df0cbcbf979c3ec2b29 GIT binary patch literal 36802 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 Date: Sat, 19 Sep 2026 03:31:07 +0900 Subject: [PATCH 3/5] =?UTF-8?q?knowledge(=ED=92=88=EC=85=88md):=20?= =?UTF-8?q?=EA=B1=B4=EC=84=A4=20=EC=A7=91=EA=B8=B0=20=E2=80=94=200-00=5F?= =?UTF-8?q?=EC=9E=A5=EB=A8=B8=EB=A6=AC,=209-01=5F=EA=B8=B0=EC=A4=80?= =?UTF-8?q?=EC=A0=90=5F=EC=B8=A1=EB=9F=89,=209-02=5F=EC=88=98=EC=A4=80?= =?UTF-8?q?=EC=B8=A1=EB=9F=89,=209-03=5F=EC=A7=80=ED=98=95=5F=EB=B0=8F=5F?= =?UTF-8?q?=ED=86=A0=EC=A7=80=EC=B8=A1=EB=9F=89,=209-04=5F=EB=85=B8?= =?UTF-8?q?=EC=84=A0=EC=B8=A1=EB=9F=89=20(=EC=9E=91=EC=84=B1=20sub=5Flapto?= =?UTF-8?q?p=5F4=20=C2=B7=20=EC=9E=91=EC=84=B1=EC=A4=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_0145cr1DMC5Ft8fouQSXtp69 --- .../본문/02_토목부문/제09장_측량/0-00_장머리.md | 4 ++-- .../본문/02_토목부문/제09장_측량/9-01_기준점_측량.md | 4 ++-- .../본문/02_토목부문/제09장_측량/9-02_수준측량.md | 4 ++-- .../본문/02_토목부문/제09장_측량/9-03_지형_및_토지측량.md | 4 ++-- .../본문/02_토목부문/제09장_측량/9-04_노선측량.md | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/0-00_장머리.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/0-00_장머리.md index 3ac9a077..e5df2eb1 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/0-00_장머리.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/0-00_장머리.md @@ -5,8 +5,8 @@ PDF쪽: 463 인쇄쪽: 407 시작표지: 제9장 측량 끝표지: 9-1 기준점 측량 -상태: 대기 -작성: +상태: 작성중 +작성: sub_laptop_4 검증: 원천: 글자층 기계검사: diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-01_기준점_측량.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-01_기준점_측량.md index 73e23966..53edbe64 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-01_기준점_측량.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-01_기준점_측량.md @@ -5,8 +5,8 @@ PDF쪽: 463~469 인쇄쪽: 407~413 시작표지: 9-1 기준점 측량 끝표지: 9-2 수준측량 -상태: 대기 -작성: +상태: 작성중 +작성: sub_laptop_4 검증: 원천: 글자층 기계검사: diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-02_수준측량.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-02_수준측량.md index 6294bc6b..673f0297 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-02_수준측량.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-02_수준측량.md @@ -5,8 +5,8 @@ PDF쪽: 470~487 인쇄쪽: 414~431 시작표지: 9-2 수준측량 끝표지: 9-3 지형 및 토지측량 -상태: 대기 -작성: +상태: 작성중 +작성: sub_laptop_4 검증: 원천: 글자층 기계검사: diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-03_지형_및_토지측량.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-03_지형_및_토지측량.md index c0d154ee..e16df0e8 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-03_지형_및_토지측량.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-03_지형_및_토지측량.md @@ -5,8 +5,8 @@ PDF쪽: 488~509 인쇄쪽: 432~453 시작표지: 9-3 지형 및 토지측량 끝표지: 9-4 노선측량 -상태: 대기 -작성: +상태: 작성중 +작성: sub_laptop_4 검증: 원천: 글자층 기계검사: diff --git a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-04_노선측량.md b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-04_노선측량.md index e30bcc42..0a12112c 100644 --- a/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-04_노선측량.md +++ b/resources/knowledge/original/원가계산/건설공사_표준품셈/본문/02_토목부문/제09장_측량/9-04_노선측량.md @@ -5,8 +5,8 @@ PDF쪽: 509~519 인쇄쪽: 453~463 시작표지: 9-4 노선측량 끝표지: 9-5 지도제작 -상태: 대기 -작성: +상태: 작성중 +작성: sub_laptop_4 검증: 원천: 글자층 기계검사: From 216229627245afa69aee46aa381077953bc8177c Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 19 Sep 2026 03:31:20 +0900 Subject: [PATCH 4/5] =?UTF-8?q?knowledge(=ED=92=88=EC=85=88md):=20?= =?UTF-8?q?=EC=82=B0=EB=A6=BC=2012=EC=9E=A5=2012-04=5F=ED=95=A9=ED=8C=90?= =?UTF-8?q?=EA=B1=B0=ED=91=B8=EC=A7=91=20=EA=B2=80=EC=A6=9D=20=ED=99=95?= =?UTF-8?q?=EC=A0=95=20=E2=80=94=20=EB=B0=98=EB=A0=A4=EB=B6=84=20=EC=9E=AC?= =?UTF-8?q?=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../본문/제12장_철근콘크리트/12-04_합판거푸집.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-04_합판거푸집.md b/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-04_합판거푸집.md index fb9a2afa..978148ab 100644 --- a/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-04_합판거푸집.md +++ b/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-04_합판거푸집.md @@ -5,12 +5,12 @@ PDF쪽: 172~173 인쇄쪽: 160~161 시작표지: 12-4. 합판거푸집 끝표지: 12-5. 문양거푸집(0~7m) -상태: 검증대기 +상태: 확정 작성: sub_desktop_1 -검증: +검증: main_desktop_1 원천: 글자층 기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 -확정지문: +확정지문: 861ec358ebc064ec06c5b1e9ecd396c9b206101802d0d844a59aaa978eb79e89 --- ## 12-4. 합판거푸집 From 755a59a7e90d08c67c812c69a5d8d065845b808b Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sat, 19 Sep 2026 03:31:21 +0900 Subject: [PATCH 5/5] =?UTF-8?q?knowledge(=ED=92=88=EC=85=88md):=20?= =?UTF-8?q?=EC=82=B0=EB=A6=BC=2012=EC=9E=A5=2012-08=5F=EC=BD=98=ED=81=AC?= =?UTF-8?q?=EB=A6=AC=ED=8A=B8=5F=ED=8F=AC=EC=9E=A5=5F=EA=B1=B0=ED=91=B8?= =?UTF-8?q?=EC=A7=91=20=EA=B2=80=EC=A6=9D=20=ED=99=95=EC=A0=95=20=E2=80=94?= =?UTF-8?q?=20=EB=B0=98=EB=A0=A4=EB=B6=84=20=EC=9E=AC=EA=B2=80=EC=A6=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../본문/제12장_철근콘크리트/12-08_콘크리트_포장_거푸집.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-08_콘크리트_포장_거푸집.md b/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-08_콘크리트_포장_거푸집.md index 9fd95f3a..dc9a9e27 100644 --- a/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-08_콘크리트_포장_거푸집.md +++ b/resources/knowledge/original/원가계산/산림_표준품셈/본문/제12장_철근콘크리트/12-08_콘크리트_포장_거푸집.md @@ -5,12 +5,12 @@ PDF쪽: 174 인쇄쪽: 162 시작표지: 12-8. 콘크리트 포장 거푸집 끝표지: 12-9. 측구 -상태: 검증대기 +상태: 확정 작성: sub_desktop_1 -검증: +검증: main_desktop_1 원천: 글자층 기계검사: 통과 · ①수 결손 0 허구 0 · ②글자 빠짐 0 더함 0 -확정지문: +확정지문: 22fa855f6166a21bd01eb7e0aa37619d9d23cf7f21c184d1a3247e3c38dd7335 --- ## 12-8. 콘크리트 포장 거푸집