diff --git a/M01_MasterData/M01_MasterData_Api_Fetch.ts b/M01_MasterData/M01_MasterData_Api_Fetch.ts index 9ce08993..156930c0 100644 --- a/M01_MasterData/M01_MasterData_Api_Fetch.ts +++ b/M01_MasterData/M01_MasterData_Api_Fetch.ts @@ -23,7 +23,7 @@ export interface FileInfo { version: string; } -/** 하위 거름 한 갈래 — 인력 「구분」 · 기계 「세부분류」 · 장 그룹은 원문+부문(서버가 모음). */ +/** 하위 거름 한 갈래 — 인력·기계 모두 「구분」 · 장 그룹은 원문+부문(서버가 모음). */ export interface SubInfo { name: string; book: string | null; @@ -41,6 +41,13 @@ export interface RowsPage { refs: Record; } +/** 소요량·계수 표의 용도 — 공종(원문 절 이름) · 대상(인력 · 기계 · 재료 · 할증 · 환산 · 작업량 조건) · 이 표를 쓰는 로직 키. */ +export interface TableUsage { + 공종: string; + 대상: string[]; + 로직키: string[]; +} + export interface TableHead { file: string; 키: string; @@ -133,7 +140,8 @@ export const fetchTables = ( q: string, page: number, size: number, -): Promise => get("/tables", { group, sub, detail, q, page, size }); + usage = "", +): Promise => get("/tables", { group, sub, detail, q, page, size, usage }); export const fetchTable = ( file: string, diff --git a/M01_MasterData/M01_MasterData_Router.py b/M01_MasterData/M01_MasterData_Router.py index 0c9c1a5a..e14d61ff 100644 --- a/M01_MasterData/M01_MasterData_Router.py +++ b/M01_MasterData/M01_MasterData_Router.py @@ -95,8 +95,9 @@ def get_tables( q: str = "", page: int = 1, size: int = 30, + usage: str = "", ) -> dict: - return _call(store.tables, file, group, sub, detail, q, page, size) + return _call(store.tables, file, group, sub, detail, q, page, size, usage) @router.get("/table") diff --git a/M01_MasterData/M01_MasterData_Store.py b/M01_MasterData/M01_MasterData_Store.py index 64ef679a..3ec32d1e 100644 --- a/M01_MasterData/M01_MasterData_Store.py +++ b/M01_MasterData/M01_MasterData_Store.py @@ -135,7 +135,8 @@ _STATES = ("공표", "산정", "미공표", "미확보", "추정") # 인력 「 def subs(file: str = "", group: str = "") -> dict: - """하위 거름 목록 — 한 테이블 파일은 머리 묶음(인력 「구분」 · 기계 「원문」) · + """하위 거름 목록 — 한 테이블 파일은 머리 묶음(인력 · 기계 모두 「구분」 → 「상세구분」 · + 기계는 「원문」(건설품셈 · 산림품셈)도 머리에 있으나 「구분」 이 우선) · 장 그룹(소요량 · 계수 · 로직)은 장 파일에서 모음(구분 = 원문 + 부문 · 상세구분 = 장 · 차례대로).""" if group: if group not in cm.mf.GROUPS: @@ -189,9 +190,9 @@ def rows( ) -> dict: data, version = read(file) hits = [r for r in data.get(items_key(data)) or [] if _hit(r, q)] - if sub: # 인력 구분 · 기계 원문 + if sub: # 인력·기계 구분(우선) · 기계 원문(책)도 받음 hits = [r for r in hits if sub in {r.get(s) for s in cm.MERGED.values()}] - if detail: # 인력 상세구분 + if detail: # 인력 상세구분 · 기계 상세구분(기종) hits = [r for r in hits if r.get("상세구분") == detail] if state: # 인력 상태 hits = [r for r in hits if r.get("상태") == state] @@ -232,8 +233,10 @@ def tables( q: str = "", page: int = 1, size: int = 30, + usage: str = "", ) -> dict: - """표 목록 — 파일 하나 또는 그룹 전체(구분 · 상세구분 · 찾기로 거름 · 장 차례대로 · 쪽 나눔).""" + """표 목록 — 파일 하나 또는 그룹 전체(구분 · 상세구분 · 용도 대상 · 찾기로 거름 · 장 차례대로 · 쪽 나눔). + `usage` = 용도.대상(인력 · 기계 · 재료 · 할증 · 환산 · 작업량 조건) 하나.""" if file: names = [file] elif group in cm.mf.TABLE_GROUPS: @@ -250,6 +253,8 @@ def tables( continue if detail and t.get("상세구분") != detail: continue + if usage and usage not in ((t.get("용도") or {}).get("대상") or []): + continue if _hit(t, q): hits.append( { diff --git a/M01_MasterData/M01_MasterData_UI_Side.ts b/M01_MasterData/M01_MasterData_UI_Side.ts index f3361854..68d7e46e 100644 --- a/M01_MasterData/M01_MasterData_UI_Side.ts +++ b/M01_MasterData/M01_MasterData_UI_Side.ts @@ -11,10 +11,11 @@ import { t as L } from "@ui/ui_template_locale"; import { fetchFiles, fetchSubsAll, type FileInfo, type SubInfo } from "./M01_MasterData_Api_Fetch"; import { renderTree, type MakeRow } from "./M01_MasterData_UI_Tree"; -/** 컨테이너마다 기억하는 화면 상태 — 찾기 글 · 쪽 (거름은 `m01.filter.*`) */ +/** 컨테이너마다 기억하는 화면 상태 — 찾기 글 · 쪽 · 소요량·계수 표의 용도 대상 거름 (거름은 `m01.filter.*`) */ export interface View { q: string; page: number; + usage?: string; } const viewKey = (group: string): string => `m01.view.${group}`; @@ -262,7 +263,7 @@ export function buildSide( const one = files[0]; const dropped: Partial> = { 인력: { label: L("M01_LaborSub"), detail: L("M01_LaborDetail") }, - 기계: { label: L("M01_MachineSub") }, + 기계: { label: L("M01_MachineSub"), detail: L("M01_MachineDetail") }, 소요량: { label: L("M01_LaborSub"), detail: L("M01_LaborDetail") }, 계수: { label: L("M01_LaborSub"), detail: L("M01_LaborDetail") }, }; diff --git a/M01_MasterData/M01_MasterData_UI_Style.css b/M01_MasterData/M01_MasterData_UI_Style.css index 1a518c44..53dd4bc5 100644 --- a/M01_MasterData/M01_MasterData_UI_Style.css +++ b/M01_MasterData/M01_MasterData_UI_Style.css @@ -101,7 +101,8 @@ } .m01-master__head, -.m01-master__bar { +.m01-master__bar, +.m01-master__filter { display: flex; flex-wrap: wrap; align-items: center; diff --git a/M01_MasterData/M01_MasterData_UI_Tables.ts b/M01_MasterData/M01_MasterData_UI_Tables.ts index 394899a4..300af822 100644 --- a/M01_MasterData/M01_MasterData_UI_Tables.ts +++ b/M01_MasterData/M01_MasterData_UI_Tables.ts @@ -4,9 +4,15 @@ * → 표 하나(조건 칸 + 값 칸의 긴 줄) · 눌러 고침(노랑) · 줄 더하기·지우기 * ========================================================================== */ -import { createButton, el, showToast } from "@ui/ui_template_elements"; +import { createButton, createSelectField, el, showToast } from "@ui/ui_template_elements"; import { t as L } from "@ui/ui_template_locale"; -import { fetchTable, fetchTables, type Row, type TableHead } from "./M01_MasterData_Api_Fetch"; +import { + fetchTable, + fetchTables, + type Row, + type TableHead, + type TableUsage, +} from "./M01_MasterData_Api_Fetch"; import { saveView, type Pick } from "./M01_MasterData_UI_Side"; import { onDraftChange, @@ -27,16 +33,31 @@ import { const LIST_SIZE = 30; const LIST_COLS = ["키", "원문번호", "구분", "상세구분", "이름", "기준", "출처", "비고"] as const; +/** 용도 대상 거름 드롭다운 후보 — PLAN 1-1 셋째 줄 그대로. */ +const USAGE_TARGETS = ["인력", "기계", "재료", "할증", "환산", "작업량 조건"]; /** 돌려받은 함수 = 이 화면을 걷을 때 부를 해제. */ export function renderTables(host: HTMLElement, pick: Pick, q: string): () => void { let stop = (): void => {}; + let usage = pick.view?.usage ?? ""; const list = (page = pick.view?.page ?? 1): void => { stop(); stop = (): void => {}; - void showList(host, pick, q, page, (file, key) => { - stop = openTable(host, file, key, () => list(page)); - }); + void showList( + host, + pick, + q, + usage, + page, + (file, key) => { + stop = openTable(host, file, key, () => list(page)); + }, + (next) => { + usage = next; + saveView(pick.group, { usage, page: 1 }); + list(1); + }, + ); }; list(); const off = onDraftChange(() => host.querySelector(".m01-master__tables") && markChanged(host)); @@ -58,17 +79,19 @@ async function showList( host: HTMLElement, pick: Pick, q: string, + usage: string, page: number, open: (file: string, key: string) => void, + onUsageChange: (usage: string) => void, ): Promise { let got: { total: number; tables: TableHead[] }; try { - got = await fetchTables(pick.group, pick.sub, pick.detail, q, page, LIST_SIZE); + got = await fetchTables(pick.group, pick.sub, pick.detail, q, page, LIST_SIZE, usage); } catch (error) { showToast(error instanceof Error ? error.message : L("M01_LoadFailed"), "error"); return; } - saveView(pick.group, { page }); + saveView(pick.group, { page, usage }); const rows = got.tables.map((t) => { const tr = el("tr", { className: "m01-master__table-row", @@ -81,8 +104,24 @@ async function showList( tr.addEventListener("click", () => open(t.file, t.키)); return tr; }); + const usageField = createSelectField({ + options: [ + { value: "", text: L("M01_All") }, + ...USAGE_TARGETS.map((v) => ({ value: v, text: v })), + ], + value: usage, + compact: true, + label: L("M01_UsageTarget"), + }); + usageField.select.addEventListener("change", () => onUsageChange(usageField.select.value)); host.replaceChildren( - buildPager(got.total, LIST_SIZE, page, (p) => void showList(host, pick, q, p, open)), + el("div", { className: "m01-master__filter", children: [usageField.root] }), + buildPager( + got.total, + LIST_SIZE, + page, + (p) => void showList(host, pick, q, usage, p, open, onUsageChange), + ), el("div", { className: "m01-master__grid-wrap m01-master__tables", children: [ @@ -169,6 +208,7 @@ function openTable(host: HTMLElement, file: string, key: string, back: () => voi const notes = ((table.주 ?? []) as string[]).map((n) => el("p", { className: "m01-master__muted", text: n }), ); + const usage = table.용도 as TableUsage | undefined; host.replaceChildren( el("div", { className: "m01-master__bar", @@ -179,6 +219,17 @@ function openTable(host: HTMLElement, file: string, key: string, back: () => voi className: "m01-master__muted", text: `${key} · ${table.기준 || "—"} · ${table.출처 || ""}`, }), + ...(usage + ? [ + el("span", { + className: "m01-master__muted", + attrs: { title: usage.로직키.join(", ") }, + text: `${L("M01_TableUsage")}: ${usage.공종} · ${usage.대상.join(", ")} · ${L( + "M01_TableUsageLogicCount", + ).replace("{value}", String(usage.로직키.length))}`, + }), + ] + : []), add, ], }), diff --git a/resources/knowledge/original/원가계산/자재단가/_meta.md b/resources/knowledge/original/원가계산/자재단가/_meta.md index 043ed3ec..669db84a 100644 --- a/resources/knowledge/original/원가계산/자재단가/_meta.md +++ b/resources/knowledge/original/원가계산/자재단가/_meta.md @@ -19,3 +19,10 @@ | 유료 물가지 (실무 관측: 물가정보·물가자료 중심) | 유료 구독 | 월간 | 미결정 — 실무 실측상 공사당 사급 잡자재 15종 내외만 의존 ([원가_기초데이터_원천 §5](../../../technical_info/01_임도/05_원가정보/원가_기초데이터_원천.md)) | - 사용 방식·내역서 반영: [원가_기초데이터_원천 §4](../../../technical_info/01_임도/05_원가정보/원가_기초데이터_원천.md) + +## 공공출처 원문 (2026-09-20) + +| 폴더 | 내용 | +|---|---| +| 조달청_시설자재/ | 조달청 시설공사 자료실 「21년 하반기 시설자재 가격정보공개」 첨부 zip (게시 2021-09-24) | +| 경남교육청_일위대가/ | 2026년도 경상남도교육청 일위대가 xlsx 2개 (게시 2026-03-24 · 공공누리 상업적 이용금지·변경금지) | diff --git a/resources/knowledge/original/원가계산/자재단가/경남교육청_일위대가/일위대가_1.xlsx b/resources/knowledge/original/원가계산/자재단가/경남교육청_일위대가/일위대가_1.xlsx new file mode 100644 index 00000000..649ea3a2 Binary files /dev/null and b/resources/knowledge/original/원가계산/자재단가/경남교육청_일위대가/일위대가_1.xlsx differ diff --git a/resources/knowledge/original/원가계산/자재단가/경남교육청_일위대가/일위대가_2.xlsx b/resources/knowledge/original/원가계산/자재단가/경남교육청_일위대가/일위대가_2.xlsx new file mode 100644 index 00000000..44bef272 Binary files /dev/null and b/resources/knowledge/original/원가계산/자재단가/경남교육청_일위대가/일위대가_2.xlsx differ diff --git a/resources/knowledge/original/원가계산/자재단가/조달청_시설자재/시설자재가격_21하.zip b/resources/knowledge/original/원가계산/자재단가/조달청_시설자재/시설자재가격_21하.zip new file mode 100644 index 00000000..ef63ec5f Binary files /dev/null and b/resources/knowledge/original/원가계산/자재단가/조달청_시설자재/시설자재가격_21하.zip differ diff --git a/resources/master_data/_화면_계약.md b/resources/master_data/_화면_계약.md index 4e24dbf1..714eb01e 100644 --- a/resources/master_data/_화면_계약.md +++ b/resources/master_data/_화면_계약.md @@ -35,7 +35,7 @@ - `prices` = 호표 `요소` → `{ref, 이름, 규격, 단위, 값}`(단가 자동 칸) · 없는 요소는 `null` · `{이름}` 이 낀 원문번호·하위 로직 줄은 빠짐(계산 때 정해짐). 품셈재료는 `값` = 연결을 따라간 낮은 값(시험 계산용) · `출처` = 그 값의 열(`<자재품목 키>.<열>`) · 자재지역 후보는 `값` null(계산 때 정해짐). - `elements` = 요소 찾기 창 — 그룹 전체에서 `q` 찾기 · `ref` = 식에 넣는 키 · 표형 그룹은 `값칸` 이 옴. - `materials` = 재료 고르기 단계 — 로직 재료 줄 `요소` 가 조건 `{구분, 상세구분, 규격}` 이면 이 API 로 후보(방식 A·B·C 가 부품 `M01_MasterData_UI_Test_Pick.ts` 하나를 같이 씀 · 구분 → 상세구분 → 후보 순으로 좁힘). `값` 이 비어 있어도 후보로 둠. 옛 재료 줄(품셈재료 키)은 품셈재료 이름(없으면 이름 첫 낱말)으로 `pick?kind=price` 후보. 후보 글 = 이름 규격 · 값 있는 열 전부(물가자료 · 유통물가 …). 멈춤 까닭 `입력 「X」 없음` · `맞는 줄 0개` 는 방식 A·B·C 가 쉬운 말로 바꿔 보임(`plainReason`) · 빈 수 칸은 「값을 넣어 주세요」 안내 글. -- 소요량·계수 표의 `용도`({공종, 대상, 로직키}) = 방식 B 원문 표 미리보기 머리에 안내 · 칸이 없으면 안 보임. +- 소요량·계수 표의 `용도`({공종, 대상, 로직키}) = 방식 B 원문 표 미리보기 머리에 안내 · 칸이 없으면 안 보임 · `/tables` 는 `usage` 로 `용도.대상` 거름(기계 `sub`·`detail` 은 인력과 같이 구분 → 상세구분). - `pick` = 고르기 창 — `price` = `재료_자재품목.json`(값 = 값 열 다섯 가운데 낮은 값 · `관급` = 관급 값 있음) ref 키 · `job` = `인력.json` 값 있는 공표 직종(구분 「미확보」 빼고) ref 키. ## 3. 시험 계산 diff --git a/resources/master_data/ref/_검증_로직_변환.md b/resources/master_data/ref/_검증_로직_변환.md new file mode 100644 index 00000000..df28a38c --- /dev/null +++ b/resources/master_data/ref/_검증_로직_변환.md @@ -0,0 +1,24 @@ +# 로직 재료 고르기 변환 검증 (읽기 전용) + +대상 커밋 `1bcc957e`(품셈재료 고르기 칸 · 로직 재료 줄 일괄 변환) 앞뒤 비교 — sub1 참고용. +앞 상태는 `git archive 1bcc957e^ resources/master_data ...` 로 `tmp/pre_master_data/` 에 꺼내 대조(워크트리 안 만듦). + +## ① 통과 수 앞뒤 + +로직 458개 줄 각각에 자동 표본 입력(고르기 입력=첫 후보, 범위 입력=중간값, 그 밖=1) 하나씩 넣어 `mf.run` 실행 — 통과 92 → 95(새로 멈춤 0, 새로 통과 3). 커밋 메시지의 1119 → 1203 은 sub1이 여러 표본 조합으로 돌린 결과로 보임 — 이 검증은 표본 1개뿐이라 수치가 다름(방법 차이, 임의 판정). + +## ② 금액 달라진 로직 + +앞뒤 다 통과한 로직 중 금액(결과 또는 비목 합)이 달라진 것 0건. + +## ③ 고르기 조건인데 후보 0인 줄 + +로직 호표 중 재료 고르기 조건 287줄 — 후보 0인 줄 0건. + +## ④ 호표 단위와 다른 단위의 후보를 집은 줄 + +287줄 중 271줄 — 고르기 후보군에 호표 단위와 다른 단위 섞임(예: GC000319 프라이머 호표단위 kg인데 후보에 ℓ 섞임 · GC000723 플럭스 kg인데 ℓ 섞임). 조건이 구분만 걸리고 상세구분·규격이 안 걸린 경우 후보가 수백 개까지 넓어져 단위가 섞이는 걸로 보임 — 실제 계산은 `pick()`이 대표 줄이나 첫 후보 하나만 쓰므로 당장 금액 오류는 아니나, 조건을 더 좁히면(상세구분·규격 채움) 안전. + +## 확인 범위 + +- 표본 입력 자동 생성(입력마다 값 1개)이라 실제 화면 조작 조합 전부는 아님 — 정적 일관성(③④)과 대표 표본 계산(①②)만. diff --git a/resources/master_data/ref/_검증_재료_공공출처.md b/resources/master_data/ref/_검증_재료_공공출처.md new file mode 100644 index 00000000..c945b2c6 --- /dev/null +++ b/resources/master_data/ref/_검증_재료_공공출처.md @@ -0,0 +1,44 @@ +# 재료 공공출처 검증 + +안티그래비티 조사(ag_a1_raw) 12건을 실제로 열어 대조. 마스터 값은 넣지 않음. + +## 출처별 결과 + +| 출처 | 주소 | 결과 | +|---|---|---| +| 조달청 시설공사 자료실 (21년 하반기) | pps.go.kr/kor/bbs/view.do?bbsSn=2109240002&key=00038 | 열림 · 첨부 zip 받음 · 잡석·유공관 없음 | +| 경상남도교육청 일위대가(건축, 토목) 2026 | gne.go.kr/pr/user/bbs/BD_selectBbs.do?q_bbsSn=1464&q_bbsDocNo=20260324150215893 | 열림 · xlsx 2개 받음 · 값 대조됨 | +| 국가법령정보센터 산림용종묘가격고시 | law.go.kr/행정규칙/산림용종묘가격고시 | 주소 오류페이지 · 내용 못 엶 | + +## 재료별 + +| 재료 | 출처 | 판정 | 받는 법 | 갱신 | +|---|---|---|---|---| +| 합판 | 경남교육청 일위대가 xlsx · 단가대비표 | 확인됨 — 품명 「내수합판, 1급, 12*1220*2440mm」 M2 · 조달청가격 11,268 · 적용 11,287.28 (품명은 「합판 1급」이 아님) | 게시글 첨부 xlsx 내려받기 | 연 1~2회 | +| 각재 | 같음 | 확인됨 — 품명 「각재, 외송」 M3 · 511,929 · 적용 595,808.38 (「미송각재」는 틀림) | 같음 | 같음 | +| 유로폼 | 같음 | 확인됨 — 「건설용거푸집, 강, 600*1200*63.5mm」 매 · 조달청가격 27,075 (적용 29,000) | 같음 | 같음 | +| 강관동바리 | 같음 | 단품 단가 없음(조사 결과 그대로) — 강관동바리 설치·해체 일위대가만 있음 | — | — | +| 비계(강관·클램프) | 같음 | 확인됨 — 「강관비계, 비계파이프, 48.6*2.3mm」 M · 조달청가격 4,037 · 적용 3,850 / 「클램프 고정, 자동」 개 1,590 | 같음 | 같음 | +| 철선 | 같음 | 확인됨 — 「철선, 어닐링, ∮4.0mm」 kg 1,368 | 같음 | 같음 | +| 못 | 같음 | 확인됨 — 「일반못, 50mm」 kg 1,387 | 같음 | 같음 | +| 폼타이 | 같음 | 단품 단가 없음(조사 결과 그대로 · 이쪽에서 확인 안 함) | — | — | +| 유공관 | 조달청 21하 zip | 틀림 — zip 의 xlsx 안에 유공관 없음 (건축 xls 는 안 열었음, 토목 자재라 해당 없음) | — | — | +| 잡석 | 조달청 21하 zip | 틀림 — zip 의 xlsx 안에 잡석 없음 · 조사의 「토목.xlsx R582 16,000원」 없음 · 나라장터 API 스냅샷에도 잡석 0건 | — | — | +| 종자(산림용) | 산림청 고시(국가법령정보센터) | 못 엶 — 주소가 오류페이지 · 314,600 확인 못 함 | 법령센터에서 고시 본문 열람 | 연 1회(조사 주장) | +| 방부목 | — | 단독 공표값 없음(조사 결과 그대로 · 확인 안 함) | — | — | + +## 조달청 시설자재가격 zip 대 나라장터 시설공통자재 + +- 같은 계열 — 「시설공통자재」 토목·건축·기계·전기 4분야 · 조달청 공사원가기준과 · 연 2회 조사. +- 시점 다름 — zip 은 2021 하반기 · 옛 스냅샷(`나라장터_시설공통자재_2026-08-14`)은 고시일 2024-10~2026-04. +- 값 대조는 안 함 — 두 쪽에 겹치는 품목이 잡석·유공관에 없어 판정 못 함. +- 이 게시글은 2021년 것 — 최신 반기 자료는 같은 자료실 다른 글. + +## 이용 조건 + +- 경남교육청 일위대가 = 공공누리 「출처표시 + 상업적 이용금지 + 변경금지」 — 마스터 값으로 쓸 때 조건 확인 필요. + +## 받아 둔 원문 + +- `resources/knowledge/original/원가계산/자재단가/조달청_시설자재/시설자재가격_21하.zip` +- `resources/knowledge/original/원가계산/자재단가/경남교육청_일위대가/일위대가_1.xlsx` (건축) · `일위대가_2.xlsx` (토목) diff --git a/resources/master_data/ref/_없는_재료.md b/resources/master_data/ref/_없는_재료.md index 9725610a..c036c875 100644 --- a/resources/master_data/ref/_없는_재료.md +++ b/resources/master_data/ref/_없는_재료.md @@ -6,116 +6,116 @@ - 「비슷한 이름」 칸 — 이름 글자만 겹친 자재품목 줄(종류·규격이 달라 잇지 않음) - 재료 111 줄 -| 키 | 이름 | 규격 | 단위 | 쓰는 로직 키 | 원문 절 | 비슷한 이름 | -|---|---|---|---|---|---|---| -| MP000012 | 사다리 | ∅19㎜ 아연도금 및 스테인레스 | ton | GF000181 | 산림품셈 12-16 | 맨홀사다리(PE코팅) | -| MP000038 | 지수활제 | | g | GF000173 | 산림품셈 12-11-1 | | -| MP000048 | JOINT FILLER | | ㎡ | GF000197, GF000208 | 산림품셈 12-27-2; 산림품셈 12-34-4 | | -| MP000052 | 스페이셔(몰탈 블록) | | | GF000200 | 산림품셈 12-29 | 스페이셔 | -| MP000055 | 스티로폴 | T=20㎜ | ㎡ | GF000202 | 산림품셈 12-30-2 | | -| MP000056 | TAR PAPER | T=15㎜ | ㎡ | GF000202 | 산림품셈 12-30-2 | | -| MP000057 | 채움재(아스팔트) | | ㎥ | GF000202 | 산림품셈 12-30-2 | 고경도줄눈채움재 | -| MP000060 | 콘크리트 표면 강화재(하드너) | | | GF000209 | 산림품셈 12-35 | | -| MP000065 | 틈메우기돌 | | ㎥ | GF000223 | 산림품셈 13-5-1 주④ | | -| MP000070 | 깃발 | | 개 | GF000081 | 산림품셈 8-6-1 | | -| MP000076 | 피복제 | 화이버/펄프류 | ㎏ | GC000145 | 건설품셈 공통 4-1-3 재료량 | | -| MP000077 | 침식방지안정제 | 합성접착제 | ㎏ | GC000145 | 건설품셈 공통 4-1-3 재료량 | | -| MP000078 | 색소 | 착색제 | ㎏ | GC000145 | 건설품셈 공통 4-1-3 재료량 | | -| MP000082 | 에폭시 | | kg | GC000337 | 건설품셈 토목 1-9-4 낙석방지망 재료(참고자료) | KP 주철직관(2종)-에폭시분체, KP 주철직관(2종)에폭시분체/관급, PFM 줄눈재(에폭시형1K) 외 | -| MP000095 | BASECHANNEL | 두께 2.0㎜ 이상 | m | GC000001 | 건설품셈 공통 2-2-3 주자재 | | -| MP000096 | TOPCHANNEL | 두께 2.0㎜ 이상 | m | GC000001 | 건설품셈 공통 2-2-3 주자재 | | -| MP000101 | 내부PANEL (목재문) | 1,200×2,400㎜ | 매 | GC000001 | 건설품셈 공통 2-2-3 주자재 | | -| MP000113 | 축중계(이동식) | | 대 | GC000003 | 건설품셈 공통 2-2-6 | | -| MP000129 | 보호막 | | ㎡ | GC000061 | 건설품셈 공통 2-10-1 재료량 | | -| MP000134 | 모래주머니 | | 개 | GC000181 | 건설품셈 공통 5-2-1 매트고정 재료량 | | -| MP000139 | HDPE 시트 | 2∼2.5㎜ | ㎡ | GC000197 | 건설품셈 공통 5-4-1 재료량 | | -| MP000144 | 보조강재 | | ㎏ | GC000559 | 건설품셈 건축 1-1-2 | | -| MP000148 | FLUX | | ㎏ | GC000560 | 건설품셈 건축 1-1-4 | | -| MP000150 | 질석 | | ㎏ | GC000573 | 건설품셈 건축 1-4-3 | | -| MP000169 | 정배지 | | ㎡ | GC000618 | 건설품셈 건축 5-3-7 | | -| MP000172 | 알루미늄핀 | | 개 | GC000623 | 건설품셈 건축 5-4-4 | | -| MP000176 | 표준보강메시 | | ㎡ | GC000628 | 건설품셈 건축 5-4-9 | | -| MP000177 | 고강도메시 | | ㎡ | GC000629 | 건설품셈 건축 5-4-9 | | -| MP000201 | 실리콘 | | ㎏ | GC000752 | 건설품셈 기계설비 2-2-6 | 실리콘실란트, 실리콘접착제, 컬러강판(실리콘수지) 외 | -| MP000209 | 버너 | 압접가열용 | 개 | GC000360 | 건설품셈 토목 4-5-1 가스압접 소모재료(참고자료) | 개장로용 가스버너, 버너응급시스템, 재연소로버너(분리형) 외 | -| MP000210 | 노즐 | 압접버너용 | 개 | GC000360 | 건설품셈 토목 4-5-1 가스압접 소모재료(참고자료) | | -| MP000211 | 테르밋용재 | 점화용 | 포 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | | -| MP000212 | 몰드 | 테르밋 용접용 | 개 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | | -| MP000213 | 골무 | 테르밋 용접용 | 개 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | 식생축조블록 500(골무늬) | -| MP000214 | 퓨즈 | 테르밋 용접용 | 개 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | 고리퓨즈, 전선퓨즈(켓치홀드), 통형퓨즈 | -| MP000216 | 철구(Shot ball) | | ㎏ | GC000375, GC000822 | 건설품셈 토목 5-2-1 소재 표면처리; 건설품셈 기계설비 9-2-1 | 철구조물(과속), 철구조물(신호) | -| MP000218 | 철편(Grit) | | ㎏ | GC000376 | 건설품셈 토목 5-2-2 제품 표면처리 | | -| MP000220 | 동력 Brush | | 개 | GC000822 | 건설품셈 기계설비 9-2-1 | | -| MP000221 | Wire Brush | | 개 | GC000822, GC000993 | 건설품셈 기계설비 9-2-1; 건설품셈 기계설비 13-11-5 | | -| MP000223 | 컴파운드 | | g | GC000855, GC000859 | 건설품셈 기계설비 11-1-3; 건설품셈 기계설비 11-3-3 | | -| MP000235 | 슈 | 표준관입시험용 | 개 | GC000433 | 건설품셈 토목 8-2-1 | | -| MP000239 | 베인 전용로드 | ø16×750 | 본 | GC000435 | 건설품셈 토목 8-2-2 | | -| MP000240 | 로드 | ø40.5×1m | 본 | GC000435 | 건설품셈 토목 8-2-2 | | -| MP000241 | 표준사 | 평판재하시험용 | ㎏ | GC000436 | 건설품셈 토목 8-2-4 | | -| MP000242 | 단독콘 | 정재하시험용 | 개 | GC000438 | 건설품셈 토목 8-2-6 | | -| MP000250 | Lagging Sheet | | ㎡ | GC000901 | 건설품셈 기계설비 13-3-1 | | -| MP000253 | 코크스 | | ㎏ | GC000931, GC000932, GC000935, GC000936 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2; 건설품셈 기계설비 13-6-4 | | -| MP000254 | Sand Paper | 각종 | Sh | GC000931 | 건설품셈 기계설비 13-6-1 | | -| MP000255 | 여과기 | 14"×14〃 | Sh | GC000931 | 건설품셈 기계설비 13-6-1 | | -| MP000257 | 세유 | C-3 | ℓ | GC000931 | 건설품셈 기계설비 13-6-1 | | -| MP000258 | Grease | | ㎏ | GC000931, GC000932, GC000986, GC000993 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2; 건설품셈 기계설비 13-10-2; 건설품셈 기계설비 13-11-5 | | -| MP000259 | Machine oil | | ℓ | GC000931, GC000932, GC000986 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2; 건설품셈 기계설비 13-10-2 | | -| MP000260 | Gasoline | | ℓ | GC000931, GC000932 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2 | | -| MP000261 | Galvanized wire | #8∼#16 | ㎏ | GC000931, GC000932 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2 | | -| MP000262 | Grinding Wheel | 8"ø×25m/m t | EA | GC000931 | 건설품셈 기계설비 13-6-1 | | -| MP000265 | 보일유 | | ℓ | GC000931, GC000932 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2 | | -| MP000269 | 세유 | 0∼3 | ℓ | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000271 | Wire brush | 각종 3/8∼1.6" | EA | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000272 | Hack saw blade | 12" | EA | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000273 | Drill | 1.6ø∼3.8ø | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000274 | Grinder wheel | 8"ø∼25m/m t | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000275 | File | 각종 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000276 | Oil stone | 각종(황, 중, 세) | Sh | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000280 | Sand Paper | | Sh | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000281 | 광목 | | m | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000285 | 땜납 | 50 : 50 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | 봉땜납 | -| MP000286 | 붕사 | | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000287 | Compound | 절연용 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000288 | 3-Bond | 밀착제 No.2 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | -| MP000290 | Nozzle | | 개 | GC000933, GC000934, GC000938 | 건설품셈 기계설비 13-6-3; 건설품셈 기계설비 13-6-6 | | -| MP000293 | 세유 | | ℓ | GC000939, GC000986, GC000993 | 건설품셈 기계설비 13-6-7; 건설품셈 기계설비 13-10-2; 건설품셈 기계설비 13-11-5 | | -| MP000294 | 전기용접 | | ㎏ | GC000940 | 건설품셈 기계설비 13-6-8 | | -| MP000295 | 탄소봉 | | 본 | GC000940 | 건설품셈 기계설비 13-6-8 | | -| MP000296 | Grinder | 12"ø | 개 | GC000940 | 건설품셈 기계설비 13-6-8 | | -| MP000297 | 돌 | 65×305 | 매 | GC000940 | 건설품셈 기계설비 13-6-8 | | -| MP000298 | Film | 2회 | ㎏ | GC000940 | 건설품셈 기계설비 13-6-8 | FILM CASSETTE | -| MP000299 | 탄소봉 | 8ø×350㎜ | 본 | GC000941, GC000942 | 건설품셈 기계설비 13-6-9; 건설품셈 기계설비 13-6-10 | | -| MP000301 | 노즐 | | 개 | GC000941, GC000943, GC000948 | 건설품셈 기계설비 13-6-9; 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | -| MP000302 | 탈에폭시레신 | | ℓ | GC000941 | 건설품셈 기계설비 13-6-9 | | -| MP000303 | 그라인더돌 | 12"ø | 개 | GC000942, GC000943, GC000948 | 건설품셈 기계설비 13-6-10; 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | -| MP000304 | Film | 65×305 | 매 | GC000942 | 건설품셈 기계설비 13-6-10 | FILM CASSETTE | -| MP000305 | Tar epoxy | | ℓ | GC000942 | 건설품셈 기계설비 13-6-10 | | -| MP000306 | 마린B/T(선박도로용) | | ℓ | GC000942 | 건설품셈 기계설비 13-6-10 | | -| MP000308 | Zinc primer | 15μ | ㎏ | GC000943, GC000948 | 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | -| MP000309 | Tar Epoxy | 125μ | ㎾h | GC000943, GC000948 | 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | -| MP000310 | Tar Epoxy | 2회 | ℓ | GC000944 | 건설품셈 기계설비 13-6-12 | | -| MP000314 | drill | 1/4" | 개 | GC000947 | 건설품셈 기계설비 13-6-15 | | -| MP000315 | drill | 11/15" | 개 | GC000947 | 건설품셈 기계설비 13-6-15 | | -| MP000319 | Tar Epoxy | 1회도장 | ℓ | GC000950 | 건설품셈 기계설비 13-6-16 | | -| MP000325 | M/C OIL | | ℓ | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000326 | Grinder Wheel | | 매 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000327 | Oil Stone | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000328 | File | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000330 | Drill | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000334 | Compound | | ㎏ | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000335 | 3-Bond | | ㎏ | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000336 | Seal Tape | | 통 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000337 | 백묵 | | 통 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000338 | 석필 | | 통 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000340 | 흑 Welder Glass | | 연 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000341 | 백 Welder Glass | | 연 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000342 | 오스터날 | | SET | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000343 | 탭 | | SET | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000344 | 다이스 | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000345 | 정 | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000349 | Center Punch | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000351 | 대강 | | ㎏ | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000352 | 유지 | | ℓ | GC000993 | 건설품셈 기계설비 13-11-5 | 섬유지(마감용), 섬유지(보강용) | -| MP000353 | Washer | | 매 | GC000993 | 건설품셈 기계설비 13-11-5 | | -| MP000359 | 중유 | | ℓ | GC000941, GC000943, GC000948 | 건설품셈 기계설비 13-6-9; 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | 박 리 제(중유) | -| MP000363 | 아스팔트싱글 | 336×1,000×3㎜ | 매 | GC000654 | 건설품셈 건축 7-1-5 | | +| 키 | 이름 | 규격 | 단위 | 쓰는 로직 키 | 원문 절 | 비슷한 이름 | 조달청 | +|---|---|---|---|---|---|---|---| +| MP000012 | 사다리 | ∅19㎜ 아연도금 및 스테인레스 | ton | GF000181 | 산림품셈 12-16 | 맨홀사다리(PE코팅) | 조달청에 없음(2026-09-20 조회) | +| MP000038 | 지수활제 | | g | GF000173 | 산림품셈 12-11-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000048 | JOINT FILLER | | ㎡ | GF000197, GF000208 | 산림품셈 12-27-2; 산림품셈 12-34-4 | | 조달청에 없음(2026-09-20 조회) | +| MP000052 | 스페이셔(몰탈 블록) | | | GF000200 | 산림품셈 12-29 | 스페이셔 | 조달청에 없음(2026-09-20 조회) | +| MP000055 | 스티로폴 | T=20㎜ | ㎡ | GF000202 | 산림품셈 12-30-2 | | 조달청에 없음(2026-09-20 조회) · 발포폴리스티렌 2줄은 단위·규격이 달라 안 넣음 | +| MP000056 | TAR PAPER | T=15㎜ | ㎡ | GF000202 | 산림품셈 12-30-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000057 | 채움재(아스팔트) | | ㎥ | GF000202 | 산림품셈 12-30-2 | 고경도줄눈채움재 | 조달청에 없음(2026-09-20 조회) | +| MP000060 | 콘크리트 표면 강화재(하드너) | | | GF000209 | 산림품셈 12-35 | | 조달청에 없음(2026-09-20 조회) | +| MP000065 | 틈메우기돌 | | ㎥ | GF000223 | 산림품셈 13-5-1 주④ | | 조달청에 없음(2026-09-20 조회) | +| MP000070 | 깃발 | | 개 | GF000081 | 산림품셈 8-6-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000076 | 피복제 | 화이버/펄프류 | ㎏ | GC000145 | 건설품셈 공통 4-1-3 재료량 | | 조달청에 없음(2026-09-20 조회) | +| MP000077 | 침식방지안정제 | 합성접착제 | ㎏ | GC000145 | 건설품셈 공통 4-1-3 재료량 | | 조달청에 없음(2026-09-20 조회) | +| MP000078 | 색소 | 착색제 | ㎏ | GC000145 | 건설품셈 공통 4-1-3 재료량 | | 조달청에 없음(2026-09-20 조회) | +| MP000082 | 에폭시 | | kg | GC000337 | 건설품셈 토목 1-9-4 낙석방지망 재료(참고자료) | KP 주철직관(2종)-에폭시분체, KP 주철직관(2종)에폭시분체/관급, PFM 줄눈재(에폭시형1K) 외 | 조달청에 없음(2026-09-20 조회) | +| MP000095 | BASECHANNEL | 두께 2.0㎜ 이상 | m | GC000001 | 건설품셈 공통 2-2-3 주자재 | | 조달청에 없음(2026-09-20 조회) | +| MP000096 | TOPCHANNEL | 두께 2.0㎜ 이상 | m | GC000001 | 건설품셈 공통 2-2-3 주자재 | | 조달청에 없음(2026-09-20 조회) | +| MP000101 | 내부PANEL (목재문) | 1,200×2,400㎜ | 매 | GC000001 | 건설품셈 공통 2-2-3 주자재 | | 조달청에 없음(2026-09-20 조회) | +| MP000113 | 축중계(이동식) | | 대 | GC000003 | 건설품셈 공통 2-2-6 | | 조달청에 없음(2026-09-20 조회) | +| MP000129 | 보호막 | | ㎡ | GC000061 | 건설품셈 공통 2-10-1 재료량 | | 조달청에 없음(2026-09-20 조회) | +| MP000134 | 모래주머니 | | 개 | GC000181 | 건설품셈 공통 5-2-1 매트고정 재료량 | | 조달청에 없음(2026-09-20 조회) | +| MP000139 | HDPE 시트 | 2∼2.5㎜ | ㎡ | GC000197 | 건설품셈 공통 5-4-1 재료량 | | 조달청에 없음(2026-09-20 조회) | +| MP000144 | 보조강재 | | ㎏ | GC000559 | 건설품셈 건축 1-1-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000148 | FLUX | | ㎏ | GC000560 | 건설품셈 건축 1-1-4 | | 조달청에 없음(2026-09-20 조회) | +| MP000150 | 질석 | | ㎏ | GC000573 | 건설품셈 건축 1-4-3 | | 조달청에 없음(2026-09-20 조회) | +| MP000169 | 정배지 | | ㎡ | GC000618 | 건설품셈 건축 5-3-7 | | 조달청에 없음(2026-09-20 조회) | +| MP000172 | 알루미늄핀 | | 개 | GC000623 | 건설품셈 건축 5-4-4 | | 조달청에 없음(2026-09-20 조회) | +| MP000176 | 표준보강메시 | | ㎡ | GC000628 | 건설품셈 건축 5-4-9 | | 조달청에 없음(2026-09-20 조회) | +| MP000177 | 고강도메시 | | ㎡ | GC000629 | 건설품셈 건축 5-4-9 | | 조달청에 없음(2026-09-20 조회) | +| MP000201 | 실리콘 | | ㎏ | GC000752 | 건설품셈 기계설비 2-2-6 | 실리콘실란트, 실리콘접착제, 컬러강판(실리콘수지) 외 | 조달청에 없음(2026-09-20 조회) | +| MP000209 | 버너 | 압접가열용 | 개 | GC000360 | 건설품셈 토목 4-5-1 가스압접 소모재료(참고자료) | 개장로용 가스버너, 버너응급시스템, 재연소로버너(분리형) 외 | 조달청에 없음(2026-09-20 조회) | +| MP000210 | 노즐 | 압접버너용 | 개 | GC000360 | 건설품셈 토목 4-5-1 가스압접 소모재료(참고자료) | | 조달청에 없음(2026-09-20 조회) | +| MP000211 | 테르밋용재 | 점화용 | 포 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | | 조달청에 없음(2026-09-20 조회) | +| MP000212 | 몰드 | 테르밋 용접용 | 개 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | | 조달청에 없음(2026-09-20 조회) | +| MP000213 | 골무 | 테르밋 용접용 | 개 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | 식생축조블록 500(골무늬) | 조달청에 없음(2026-09-20 조회) | +| MP000214 | 퓨즈 | 테르밋 용접용 | 개 | GC000361 | 건설품셈 토목 4-5-2 테르밋 용접 소모재료(참고자료) | 고리퓨즈, 전선퓨즈(켓치홀드), 통형퓨즈 | 조달청에 없음(2026-09-20 조회) | +| MP000216 | 철구(Shot ball) | | ㎏ | GC000375, GC000822 | 건설품셈 토목 5-2-1 소재 표면처리; 건설품셈 기계설비 9-2-1 | 철구조물(과속), 철구조물(신호) | 조달청에 없음(2026-09-20 조회) | +| MP000218 | 철편(Grit) | | ㎏ | GC000376 | 건설품셈 토목 5-2-2 제품 표면처리 | | 조달청에 없음(2026-09-20 조회) | +| MP000220 | 동력 Brush | | 개 | GC000822 | 건설품셈 기계설비 9-2-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000221 | Wire Brush | | 개 | GC000822, GC000993 | 건설품셈 기계설비 9-2-1; 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000223 | 컴파운드 | | g | GC000855, GC000859 | 건설품셈 기계설비 11-1-3; 건설품셈 기계설비 11-3-3 | | 조달청에 없음(2026-09-20 조회) | +| MP000235 | 슈 | 표준관입시험용 | 개 | GC000433 | 건설품셈 토목 8-2-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000239 | 베인 전용로드 | ø16×750 | 본 | GC000435 | 건설품셈 토목 8-2-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000240 | 로드 | ø40.5×1m | 본 | GC000435 | 건설품셈 토목 8-2-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000241 | 표준사 | 평판재하시험용 | ㎏ | GC000436 | 건설품셈 토목 8-2-4 | | 조달청에 없음(2026-09-20 조회) | +| MP000242 | 단독콘 | 정재하시험용 | 개 | GC000438 | 건설품셈 토목 8-2-6 | | 조달청에 없음(2026-09-20 조회) | +| MP000250 | Lagging Sheet | | ㎡ | GC000901 | 건설품셈 기계설비 13-3-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000253 | 코크스 | | ㎏ | GC000931, GC000932, GC000935, GC000936 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2; 건설품셈 기계설비 13-6-4 | | 조달청에 없음(2026-09-20 조회) | +| MP000254 | Sand Paper | 각종 | Sh | GC000931 | 건설품셈 기계설비 13-6-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000255 | 여과기 | 14"×14〃 | Sh | GC000931 | 건설품셈 기계설비 13-6-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000257 | 세유 | C-3 | ℓ | GC000931 | 건설품셈 기계설비 13-6-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000258 | Grease | | ㎏ | GC000931, GC000932, GC000986, GC000993 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2; 건설품셈 기계설비 13-10-2; 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000259 | Machine oil | | ℓ | GC000931, GC000932, GC000986 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2; 건설품셈 기계설비 13-10-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000260 | Gasoline | | ℓ | GC000931, GC000932 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000261 | Galvanized wire | #8∼#16 | ㎏ | GC000931, GC000932 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000262 | Grinding Wheel | 8"ø×25m/m t | EA | GC000931 | 건설품셈 기계설비 13-6-1 | | 조달청에 없음(2026-09-20 조회) | +| MP000265 | 보일유 | | ℓ | GC000931, GC000932 | 건설품셈 기계설비 13-6-1; 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000269 | 세유 | 0∼3 | ℓ | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000271 | Wire brush | 각종 3/8∼1.6" | EA | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000272 | Hack saw blade | 12" | EA | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000273 | Drill | 1.6ø∼3.8ø | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000274 | Grinder wheel | 8"ø∼25m/m t | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000275 | File | 각종 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000276 | Oil stone | 각종(황, 중, 세) | Sh | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000280 | Sand Paper | | Sh | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000281 | 광목 | | m | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000285 | 땜납 | 50 : 50 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | 봉땜납 | 조달청에 없음(2026-09-20 조회) | +| MP000286 | 붕사 | | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000287 | Compound | 절연용 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000288 | 3-Bond | 밀착제 No.2 | ㎏ | GC000932 | 건설품셈 기계설비 13-6-2 | | 조달청에 없음(2026-09-20 조회) | +| MP000290 | Nozzle | | 개 | GC000933, GC000934, GC000938 | 건설품셈 기계설비 13-6-3; 건설품셈 기계설비 13-6-6 | | 조달청에 없음(2026-09-20 조회) | +| MP000293 | 세유 | | ℓ | GC000939, GC000986, GC000993 | 건설품셈 기계설비 13-6-7; 건설품셈 기계설비 13-10-2; 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000294 | 전기용접 | | ㎏ | GC000940 | 건설품셈 기계설비 13-6-8 | | 조달청에 없음(2026-09-20 조회) | +| MP000295 | 탄소봉 | | 본 | GC000940 | 건설품셈 기계설비 13-6-8 | | 조달청에 없음(2026-09-20 조회) | +| MP000296 | Grinder | 12"ø | 개 | GC000940 | 건설품셈 기계설비 13-6-8 | | 조달청에 없음(2026-09-20 조회) | +| MP000297 | 돌 | 65×305 | 매 | GC000940 | 건설품셈 기계설비 13-6-8 | | 조달청에 없음(2026-09-20 조회) | +| MP000298 | Film | 2회 | ㎏ | GC000940 | 건설품셈 기계설비 13-6-8 | FILM CASSETTE | 조달청에 없음(2026-09-20 조회) | +| MP000299 | 탄소봉 | 8ø×350㎜ | 본 | GC000941, GC000942 | 건설품셈 기계설비 13-6-9; 건설품셈 기계설비 13-6-10 | | 조달청에 없음(2026-09-20 조회) | +| MP000301 | 노즐 | | 개 | GC000941, GC000943, GC000948 | 건설품셈 기계설비 13-6-9; 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | 조달청에 없음(2026-09-20 조회) | +| MP000302 | 탈에폭시레신 | | ℓ | GC000941 | 건설품셈 기계설비 13-6-9 | | 조달청에 없음(2026-09-20 조회) | +| MP000303 | 그라인더돌 | 12"ø | 개 | GC000942, GC000943, GC000948 | 건설품셈 기계설비 13-6-10; 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | 조달청에 없음(2026-09-20 조회) | +| MP000304 | Film | 65×305 | 매 | GC000942 | 건설품셈 기계설비 13-6-10 | FILM CASSETTE | 조달청에 없음(2026-09-20 조회) | +| MP000305 | Tar epoxy | | ℓ | GC000942 | 건설품셈 기계설비 13-6-10 | | 조달청에 없음(2026-09-20 조회) | +| MP000306 | 마린B/T(선박도로용) | | ℓ | GC000942 | 건설품셈 기계설비 13-6-10 | | 조달청에 없음(2026-09-20 조회) | +| MP000308 | Zinc primer | 15μ | ㎏ | GC000943, GC000948 | 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | 조달청에 없음(2026-09-20 조회) | +| MP000309 | Tar Epoxy | 125μ | ㎾h | GC000943, GC000948 | 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | | 조달청에 없음(2026-09-20 조회) | +| MP000310 | Tar Epoxy | 2회 | ℓ | GC000944 | 건설품셈 기계설비 13-6-12 | | 조달청에 없음(2026-09-20 조회) | +| MP000314 | drill | 1/4" | 개 | GC000947 | 건설품셈 기계설비 13-6-15 | | 조달청에 없음(2026-09-20 조회) | +| MP000315 | drill | 11/15" | 개 | GC000947 | 건설품셈 기계설비 13-6-15 | | 조달청에 없음(2026-09-20 조회) | +| MP000319 | Tar Epoxy | 1회도장 | ℓ | GC000950 | 건설품셈 기계설비 13-6-16 | | 조달청에 없음(2026-09-20 조회) | +| MP000325 | M/C OIL | | ℓ | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000326 | Grinder Wheel | | 매 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000327 | Oil Stone | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000328 | File | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000330 | Drill | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000334 | Compound | | ㎏ | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000335 | 3-Bond | | ㎏ | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000336 | Seal Tape | | 통 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000337 | 백묵 | | 통 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000338 | 석필 | | 통 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000340 | 흑 Welder Glass | | 연 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000341 | 백 Welder Glass | | 연 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000342 | 오스터날 | | SET | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000343 | 탭 | | SET | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000344 | 다이스 | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000345 | 정 | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000349 | Center Punch | | 개 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000351 | 대강 | | ㎏ | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000352 | 유지 | | ℓ | GC000993 | 건설품셈 기계설비 13-11-5 | 섬유지(마감용), 섬유지(보강용) | 조달청에 없음(2026-09-20 조회) | +| MP000353 | Washer | | 매 | GC000993 | 건설품셈 기계설비 13-11-5 | | 조달청에 없음(2026-09-20 조회) | +| MP000359 | 중유 | | ℓ | GC000941, GC000943, GC000948 | 건설품셈 기계설비 13-6-9; 건설품셈 기계설비 13-6-11; 건설품셈 기계설비 13-6-17 | 박 리 제(중유) | 조달청에 없음(2026-09-20 조회) | +| MP000363 | 아스팔트싱글 | 336×1,000×3㎜ | 매 | GC000654 | 건설품셈 건축 7-1-5 | | 조달청에 없음(2026-09-20 조회) | diff --git a/resources/master_data/scripts/build_용도.py b/resources/master_data/scripts/build_용도.py index 370c9224..bd8d844f 100644 --- a/resources/master_data/scripts/build_용도.py +++ b/resources/master_data/scripts/build_용도.py @@ -20,6 +20,11 @@ TRAIL_PAREN_RE = re.compile(r"(\s*\([^()]*\))+\s*$") _heading_cache = {} +# 원문번호 절 이름이 표 내용과 안 맞는 예외 — 검증(ref/_검증_기계_용도.md) 반영. +OVERRIDE_공종 = { + "CC000074": "불도저·굴착기", # 8-4-8 은 「[70]기타기계」 절이나 내용은 불도저·굴착기 잡재료 비율 +} + def _find_부문_dir(부문): if not ORIG_KS.exists(): @@ -172,10 +177,13 @@ def main(): 총_항목 += 1 키 = item["키"] 장 = item.get("상세구분") - 공종 = resolve_공종(원문, 부문, 장, item.get("원문번호")) - if 공종 is None: - 공종_미확인.append((키, fp, item.get("원문번호"))) - 공종 = item.get("이름", "").split("(", 1)[0].strip() + if 키 in OVERRIDE_공종: + 공종 = OVERRIDE_공종[키] + else: + 공종 = resolve_공종(원문, 부문, 장, item.get("원문번호")) + if 공종 is None: + 공종_미확인.append((키, fp, item.get("원문번호"))) + 공종 = item.get("이름", "").split("(", 1)[0].strip() 대상 = classify_대상(item, 인력_이름, 기계_이름, 재료_이름) 로직키 = sorted(로직_idx.get(키, [])) 용도_map[키] = {"공종": 공종, "대상": 대상, "로직키": 로직키} diff --git a/resources/master_data/scripts/check_master.py b/resources/master_data/scripts/check_master.py index 14b43adf..1b49e6ab 100644 --- a/resources/master_data/scripts/check_master.py +++ b/resources/master_data/scripts/check_master.py @@ -554,6 +554,36 @@ def show(result: dict) -> str: return "\n".join(rows) +def 시험입력(row: dict) -> dict: + """일괄 시험 계산용 입력 한 벌 — 고르기 첫 값 · 범위 위끝 · 줄의 「시험입력」 이 이김. + 시험 계산 전용 — 정본 계산은 화면이 준 값만 씀.""" + given = {} + for spec in row.get("입력", []): + if "고르기" in spec: + given[spec["이름"]] = spec["고르기"][0] + elif "범위" in spec: + given[spec["이름"]] = spec["범위"][1] + else: + given[spec["이름"]] = Decimal(1) + given.update(row.get("시험입력") or {}) + return given + + +def calc_all(files: dict[str, dict], whole: mf.Master) -> tuple[int, list[str]]: + """로직 전부를 시험 입력으로 돌림 — (통과 수, 멈춘 줄 목록).""" + passed, stuck = 0, [] + for data in files.values(): + if data.get("그룹") != "로직": + continue + for row in data.get("줄", []): + try: + mf.run(whole, str(row["키"]), 시험입력(row)) + passed += 1 + except mf.FormulaError as err: + stuck.append(f"{row['키']} {row.get('이름')} · {err}") + return passed, stuck + + def _value(text: str): try: return Decimal(text) @@ -567,6 +597,13 @@ def main(argv: list[str]) -> int: given = dict(arg.split("=", 1) for arg in argv[2:]) print(show(mf.run(master(), argv[1], {k: _value(v) for k, v in given.items()}))) return 0 + if mode == "계산전부": + files, whole = load(), master() + passed, stuck = calc_all(files, whole) + print(f"(계산) 통과 {passed} · 멈춤 {len(stuck)}") + for line in stuck: + print(" " + line) + return 0 names = argv[1:] or None files, whole = load(names), master() report = {} diff --git a/resources/master_data/계수_건설품셈_08장_건설기계.json b/resources/master_data/계수_건설품셈_08장_건설기계.json index cef06eaf..c8915ebd 100644 --- a/resources/master_data/계수_건설품셈_08장_건설기계.json +++ b/resources/master_data/계수_건설품셈_08장_건설기계.json @@ -2812,7 +2812,7 @@ "이름": "불도저·굴착기에 리퍼·브레이커·부착용 집게 조합 시 잡재료 비율", "기준": "", "출처": "건설품셈 공통 8-4-8 주⑤", - "용도": {"공종": "[70]기타기계", "대상": ["작업량 조건"], "로직키": ["GC000270", "GC000271"]}, + "용도": {"공종": "불도저·굴착기", "대상": ["작업량 조건"], "로직키": ["GC000270", "GC000271"]}, "조건": { "구분": "고르기" }, diff --git a/resources/master_data/기계.json b/resources/master_data/기계.json index 4c17acc6..a9c562fa 100644 --- a/resources/master_data/기계.json +++ b/resources/master_data/기계.json @@ -815,6 +815,52 @@ } } }, + "구분": { + "[00]토공기계": { + "원문": "건설품셈", + "상세구분": [] + }, + "[10]다짐기계": { + "원문": "건설품셈", + "상세구분": [] + }, + "[20]운반 및 하역기계": { + "원문": "건설품셈", + "상세구분": [] + }, + "[30]포장기계": { + "원문": "건설품셈", + "상세구분": [] + }, + "[40]콘크리트기계": { + "원문": "건설품셈", + "상세구분": [] + }, + "[50]골재생산기계 등": { + "원문": "건설품셈", + "상세구분": [] + }, + "[60]기초공사용 기계": { + "원문": "건설품셈", + "상세구분": [] + }, + "[70]기타기계": { + "원문": "건설품셈", + "상세구분": [] + }, + "[80]스마트 건설장비": { + "원문": "건설품셈", + "상세구분": [] + }, + "[90]해상장비": { + "원문": "건설품셈", + "상세구분": [] + }, + "임업기계": { + "원문": "산림품셈", + "상세구분": [] + } + }, "줄": [ { "키": "EQ000001", @@ -38975,7 +39021,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "아키아윈치", + "상세구분": "집재장비", "이름": "아키아윈치", "규격": "", "단위": { @@ -38997,7 +39043,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "2드럼 케이블윈치", + "상세구분": "집재장비", "이름": "2드럼 케이블윈치", "규격": "", "단위": { @@ -39019,7 +39065,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "파르미윈치", + "상세구분": "집재장비", "이름": "파르미윈치(트랙터 포함)", "규격": "", "단위": { @@ -39041,7 +39087,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "타이푼윈치", + "상세구분": "집재장비", "이름": "타이푼윈치(트랙터 포함)", "규격": "", "단위": { @@ -39063,7 +39109,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "우드피싱", + "상세구분": "집재장비", "이름": "우드피싱(굴삭기 포함)", "규격": "", "단위": { @@ -39085,7 +39131,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "임내차", + "상세구분": "집재장비", "이름": "무한궤도형 임내차", "규격": "", "단위": { @@ -39107,7 +39153,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "스마트집재기", + "상세구분": "집재장비", "이름": "스마트집재기(트랙터 포함)", "규격": "", "단위": { @@ -39129,7 +39175,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "HAM300", + "상세구분": "집재장비", "이름": "HAM300(트랙터 포함)", "규격": "", "단위": { @@ -39151,7 +39197,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "콜라타워야더", + "상세구분": "집재장비", "이름": "콜라타워야더(K-301)", "규격": "", "단위": { @@ -39173,7 +39219,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "굴착기", + "상세구분": "집재장비", "이름": "소형굴삭기+부착용집개", "규격": "", "단위": { @@ -39195,7 +39241,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "임업용 동력집재기", + "상세구분": "집재장비", "이름": "임업용 동력집재기(트랙터부착형)", "규격": "", "단위": { @@ -39217,7 +39263,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "HAM200, 춘천집재기, 스마트집재기", + "상세구분": "집재장비", "이름": "HAM200, 춘천집재기, 스마트집재기", "규격": "", "단위": { @@ -39239,7 +39285,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "하베스터", + "상세구분": "집재장비", "이름": "하베스터(헤드부착형)", "규격": "", "단위": { @@ -39261,7 +39307,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "굴착기", + "상세구분": "집재장비", "이름": "0.6㎥급 무한궤도형 굴착기", "규격": "0.6㎥급", "단위": { @@ -39283,7 +39329,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "동력상하차기, 임업용 굴착기", + "상세구분": "집재장비", "이름": "동력상하차기, 임업용 굴착기(우드그래플)", "규격": "", "단위": { @@ -39305,7 +39351,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "타워야더", + "상세구분": "집재장비", "이름": "타워야더(RME 300T)", "규격": "", "단위": { @@ -39327,7 +39373,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "스윙야더", + "상세구분": "집재장비", "이름": "스윙야더(기본차량 포함)", "규격": "", "단위": { @@ -39349,7 +39395,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "포워더", + "상세구분": "집재장비", "이름": "초소형 포워더", "규격": "", "단위": { @@ -39371,7 +39417,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "포워더", + "상세구분": "집재장비", "이름": "소형 포워더", "규격": "", "단위": { @@ -39393,7 +39439,7 @@ "원문번호": "2-2-3", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "트럭", + "상세구분": "집재장비", "이름": "소형트럭", "규격": "", "단위": { @@ -39513,7 +39559,7 @@ "원문번호": "2-2-8", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "리튬폴리머 배터리", + "상세구분": "드론 무인 멀티콥터", "이름": "리튬폴리머 배터리(평균가)", "규격": "16,000mA, 32000mA", "단위": { @@ -39535,7 +39581,7 @@ "원문번호": "2-2-9", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "1톤", + "상세구분": "지상 약제살포", "이름": "1톤(방제차량)", "규격": "1톤", "단위": { @@ -39554,7 +39600,7 @@ "원문번호": "2-2-9", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "동력분무기", + "상세구분": "지상 약제살포", "이름": "동력분무기", "규격": "45HP", "단위": { @@ -39591,7 +39637,7 @@ "원문번호": "2-2-11", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "굴착기", + "상세구분": "기타장비", "이름": "굴착기(0.2~0.8㎥)", "규격": "0.2~0.8㎥", "단위": {}, @@ -39604,7 +39650,7 @@ "원문번호": "2-2-11", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "부착용집게", + "상세구분": "기타장비", "이름": "부착용집게(0.2~0.8㎥)", "규격": "0.2~0.8㎥", "단위": {}, @@ -39617,7 +39663,7 @@ "원문번호": "2-2-11", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "트럭탑재형크레인", + "상세구분": "기타장비", "이름": "트럭탑재형크레인", "규격": "", "단위": {}, @@ -39630,7 +39676,7 @@ "원문번호": "2-2-11", "원문": "산림품셈", "구분": "임업기계", - "상세구분": "타이어형크레인", + "상세구분": "기타장비", "이름": "타이어형크레인", "규격": "", "단위": {}, diff --git a/resources/master_data/로직_건설품셈_01장_배관공사.json b/resources/master_data/로직_건설품셈_01장_배관공사.json index ae863e0b..afec959e 100644 --- a/resources/master_data/로직_건설품셈_01장_배관공사.json +++ b/resources/master_data/로직_건설품셈_01장_배관공사.json @@ -13,6 +13,7 @@ "출처": "건설품셈 기계설비 1-1-1", "소유": "공용", "비고": "용접접합 자재는 별도 계상(주③) — 원문 1-1-1 재료표 없음 · 크레인·지게차 이동비 별도(주④) · 고소 감산·TIG 가산이 겹치면 공통 1-4-2 할증 중복가산(합산)", + "시험입력": {"규격": 15.0}, "입력": [ { "이름": "규격", @@ -70,6 +71,7 @@ "출처": "건설품셈 기계설비 1-2-1", "소유": "공용", "비고": "소모재료는 1-2-1 Brazing 소모재료 표(g → ㎏ 환산) · 해석: 용접봉 = 인동납 BCuP-3 · 산소는 대기압 기준량 · 규격 250㎜ 는 원문 재료표에 없음(계산 멈춤) · 크레인·지게차 이동비 별도(주④)", + "시험입력": {"규격": 8.0}, "입력": [ { "이름": "규격", @@ -157,6 +159,7 @@ "출처": "건설품셈 기계설비 1-3-1", "소유": "공용", "비고": "소모재료는 1-3-1 TIG용접 소모재료 표 — 규격 6·8·10·32㎜ 는 원문 재료표에 없음(계산 멈춤) · 크레인·지게차 이동비 별도(주④)", + "시험입력": {"규격": 65.0}, "입력": [ { "이름": "규격", @@ -226,6 +229,7 @@ "출처": "건설품셈 기계설비 1-1-2", "소유": "공용", "비고": "옥내일반배관 기준 · 고소 가산과 시공위치 요율이 겹치면 공통 1-4-2 할증 중복가산(합산) · 밸브류는 기계설비 5-1-1 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 15.0}, "입력": [ { "이름": "관규격", @@ -302,6 +306,7 @@ "출처": "건설품셈 기계설비 1-1-3", "소유": "공용", "비고": "옥내일반배관 기준 · 고소 가산과 시공위치 요율이 겹치면 공통 1-4-2 할증 중복가산(합산) · 밸브류는 기계설비 5-1-1 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 15.0}, "입력": [ { "이름": "관규격", @@ -378,6 +383,7 @@ "출처": "건설품셈 기계설비 1-1-4", "소유": "공용", "비고": "옥내일반배관 기준 · 고소 가산과 시공위치 요율이 겹치면 공통 1-4-2 할증 중복가산(합산) · 밸브류는 기계설비 5-1-1 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 25.0}, "입력": [ { "이름": "관규격", @@ -454,6 +460,7 @@ "출처": "건설품셈 기계설비 1-2-2", "소유": "공용", "비고": "옥내일반배관 기준 · 고소 가산과 시공위치 요율이 겹치면 공통 1-4-2 할증 중복가산(합산) · 밸브류는 기계설비 5-1-1 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 8.0}, "입력": [ { "이름": "관규격", @@ -530,6 +537,7 @@ "출처": "건설품셈 기계설비 1-3-2", "소유": "공용", "비고": "옥내일반배관 기준 · 고소 가산과 시공위치 요율이 겹치면 공통 1-4-2 할증 중복가산(합산) · 밸브류는 기계설비 5-1-1 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도 · Bending 가공 별도", + "시험입력": {"관규격": 6.0}, "입력": [ { "이름": "관규격", @@ -606,6 +614,7 @@ "출처": "건설품셈 기계설비 1-3-3", "소유": "공용", "비고": "옥내일반배관 기준 · 고소 가산과 시공위치 요율이 겹치면 공통 1-4-2 할증 중복가산(합산) · 밸브류는 기계설비 5-1-1 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 25.0}, "입력": [ { "이름": "관규격", @@ -769,6 +778,7 @@ "출처": "건설품셈 기계설비 1-3-5", "소유": "공용", "비고": "옥내일반배관 기준 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 15.0}, "입력": [ { "이름": "관규격", @@ -836,6 +846,7 @@ "출처": "건설품셈 기계설비 1-4-1", "소유": "공용", "비고": "옥내일반배관 기준 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 50.0}, "입력": [ { "이름": "관규격", @@ -903,6 +914,7 @@ "출처": "건설품셈 기계설비 1-4-2", "소유": "공용", "비고": "옥내일반배관 기준 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 50.0}, "입력": [ { "이름": "관규격", @@ -970,6 +982,7 @@ "출처": "건설품셈 기계설비 1-5-1", "소유": "공용", "비고": "옥내일반배관 기준 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 30.0}, "입력": [ { "이름": "관규격", @@ -1037,6 +1050,7 @@ "출처": "건설품셈 기계설비 1-5-2", "소유": "공용", "비고": "옥내일반배관 기준 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 30.0}, "입력": [ { "이름": "관규격", @@ -1104,6 +1118,7 @@ "출처": "건설품셈 기계설비 1-5-3", "소유": "공용", "비고": "옥내일반배관 기준 · 인서트는 건축 8-1-4 · 단열·관 지지대 별도 · 크레인·지게차 이동비 별도", + "시험입력": {"관규격": 50.0}, "입력": [ { "이름": "관규격", @@ -1171,6 +1186,7 @@ "출처": "건설품셈 기계설비 1-6-1", "소유": "공용", "비고": "절단 · 배관 · 고정철물 · 접합 · 배관시험 포함", + "시험입력": {"규격": 16.0}, "입력": [ { "이름": "규격", @@ -1226,6 +1242,7 @@ "출처": "건설품셈 기계설비 1-6-2", "소유": "공용", "비고": "절단 · 배관 · 고정철물 · 접합 · 배관시험 포함", + "시험입력": {"규격": 16.0}, "입력": [ { "이름": "규격", @@ -1281,6 +1298,7 @@ "출처": "건설품셈 기계설비 1-6-3", "소유": "공용", "비고": "절단 · 배관 · 고정철물 · 접합 · 배관시험 포함", + "시험입력": {"규격": 16.0}, "입력": [ { "이름": "규격", diff --git a/resources/master_data/로직_건설품셈_02장_덕트공사.json b/resources/master_data/로직_건설품셈_02장_덕트공사.json index c98584e0..c689db6a 100644 --- a/resources/master_data/로직_건설품셈_02장_덕트공사.json +++ b/resources/master_data/로직_건설품셈_02장_덕트공사.json @@ -80,6 +80,7 @@ "출처": "건설품셈 기계설비 2-1-2", "소유": "공용", "비고": "제작 완료 덕트 설치 · 벽체통과 콘크리트 깨기 별도 · 크레인·지게차 이동비 별도 · 철판두께는 규격 칸이 정함(0.5∼1.0㎜)", + "시험입력": {"규격": 150.0}, "입력": [ { "이름": "규격", @@ -324,6 +325,7 @@ "출처": "건설품셈 기계설비 2-1-6", "소유": "공용", "비고": "일반 덕트에 연결 · 원문에 공구손료 주 없음", + "시험입력": {"규격": 100.0}, "입력": [ { "이름": "규격", diff --git a/resources/master_data/로직_건설품셈_03장_보온공사.json b/resources/master_data/로직_건설품셈_03장_보온공사.json index 550d6113..68dff016 100644 --- a/resources/master_data/로직_건설품셈_03장_보온공사.json +++ b/resources/master_data/로직_건설품셈_03장_보온공사.json @@ -13,6 +13,7 @@ "출처": "건설품셈 기계설비 3-1-1", "소유": "공용", "비고": "비닐감기 감산은 발포폴리에틸렌보온재만 · 가감이 겹치면 공통 1-4-2 할증 중복가산(합산) · 원문에 공구손료 주 없음", + "시험입력": {"배관규격": 15.0}, "입력": [ { "이름": "배관규격", @@ -106,6 +107,7 @@ "출처": "건설품셈 기계설비 3-1-2", "소유": "공용", "비고": "공장 가공 칼라함석 · 규격은 본관 · 보온두께는 관보온재 설치두께", + "시험입력": {"보온두께": 25.0, "배관규격": 15.0}, "입력": [ { "이름": "보온두께", @@ -159,6 +161,7 @@ "출처": "건설품셈 기계설비 3-2-1", "소유": "공용", "비고": "부속가산율은 설계자 입력(0∼25%) · 가산이 겹치면 공통 1-4-2 할증 중복가산(합산)", + "시험입력": {"규격": 15.0}, "입력": [ { "이름": "규격", diff --git a/resources/master_data/로직_건설품셈_04장_펌프_및_공기설비공사.json b/resources/master_data/로직_건설품셈_04장_펌프_및_공기설비공사.json index 6063ce35..698391d1 100644 --- a/resources/master_data/로직_건설품셈_04장_펌프_및_공기설비공사.json +++ b/resources/master_data/로직_건설품셈_04장_펌프_및_공기설비공사.json @@ -13,6 +13,7 @@ "출처": "건설품셈 기계설비 4-1-1", "소유": "공용", "비고": "규격은 표 칸 값으로 고름(칸 = 그 값 이하) · 급수·소방펌프 옥내 인력 운반 설치 · 기초·방진가대·전기배선·주위배관·압력탱크·자동제어설비 제외 · 지게차 등 장비 별도", + "시험입력": {"규격": 0.75}, "입력": [ { "이름": "규격", @@ -68,6 +69,7 @@ "출처": "건설품셈 기계설비 4-1-2", "소유": "공용", "비고": "규격은 표 칸 값으로 고름(칸 = 그 값 이하) · 자동탈착식 · 인력·윈치 설치 · 기초·전기배선·주위배관·자동제어설비 제외 · 장비 사용 시 별도", + "시험입력": {"규격": 0.75}, "입력": [ { "이름": "규격", @@ -123,6 +125,7 @@ "출처": "건설품셈 기계설비 4-1-3", "소유": "공용", "비고": "규격은 표 칸 값으로 고름(칸 = 그 값 이하) · 콘크리트(모르타르) 충전 별도 · 원문에 공구손료 주 없음", + "시험입력": {"규격": 0.75}, "입력": [ { "이름": "규격", @@ -253,6 +256,7 @@ "출처": "건설품셈 기계설비 4-2-2", "소유": "공용", "비고": "전동기 직결형 · 형틀 설치 별도", + "시험입력": {"규격": 200.0}, "입력": [ { "이름": "규격", @@ -285,6 +289,7 @@ "출처": "건설품셈 기계설비 4-2-3", "소유": "공용", "비고": "규격은 표 칸 값으로 고름(칸 = 그 값 이하) · 원심형 · 플렉시블덕트·댐퍼 별도", + "시험입력": {"규격": 100.0}, "입력": [ { "이름": "규격", @@ -329,6 +334,7 @@ "출처": "건설품셈 기계설비 4-2-4", "소유": "공용", "비고": "규격은 표 칸 값으로 고름(칸 = 그 값 이하) · 앵커 · 가대조립 · 작동시험 포함", + "시험입력": {"풍량": 1600.0}, "입력": [ { "이름": "풍량", @@ -373,6 +379,7 @@ "출처": "건설품셈 기계설비 4-2-5", "소유": "공용", "비고": "규격은 표 칸 값으로 고름(칸 = 그 값 이하) · 가정용(최대 풍량 6∼12㎥/분)", + "시험입력": {"규격": 700.0}, "입력": [ { "이름": "규격", diff --git a/resources/master_data/로직_건설품셈_05장_밸브설비공사.json b/resources/master_data/로직_건설품셈_05장_밸브설비공사.json index 2e35e11b..7f259380 100644 --- a/resources/master_data/로직_건설품셈_05장_밸브설비공사.json +++ b/resources/master_data/로직_건설품셈_05장_밸브설비공사.json @@ -13,6 +13,7 @@ "출처": "건설품셈 기계설비 5-1-1", "소유": "공용", "비고": "설치위치 선정 · 설치 · 작동시험 · 마무리 포함 · 규격 50㎜ 이하는 보통인부 없음", + "시험입력": {"규격": 25.0}, "입력": [ { "이름": "규격", @@ -68,6 +69,7 @@ "출처": "건설품셈 기계설비 5-1-2", "소유": "공용", "비고": "바이패스 배관조립 · 배관시험 포함 · 온도조절장치는 본 품 준용 가능(주③)", + "시험입력": {"규격": 15.0}, "입력": [ { "이름": "규격", @@ -130,6 +132,7 @@ "출처": "건설품셈 기계설비 5-2-1", "소유": "공용", "비고": "고압버킷 · 저압벨로스형 · 바이패스 기타 부속 · 지지대·가대 별도", + "시험입력": {"규격": 15.0}, "입력": [ { "이름": "규격", @@ -185,6 +188,7 @@ "출처": "건설품셈 기계설비 5-3-1", "소유": "공용", "비고": "지지대 설치 별도", + "시험입력": {"규격": 25.0}, "입력": [ { "이름": "규격", @@ -247,6 +251,7 @@ "출처": "건설품셈 기계설비 5-3-2", "소유": "공용", "비고": "커넥팅로드 플랜지접합형 · 플랙시블조인트는 본 품 준용 가능(주③)", + "시험입력": {"규격": 25.0}, "입력": [ { "이름": "규격", @@ -302,6 +307,7 @@ "출처": "건설품셈 기계설비 5-4-1", "소유": "공용", "비고": "50㎜ 이하 나사(삽입)접합식 · 65㎜ 이상 플랜지접합식 · 벽체 홈파내기 별도 · 규격 50㎜ 이하는 보통인부 없음", + "시험입력": {"규격": 25.0}, "입력": [ { "이름": "규격", diff --git a/resources/master_data/로직_건설품셈_06장_철근콘크리트공사.json b/resources/master_data/로직_건설품셈_06장_철근콘크리트공사.json index 4d5b83c7..95bfe519 100644 --- a/resources/master_data/로직_건설품셈_06장_철근콘크리트공사.json +++ b/resources/master_data/로직_건설품셈_06장_철근콘크리트공사.json @@ -1009,6 +1009,7 @@ "출처": "건설품셈 공통 6-3-1", "소유": "공용", "비고": "해석: 각재도 합판 비율(1회 사용 자재비의 %)을 씀 · 소모자재(박리재 등) = 주자재비(합판·각재)의 % · 해석: 폼타이 1조 = 2본 · 사용 10회(주④㉮) · 동바리 별도 · 해석: 높이·지붕 감률은 더해서 뺌", + "시험입력": {"자재지역": "포항"}, "입력": [ { "이름": "유형", diff --git a/resources/master_data/로직_건설품셈_06장_측정기기공사.json b/resources/master_data/로직_건설품셈_06장_측정기기공사.json index 240fe70a..655d6889 100644 --- a/resources/master_data/로직_건설품셈_06장_측정기기공사.json +++ b/resources/master_data/로직_건설품셈_06장_측정기기공사.json @@ -13,6 +13,7 @@ "출처": "건설품셈 기계설비 6-1-1", "소유": "공용", "비고": "구분 = 보호통 · 유량계 따로 한 줄씩 · 가산이 겹치면 공통 1-4-2 할증 중복가산(합산)", + "시험입력": {"규격": 15.0}, "입력": [ { "이름": "규격", @@ -89,6 +90,7 @@ "출처": "건설품셈 기계설비 6-1-2", "소유": "공용", "비고": "밸브·스트레이너·주위배관 · 전선관 배관·입선 · 지시부 별도", + "시험입력": {"규격": 15.0}, "입력": [ { "이름": "규격", @@ -194,6 +196,7 @@ "출처": "건설품셈 기계설비 6-2-1", "소유": "공용", "비고": "밸브·스트레이너·주위배관 · 전선관 배관·입선 · 지시부 별도", + "시험입력": {"규격": 15.0}, "입력": [ { "이름": "규격", @@ -249,6 +252,7 @@ "출처": "건설품셈 기계설비 6-2-2", "소유": "공용", "비고": "밸브·스트레이너·주위배관 · 전선관 배관·입선 · 지시부 별도", + "시험입력": {"규격": 50.0}, "입력": [ { "이름": "규격", @@ -304,6 +308,7 @@ "출처": "건설품셈 기계설비 6-2-3", "소유": "공용", "비고": "집단에너지 시설 · 원문 직종 그대로(플랜트배관공 · 특별인부 · 계장공) · 전선관·밸브·스트레이너 별도 · 열량지시계 매립 별도", + "시험입력": {"규격": 32.0}, "입력": [ { "이름": "규격", diff --git a/resources/master_data/로직_건설품셈_07장_돌공사.json b/resources/master_data/로직_건설품셈_07장_돌공사.json index 906cd3b3..f920e5c7 100644 --- a/resources/master_data/로직_건설품셈_07장_돌공사.json +++ b/resources/master_data/로직_건설품셈_07장_돌공사.json @@ -276,6 +276,7 @@ "출처": "건설품셈 공통 7-3-1", "소유": "공용", "비고": "해석: 일당 편성 장비 1대 × 1일 8시간 ÷ 일당 시공량(산림품셈 12장 로직과 같음) · 장비 규격은 작업여건에 따라 바꿀 수 있음(주⑤) — 굴착기·집게 설계자 고름 · 해석: 채움콘크리트 = 재료_자체 레미콘 · 전석 재료 원문 표에 없음", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "기계", "고르기": ["0201-0060", "0201-0080", "0201-0020", "0201-0040", "0201-0070", "0201-0100"] }, { "이름": "집게", "고르기": ["7206-0070", "7206-0020", "7206-0100"] }, diff --git a/resources/master_data/로직_건설품셈_09장_미장공사.json b/resources/master_data/로직_건설품셈_09장_미장공사.json index 94ba1d3b..211c0a45 100644 --- a/resources/master_data/로직_건설품셈_09장_미장공사.json +++ b/resources/master_data/로직_건설품셈_09장_미장공사.json @@ -13,6 +13,7 @@ "출처": "건설품셈 건축 9-1-1", "소유": "공용", "비고": "건조시멘트모르타르를 쓰지 않을 때 · 비빔 제외 · 재료는 할증 포함", + "시험입력": {"자재지역": "포항"}, "입력": [ { "이름": "모래체가름", @@ -493,6 +494,7 @@ "출처": "건설품셈 건축 9-3-1", "소유": "공용", "비고": "방수 코킹은 6-6-1", + "시험입력": {"자재지역": "포항"}, "입력": [{"이름": "자재지역", "비고": "시·군 이름 — 레미콘·골재 시중물가 후보를 고름"}], "중간": [ { diff --git a/resources/master_data/로직_산림품셈_07장_집재_및_운재.json b/resources/master_data/로직_산림품셈_07장_집재_및_운재.json index cdd83bdf..2e7746a1 100644 --- a/resources/master_data/로직_산림품셈_07장_집재_및_운재.json +++ b/resources/master_data/로직_산림품셈_07장_집재_및_운재.json @@ -526,6 +526,7 @@ "출처": "산림품셈 7-11", "소유": "공용", "비고": "해석: 건설기계조종원·운전기사 = 건설노임 건설기계운전사(1048) · 해석: 할증을 인력 · 연료 · 손료(가동일)에 함께 곱함 · 해석: 우드그래플 소모성경비(2-1-3) = Q × (트랙 보강 + 블레이드·실린더) 원/ha ÷ 집재재적 · 기계손료 못 넣음 — 기계 열쇠 「2-2-3 동력상하차기, 임업용 굴착기(우드그래플)」 에 쉼표(식이 열쇠를 끊음) · 경계값(아래 끝 수 그대로)은 못 찾음 — 범위규칙 「이하 · 이상 · 두 수는 양 끝 포함」 을 엔진이 「이하」로만 읽음 · 할인·할증 못 넣음 — 1-4-5 경사도(값 칸 「할인·할증률」) · 1-4-13 주행 장애물 상태(조건 빈칸) — 칸 이름 · 범위규칙 문법", + "시험입력": {"최대집재거리": 40.0, "집재재적": 60.0}, "입력": [ { "이름": "최대집재거리", "단위": "m" }, { "이름": "집재재적", "단위": "㎥/ha" }, diff --git a/resources/master_data/로직_산림품셈_12장_철근콘크리트.json b/resources/master_data/로직_산림품셈_12장_철근콘크리트.json index 4e44ce5d..5e65b110 100644 --- a/resources/master_data/로직_산림품셈_12장_철근콘크리트.json +++ b/resources/master_data/로직_산림품셈_12장_철근콘크리트.json @@ -1121,6 +1121,7 @@ "출처": "산림품셈 12-9-1", "소유": "공용", "비고": "수량은 설계수량(원문 빈칸) · 해석: 「무근,진동기」 = 12-1-1 무근구조물(진동기 경비는 12-1-3 주⑧대로 별도) · 거푸집 단위 「회」 = 합판 4회 사용 ㎡ · 수축줄눈 · 신축이음 · 배수파이프 설치 품 원문 없음 — 빠짐 · 되메우기 별도(주②)", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "콘크리트량", @@ -1273,6 +1274,7 @@ "출처": "산림품셈 12-9-2", "소유": "공용", "비고": "수량은 설계수량 · 수축줄눈 · 신축이음 품 원문 없음 — 빠짐 · 철근 재료 원문 표에 없음", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "콘크리트량", @@ -1446,6 +1448,7 @@ "출처": "산림품셈 12-9-3", "소유": "공용", "비고": "수량은 설계수량", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "콘크리트량", @@ -2189,6 +2192,7 @@ "출처": "산림품셈 12-12", "소유": "공용", "비고": "원문 기준 단위 없음 — 수량 입력한 한 식 · 바닥정리 품 원문 없음 — 빠짐 · 해석: 성토부 할증은 불러온 모든 노무비에", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "콘크리트량", @@ -2407,6 +2411,7 @@ "출처": "산림품셈 12-13", "소유": "공용", "비고": "기초잡석 구입은 현장발파암 유용(원문 규격)", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "콘크리트량", @@ -2692,6 +2697,7 @@ "출처": "산림품셈 12-15", "소유": "공용", "비고": "구체 품은 비고 글의 수(콘크리트공 0.24 · 보통인부 0.42인/㎥)를 식에 적음 · 해석: 뚜껑 설치비 = 뚜껑 재료비의 5% · 비목 노무비", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "구체콘크리트량", @@ -2908,6 +2914,7 @@ "출처": "산림품셈 12-16", "소유": "공용", "비고": "비고 글의 품(구체 0.17 · 0.29 · 원형거푸집 0.16 · 0.45 · 0.20 · 0.60)을 식에 적음 · 「설치비 재료비의 5%」 대상 원문 불명 — 미반영", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "구체콘크리트량", @@ -3347,6 +3354,7 @@ "출처": "산림품셈 12-17-1-2 주③", "소유": "공용", "비고": "재료량에 할증 포함(원문 주)", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "배합비", @@ -3441,6 +3449,7 @@ "출처": "산림품셈 12-17-2", "소유": "공용", "비고": "해석: 펌프차 고르기 = 콘크리트펌프차 중 80㎥/hr 이상([80∼95]) 규격(주①⑥) · 해석: 콘크리트다짐 = (펌프카 경비(노무·재료·경비 모두) + 인건비) × 1% — 레미콘 재료비는 뺌", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "펌프차", @@ -3532,6 +3541,7 @@ "출처": "산림품셈 12-17-3", "소유": "공용", "비고": "해석: 펌프차 고르기 = 콘크리트펌프차 중 80㎥/hr 이상([80∼95]) 규격(주①⑥) · 50㎥ 이하는 콘크리트 타설품(원문 주)", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "펌프차", diff --git a/resources/master_data/로직_산림품셈_13장_구조물.json b/resources/master_data/로직_산림품셈_13장_구조물.json index 56efaf84..d657eb14 100644 --- a/resources/master_data/로직_산림품셈_13장_구조물.json +++ b/resources/master_data/로직_산림품셈_13장_구조물.json @@ -289,6 +289,7 @@ "출처": "산림품셈 13-4-1", "소유": "공용", "비고": "「원문에 없는 조합: 뒷길이=25 · 돌=견치돌 · 쌓기=골쌓기 / 뒷길이=25 · 돌=견치돌 · 쌓기=켜쌓기 / 뒷길이=25 · 돌=깬돌 · 쌓기=골쌓기 / 뒷길이=25 · 돌=깬돌 · 쌓기=켜쌓기 / 뒷길이=30 · 돌=견치돌 · 쌓기=골쌓기 외 5」", + "시험입력": {"높이": 4.0, "돌": "깬잡석"}, "입력": [ { "이름": "뒷길이", "단위": "㎝", "고르기": [25, 30, 35, 45, 55, 60, 75] }, { "이름": "돌", "고르기": ["견치돌", "깬돌", "깬잡석", "호박돌 및 야면석"] }, @@ -420,6 +421,7 @@ "출처": "산림품셈 13-4-4", "소유": "공용", "비고": "해석: 채움 콘크리트 = 레디믹스트콘크리트 · 해석: 「호박돌 및 야면석」 = 채움 표 「호박돌」(야면석과 같은 수) · 「원문에 없는 조합: 뒷길이=25 · 돌=깬돌 · 쌓기=골쌓기 / 뒷길이=25 · 돌=깬돌 · 쌓기=켜쌓기 / 뒷길이=25 · 돌=견치돌 · 쌓기=골쌓기 / 뒷길이=25 · 돌=견치돌 · 쌓기=켜쌓기 / 뒷길이=30 · 돌=견치돌 · 쌓기=골쌓기 외 5」", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "뒷길이", @@ -499,6 +501,7 @@ "출처": "산림품셈 13-4-5", "소유": "공용", "비고": "재료량은 설계수량(주⑦) · 해석: 채움 콘크리트 = 레디믹스트콘크리트 · 줄눈 메꿈 모르타르 수량 원문 없음", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "뒷길이", @@ -775,6 +778,7 @@ "출처": "산림품셈 13-5-2", "소유": "공용", "비고": "재료량은 설계수량(주⑦) · 해석: 채움 콘크리트 = 레디믹스트콘크리트 · 줄눈 메꿈 모르타르 수량 원문 없음", + "시험입력": {"자재지역": "울진"}, "입력": [ { "이름": "뒷길이", @@ -865,6 +869,7 @@ "출처": "산림품셈 13-6-1", "소유": "공용", "비고": "흡출방지재·차수시트 시공 값(「( )」 값 칸 「수량( )」)은 식에서 못 가리켜 빠짐 · 건설품셈 공통 8-2-3 계수 필요(0.2㎥ · 0.4㎥ 굴착기를 쓸 때)", + "시험입력": {"직경": 60.0}, "입력": [ { "이름": "직경", "단위": "㎝" }, { @@ -944,6 +949,7 @@ "출처": "산림품셈 13-6-2", "소유": "공용", "비고": "흡출방지재·차수시트 시공 값(「( )」 값 칸 「수량( )」)은 식에서 못 가리켜 빠짐 · 건설품셈 공통 8-2-3 계수 필요(0.2㎥ · 0.4㎥ 굴착기를 쓸 때)", + "시험입력": {"직경": 60.0}, "입력": [ { "이름": "직경", "단위": "㎝" }, { "이름": "물빼기파이프", "고르기": ["설치", "설치 안 함"] }, @@ -1024,6 +1030,7 @@ "출처": "산림품셈 13-6-3", "소유": "공용", "비고": "흡출방지재·차수시트 시공 값(「( )」 값 칸 「수량( )」)은 식에서 못 가리켜 빠짐 · 건설품셈 공통 8-2-3 계수 필요(0.2㎥ · 0.4㎥ 굴착기를 쓸 때)", + "시험입력": {"직경": 60.0}, "입력": [ { "이름": "직경", "단위": "㎝" }, { "이름": "물빼기파이프", "고르기": ["설치", "설치 안 함"] }, @@ -1104,6 +1111,7 @@ "출처": "산림품셈 13-7-1", "소유": "공용", "비고": "흡출방지재·차수시트 시공 값(「( )」 값 칸 「수량( )」)은 식에서 못 가리켜 빠짐 · 건설품셈 공통 8-2-3 계수 필요(0.2㎥ · 0.4㎥ 굴착기를 쓸 때)", + "시험입력": {"직경": 60.0}, "입력": [ { "이름": "직경", "단위": "㎝" }, { @@ -1183,6 +1191,7 @@ "출처": "산림품셈 13-7-2", "소유": "공용", "비고": "흡출방지재·차수시트 시공 값(「( )」 값 칸 「수량( )」)은 식에서 못 가리켜 빠짐 · 건설품셈 공통 8-2-3 계수 필요(0.2㎥ · 0.4㎥ 굴착기를 쓸 때)", + "시험입력": {"직경": 60.0}, "입력": [ { "이름": "직경", "단위": "㎝" }, { "이름": "물빼기파이프", "고르기": ["설치", "설치 안 함"] }, diff --git a/resources/master_data/소요량_건설품셈_01장_공통.json b/resources/master_data/소요량_건설품셈_01장_공통.json index 7a25da84..d1861917 100644 --- a/resources/master_data/소요량_건설품셈_01장_공통.json +++ b/resources/master_data/소요량_건설품셈_01장_공통.json @@ -542,7 +542,7 @@ "이름": "잔디시비", "기준": "일당", "출처": "건설품셈 유지관리 1-2-15", - "용도": {"공종": "잔디시비", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001012"]}, + "용도": {"공종": "잔디시비", "대상": ["인력", "작업량 조건"], "로직키": ["GC001012"]}, "조건": {}, "값칸": { "조경공": "인", "보통인부": "인", "트럭(2.5ton)": "대", "시공량": "㎡" }, "줄": [ { "조경공": 2, "보통인부": 1, "트럭(2.5ton)": 1, "시공량": 22500 } ], diff --git a/resources/master_data/소요량_건설품셈_01장_도로포장공사.json b/resources/master_data/소요량_건설품셈_01장_도로포장공사.json index b4975bf9..64d7cde3 100644 --- a/resources/master_data/소요량_건설품셈_01장_도로포장공사.json +++ b/resources/master_data/소요량_건설품셈_01장_도로포장공사.json @@ -832,7 +832,7 @@ "이름": "차선도색 차선 밑그림", "기준": "일당", "출처": "건설품셈 토목 1-8-9", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000316"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC000316"]}, "조건": { "도색": "고르기" }, "값칸": { "시공량": "㎡", "특별인부": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -854,7 +854,7 @@ "이름": "차선도색 수용성형 페인트 수동식", "기준": "일당", "출처": "건설품셈 토목 1-8-9", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000317"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC000317"]}, "조건": { "도색": "고르기" }, "값칸": { "시공량": "㎡", "특별인부": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -879,7 +879,7 @@ "이름": "차선도색 수용성형 페인트 기계식", "기준": "일당", "출처": "건설품셈 토목 1-8-9", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000318"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC000318"]}, "조건": { "도색": "고르기" }, "값칸": { "시공량": "㎡", "특별인부": "인", "보통인부": "인", "라인마커트럭": "대", "라인마커트럭규격": "글", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -901,7 +901,7 @@ "이름": "차선도색 융착식 도료 수동식", "기준": "일당", "출처": "건설품셈 토목 1-8-9", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000319"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC000319"]}, "조건": { "도색": "고르기" }, "값칸": { "시공량": "㎡", "특별인부": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글", "트럭2_5ton": "대" }, "줄": [ @@ -949,7 +949,7 @@ "이름": "차선도색 상온경화형 플라스틱 도료 구동식", "기준": "일당", "출처": "건설품셈 토목 1-8-9", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000320"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC000320"]}, "조건": { "도색": "고르기" }, "값칸": { "시공량": "㎡", "특별인부": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -974,7 +974,7 @@ "이름": "가드레일 설치 지주 설치", "기준": "일당", "출처": "건설품셈 토목 1-8-10", - "용도": {"공종": "가드레일 설치", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000321"]}, + "용도": {"공종": "가드레일 설치", "대상": ["인력", "작업량 조건"], "로직키": ["GC000321"]}, "조건": { "지주간격": "고르기" }, "값칸": { "시공량": "m", "특별인부": "인", "보통인부": "인", "굴착기_대형브레이커": "대", "굴착기_대형브레이커규격": "글", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -992,7 +992,7 @@ "이름": "가드레일 설치 판 설치", "기준": "일당", "출처": "건설품셈 토목 1-8-10", - "용도": {"공종": "가드레일 설치", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000322"]}, + "용도": {"공종": "가드레일 설치", "대상": ["인력", "작업량 조건"], "로직키": ["GC000322"]}, "조건": { "지주간격": "고르기", "W": "고르기" }, "값칸": { "시공량": "m", "특별인부": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -1033,7 +1033,7 @@ "이름": "중앙분리대 설치(가드레일식) 판 설치", "기준": "일당", "출처": "건설품셈 토목 1-8-11", - "용도": {"공종": "중앙분리대 설치", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000323"]}, + "용도": {"공종": "중앙분리대 설치", "대상": ["인력", "작업량 조건"], "로직키": ["GC000323"]}, "조건": { "지주간격": "고르기", "W": "고르기" }, "값칸": { "시공량": "m", "특별인부": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -1073,7 +1073,7 @@ "이름": "유색포장(미끄럼방지)", "기준": "일당", "출처": "건설품셈 토목 1-8-13", - "용도": {"공종": "유색포장", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000326"]}, + "용도": {"공종": "유색포장", "대상": ["인력", "작업량 조건"], "로직키": ["GC000326"]}, "조건": { "형식": "고르기" }, "값칸": { "시공량": "㎡", "도장공": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글" }, "줄": [ @@ -1105,7 +1105,7 @@ "이름": "표시못 설치", "기준": "일당", "출처": "건설품셈 토목 1-8-14", - "용도": {"공종": "표시못 설치", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC000327"]}, + "용도": {"공종": "표시못 설치", "대상": ["인력", "작업량 조건"], "로직키": ["GC000327"]}, "조건": { "형식": "고르기" }, "값칸": { "시공량": "개소", "특별인부": "인", "보통인부": "인", "트럭": "대", "트럭규격": "글" }, "줄": [ diff --git a/resources/master_data/소요량_건설품셈_02장_토목.json b/resources/master_data/소요량_건설품셈_02장_토목.json index 8dc7660c..dc825823 100644 --- a/resources/master_data/소요량_건설품셈_02장_토목.json +++ b/resources/master_data/소요량_건설품셈_02장_토목.json @@ -1372,7 +1372,7 @@ "이름": "차선도색 — 차선 밑그림", "기준": "일당", "출처": "건설품셈 유지관리 2-1-15", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001047"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC001047"]}, "조건": { "선종류": "고르기" }, @@ -1429,7 +1429,7 @@ "이름": "차선도색 — 수용성형 페인트 수동식", "기준": "일당", "출처": "건설품셈 유지관리 2-1-15", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001048"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC001048"]}, "조건": { "선종류": "고르기" }, @@ -1489,7 +1489,7 @@ "이름": "차선도색 — 수용성형 페인트 기계식", "기준": "일당", "출처": "건설품셈 유지관리 2-1-15", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001049"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC001049"]}, "조건": { "선종류": "고르기" }, @@ -1537,7 +1537,7 @@ "이름": "차선도색 — 융착식 도료 수동식", "기준": "일당", "출처": "건설품셈 유지관리 2-1-15", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001050"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC001050"]}, "조건": { "선종류": "고르기" }, @@ -1658,7 +1658,7 @@ "이름": "차선도색 — 상온경화형 플라스틱 도료 구동식", "기준": "일당", "출처": "건설품셈 유지관리 2-1-15", - "용도": {"공종": "차선도색", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001051"]}, + "용도": {"공종": "차선도색", "대상": ["인력", "작업량 조건"], "로직키": ["GC001051"]}, "조건": { "선종류": "고르기" }, @@ -1716,7 +1716,7 @@ "이름": "차선도색제거", "기준": "일당", "출처": "건설품셈 유지관리 2-1-16", - "용도": {"공종": "차선도색제거", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001052"]}, + "용도": {"공종": "차선도색제거", "대상": ["인력", "작업량 조건"], "로직키": ["GC001052"]}, "조건": {}, "값칸": { "특별인부": "인", @@ -1951,7 +1951,7 @@ "이름": "교통 안전표지판 철거", "기준": "일당", "출처": "건설품셈 유지관리 2-1-21", - "용도": {"공종": "교통 안전표지판 철거", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001057"]}, + "용도": {"공종": "교통 안전표지판 철거", "대상": ["인력", "작업량 조건"], "로직키": ["GC001057"]}, "조건": {}, "값칸": { "특별인부": "인", @@ -1982,7 +1982,7 @@ "이름": "교통 안전표지판 교체", "기준": "일당", "출처": "건설품셈 유지관리 2-1-22", - "용도": {"공종": "교통 안전표지판 교체", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001058"]}, + "용도": {"공종": "교통 안전표지판 교체", "대상": ["인력", "작업량 조건"], "로직키": ["GC001058"]}, "조건": {}, "값칸": { "특별인부": "인", @@ -2013,7 +2013,7 @@ "이름": "도로반사경 철거", "기준": "일당", "출처": "건설품셈 유지관리 2-1-23", - "용도": {"공종": "도로반사경 철거", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001059"]}, + "용도": {"공종": "도로반사경 철거", "대상": ["인력", "작업량 조건"], "로직키": ["GC001059"]}, "조건": { "면수": "고르기" }, @@ -2052,7 +2052,7 @@ "이름": "도로반사경 교체", "기준": "일당", "출처": "건설품셈 유지관리 2-1-24", - "용도": {"공종": "도로반사경 교체", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001060"]}, + "용도": {"공종": "도로반사경 교체", "대상": ["인력", "작업량 조건"], "로직키": ["GC001060"]}, "조건": {}, "값칸": { "특별인부": "인", @@ -2079,7 +2079,7 @@ "이름": "도로표지병 제거", "기준": "일당", "출처": "건설품셈 유지관리 2-1-25", - "용도": {"공종": "도로표지병 제거", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001061"]}, + "용도": {"공종": "도로표지병 제거", "대상": ["인력", "작업량 조건"], "로직키": ["GC001061"]}, "조건": {}, "값칸": { "보통인부": "인", @@ -2105,7 +2105,7 @@ "이름": "시선유도표지 철거", "기준": "일당", "출처": "건설품셈 유지관리 2-1-26", - "용도": {"공종": "시선유도표지 철거", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001062"]}, + "용도": {"공종": "시선유도표지 철거", "대상": ["인력", "작업량 조건"], "로직키": ["GC001062"]}, "조건": { "설치구분": "고르기" }, @@ -2151,7 +2151,7 @@ "이름": "보도용 블록 인력철거", "기준": "일당", "출처": "건설품셈 유지관리 2-1-27", - "용도": {"공종": "보도용 블록 인력철거", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001063"]}, + "용도": {"공종": "보도용 블록 인력철거", "대상": ["인력", "작업량 조건"], "로직키": ["GC001063"]}, "조건": { "Type": "고르기" }, @@ -4660,7 +4660,7 @@ "이름": "하수관 수밀시험", "기준": "일당", "출처": "건설품셈 유지관리 2-4-4", - "용도": {"공종": "하수관 수밀시험", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001093"]}, + "용도": {"공종": "하수관 수밀시험", "대상": ["인력", "작업량 조건"], "로직키": ["GC001093"]}, "조건": { "관경": "고르기" }, @@ -4710,7 +4710,7 @@ "이름": "하수관 공기압시험", "기준": "일당", "출처": "건설품셈 유지관리 2-4-5", - "용도": {"공종": "하수관 공기압시험", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001094"]}, + "용도": {"공종": "하수관 공기압시험", "대상": ["인력", "작업량 조건"], "로직키": ["GC001094"]}, "조건": { "관경": "고르기" }, @@ -4760,7 +4760,7 @@ "이름": "하수관 준설(버킷식)", "기준": "일당", "출처": "건설품셈 유지관리 2-4-6", - "용도": {"공종": "하수관 준설", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001095"]}, + "용도": {"공종": "하수관 준설", "대상": ["인력", "작업량 조건"], "로직키": ["GC001095"]}, "조건": {}, "값칸": { "특별인부": "인", @@ -4971,7 +4971,7 @@ "이름": "빗물받이 준설(인력식)", "기준": "일당", "출처": "건설품셈 유지관리 2-4-9", - "용도": {"공종": "빗물받이 준설", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GC001098"]}, + "용도": {"공종": "빗물받이 준설", "대상": ["인력", "작업량 조건"], "로직키": ["GC001098"]}, "조건": {}, "값칸": { "특별인부": "인", diff --git a/resources/master_data/소요량_산림품셈_05장_식재_및_녹화.json b/resources/master_data/소요량_산림품셈_05장_식재_및_녹화.json index de890b8f..6600bb8b 100644 --- a/resources/master_data/소요량_산림품셈_05장_식재_및_녹화.json +++ b/resources/master_data/소요량_산림품셈_05장_식재_및_녹화.json @@ -1359,7 +1359,7 @@ "이름": "평떼 시비", "기준": "일당", "출처": "산림품셈 5-22-4", - "용도": {"공종": "평떼 시비", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GF000036"]}, + "용도": {"공종": "평떼 시비", "대상": ["인력", "작업량 조건"], "로직키": ["GF000036"]}, "조건": { "구분": "고르기", "규격": "고르기" }, "값칸": { "단위": "글", "수량": "수", "시공량(㎡)": "㎡" }, "줄": [ diff --git a/resources/master_data/소요량_산림품셈_06장_생육보조.json b/resources/master_data/소요량_산림품셈_06장_생육보조.json index b185b3b4..55f1cadf 100644 --- a/resources/master_data/소요량_산림품셈_06장_생육보조.json +++ b/resources/master_data/소요량_산림품셈_06장_생육보조.json @@ -344,7 +344,7 @@ "이름": "초본류 시비", "기준": "10,000㎡당", "출처": "산림품셈 6-7-3", - "용도": {"공종": "초본류 시비", "대상": ["기계", "인력", "작업량 조건"], "로직키": ["GF000059"]}, + "용도": {"공종": "초본류 시비", "대상": ["인력", "작업량 조건"], "로직키": ["GF000059"]}, "조건": { "명칭": "고르기" }, "값칸": { "단위": "글", "수량": "" }, "줄": [ diff --git a/resources/master_data/소요량_산림품셈_07장_집재_및_운재.json b/resources/master_data/소요량_산림품셈_07장_집재_및_운재.json index 669c35dc..3db546e5 100644 --- a/resources/master_data/소요량_산림품셈_07장_집재_및_운재.json +++ b/resources/master_data/소요량_산림품셈_07장_집재_및_운재.json @@ -960,7 +960,7 @@ "이름": "원목 운반-수확", "기준": "1회 적재량 · 1인 1일공정", "출처": "산림품셈 7-14", - "용도": {"공종": "원목 운반-수확", "대상": ["기계", "작업량 조건"], "로직키": []}, + "용도": {"공종": "원목 운반-수확", "대상": ["작업량 조건"], "로직키": []}, "조건": { "종별": "고르기" }, "값칸": { "적재량 용재 침엽수": "㎥", "적재량 용재 활엽수": "㎥", "적재량 신재": "㎥", "적재량 목탄": "kg", "운반": "연km", "상하차 침": "㎥", "상하차 활": "㎥", "적재량 용재 침엽수원문": "글", "적재량 용재 활엽수원문": "글", "적재량 신재원문": "글", "적재량 목탄원문": "글", "운반원문": "글" }, "줄": [ diff --git a/resources/tester/test_m01_api.py b/resources/tester/test_m01_api.py index 91d7f1b1..f2674423 100644 --- a/resources/tester/test_m01_api.py +++ b/resources/tester/test_m01_api.py @@ -113,6 +113,25 @@ def test_표_목록은_구분_상세구분으로_거름(client: TestClient) -> N assert page["page"] == 2 and len(page["tables"]) == 5 and page["total"] == every["total"] +def test_표_용도_대상으로_거름(client: TestClient) -> None: + """PLAN 1-1 셋째 줄 — 표마다 붙은 용도(공종·대상·로직키)로 거름.""" + one = _get(client, "/api/m01/tables", group="소요량", size=1)["tables"][0] + usage = _get(client, "/api/m01/table", file=one["file"], key=one["키"])["table"]["용도"] + assert usage["공종"] and usage["대상"] + target = usage["대상"][0] + narrowed = _get( + client, "/api/m01/tables", group="소요량", q=one["이름"], usage=target, size=500 + ) + assert one["키"] in {t["키"] for t in narrowed["tables"]} + ALL_TARGETS = ("인력", "기계", "재료", "할증", "환산", "작업량 조건") + other = next((v for v in ALL_TARGETS if v not in usage["대상"]), None) + if other: + excluded = _get( + client, "/api/m01/tables", group="소요량", q=one["이름"], usage=other, size=500 + ) + assert one["키"] not in {t["키"] for t in excluded["tables"]} + + def test_갈래_목록은_서버가_줌(client: TestClient) -> None: """소요량 · 계수 · 로직 컨테이너의 구분 · 상세구분 — 장 차례대로.""" for group in ("소요량", "계수", "로직"): @@ -332,10 +351,10 @@ def test_구분_목록(client: TestClient) -> None: survey = next(s for s in got["subs"] if s["name"] == "측량") assert survey["book"] == "측량노임" and "기능계 도화" in survey["details"] machine = _get(client, "/api/m01/subs", file="기계.json") - assert machine["slot"] == "원문" and [s["name"] for s in machine["subs"]] == [ - "건설품셈", - "산림품셈", - ] + names = [s["name"] for s in machine["subs"]] + assert machine["slot"] == "구분" and names[0] == "[00]토공기계" and names[-1] == "임업기계" + earthwork = next(s for s in machine["subs"] if s["name"] == "[00]토공기계") + assert earthwork["book"] == "건설품셈" and "불도저" in earthwork["details"] assert _get(client, "/api/m01/subs", file="재료_자재품목.json")["subs"] == [] diff --git a/resources/tester/test_masterdata_check.py b/resources/tester/test_masterdata_check.py index 5eb73936..298e6867 100644 --- a/resources/tester/test_masterdata_check.py +++ b/resources/tester/test_masterdata_check.py @@ -907,3 +907,22 @@ def test_품셈재료_고르기_칸이_실파일에_있음(): assert rows and all("고르기" in row for row in rows.values()) assert any(isinstance(row["고르기"], dict) for row in rows.values()) assert cm.check_links(whole) == [] + + +def test_로직_일괄_시험계산(): + """로직 전부를 시험 입력으로 돌림 — 멈춤은 데이터 결손(관리자 값·규격 미지정)만.""" + files = cm.load() + passed, stuck = cm.calc_all(files, mf.Master(files)) + assert passed >= 1270 + 남은_까닭 = ("관리자가 채울 값", "규격 선택 필요", "지역 값 없음", "맞는 줄") + assert [x for x in stuck if not any(c in x for c in 남은_까닭)] == [] + + +def test_시험입력이_기본값을_이김(): + """「시험입력」 은 시험 계산 전용 칸 — 고르기 첫 값·범위 위끝을 덮어씀.""" + row = { + "입력": [{"이름": "지역", "고르기": ["전국평균", "포항"]}, {"이름": "깊이", "범위": [1, 9]}] + } + assert cm.시험입력(row) == {"지역": "전국평균", "깊이": 9} + row["시험입력"] = {"지역": "포항"} + assert cm.시험입력(row)["지역"] == "포항" diff --git a/ui_template/ui_template_locale_m1.ts b/ui_template/ui_template_locale_m1.ts index 98907892..9cbb1b7c 100644 --- a/ui_template/ui_template_locale_m1.ts +++ b/ui_template/ui_template_locale_m1.ts @@ -58,7 +58,11 @@ export const ui_locales_m1 = { M01_FuelSub: ["구분", "Category"], M01_FuelDetail: ["상세구분", "Detail"], M01_LaborState: ["상태", "Status"], - M01_MachineSub: ["세부분류", "Sub-category"], + M01_MachineSub: ["구분", "Category"], + M01_MachineDetail: ["상세구분", "Detail"], + M01_UsageTarget: ["대상", "Target"], + M01_TableUsage: ["용도", "Usage"], + M01_TableUsageLogicCount: ["로직 {value}개", "{value} logic rules"], M01_GroupLabor: ["인력", "Labor"], M01_GroupMaterial: ["재료", "Materials"], M01_GroupMachine: ["기계", "Machines"],