diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md index 537aa721..8a4ff0c1 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md @@ -32,6 +32,9 @@ | 23 `COSTN.SMT` 전수파싱 | **단가산출 원장** — 참조 1,570·품 1,460·Q식 187개(10꼴)·운반 사이클 | (저장소 파일) | | 24 모듈구조 전수 | **46개 모듈 export** — `DP_Common` 73함수, 플러그인 규약, 동글, 8차 해소 | (저장소 파일) | | 25 설정키 전수와 식템플릿 | **설정 사슬 닫기** — `PRJLST.SMT` 키 241종, 간접비 식 26개 | (저장소 파일) | +| 26 편집기와 사이클식 | **`Cm` 54꼴·품셈 인자·식 편집기·낙찰율** — 계약/실행/기성 단계 발견 | (저장소 파일) | +| 27 계약·실행·기성 단계 | **설계 뒤 네 단계** — 낙찰율 3갈래, 기성은 계약제잡비율, 실행 차액보정 | (저장소 파일) | +| 28 변환·수량산출·식언어 | **식 변수의 대상/저장 비목** · 수량산출서 셀별명 · 조달청 변환 · 직종 106종 | (저장소 파일) | > **정본은 저장소 파일이다** — `resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/`. > 위 Orca 링크는 보기용이며, 문서를 지식DB 자리로 옮기면서 주소가 한 번 바뀌었다. @@ -104,6 +107,23 @@ | 추가금액 | 화면 문자열만 | **저장 구조** `ADD_AMT_단계_행_칸` | 25번 §1.3 | | 간접비 식 템플릿 | 일부 | **26개 전수** | 25번 §2 | | 식에 조건 분기 | 몰랐음 | ⚠ **`IF(...)` 존재** — 평가기 필수 요건 | 25번 §2.2 | +| `Cm` 사이클 식 | 안 봤음 | **54꼴** — 운반은 `L/V1+L/V2+상수`, 선회각별 초 | 26번 §1 | +| 품셈 인자 | 이름만 | **관측값** — `f`가 `1/1.3` 분수 문자열로 적힘 | 26번 §2 | +| 단가산출 편집 | 입력 화면 | **식 편집기** — 문법검사·손료계산 내장 | 26번 §3 | +| **낙찰율 `NAGCD`** | **몰랐음** | ⚠ **단가 그리드에 낙찰율 열.** 계약·실행·기성 단계 미분석 | 26번 §4·§8 | +| 계층 표기 | `T*`/`E*` | **`+=` ~ `+=====` 가 레벨** | 26번 §5 | +| `PM_*` ↔ `SET_REP` | 없음 | **64/74 대응** | 26번 §6 | +| 분석 범위 | 설계 단계만 | **계약·실행·기성·준공 네 단계 구조 확보** | 27번 | +| 낙찰율 적용 | 열만 확인 | **노·재·경 세 갈래 + 적용제외 공정 선택** | 27번 §2 | +| 기성 간접비 | 몰랐음 | **금회직접공사비 × 계약제잡비율** — 설계와 다름 | 27번 §3.1 | +| 부가세 축 | 단계 무관 | ⚠ **단계마다 선택지가 다름** | 27번 §3.3 | +| 실행예산 | 서식명만 | **중기 실행단가 + 차액 보정 순서** | 27번 §4 | +| 식 변수 | 참조·조건까지 | **변수 선언에 「대상비목·저장비목·%」** | 28번 §1 | +| `Q`식 목록 | 10꼴 관측 | ⚠ **사용자가 등록·수정** — 고정 목록 아님 | 28번 §1.1 | +| 수량산출 | `QCODE` 빈 표 | **수량산출서 별도 파일 + 셀별명 변수** | 28번 §2 | +| 조달청 호환 | 몰랐음 | **`Conv_Jodal_ST8`·`Conv_ST8_XML` 양방향** | 28번 §3 | +| 노임 직종 | 코드만 | **직종 사전 106종** 평문 | 28번 §3.1 | +| 암호화 파일 | 2개 | ⚠ **3개** — `EQSYNC.DBF` 추가 | 28번 §5 | 분석일: 2026-09-13 대상: `C:\경영정보(주)` diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/26_편집기와_사이클식.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/26_편집기와_사이클식.md new file mode 100644 index 00000000..f47e4745 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/26_편집기와_사이클식.md @@ -0,0 +1,135 @@ +# 편집 화면과 사이클 식 — 마지막 UI 층 + +점검일: 2026-09-13 +재현 스크립트: `40_스크립트/cycle_formula_extract.py` · `big_form_parse.py` · `print_form_map.py` + +## 1. ⭐ `Cm`(사이클 시간) 식 — 54가지 꼴 + +23번 §3이 `Q`식 10꼴을 찾았다. **그 분모인 `Cm`이 더 다양하다.** + +| 꼴 | 횟수 | 쓰임 | +|---|---:|---| +| `t1+t2+t3+t4` | 37 | **4단계 사이클** — 적재·왕복·적하·대기 | +| `t1+t2+t3+t4+t5` | 17 | 5단계 | +| `t1+t2+t3+t4+t5+t6` | 8 | 6단계 | +| **`L/V1+L/V2+0.25`** | 19 | **운반 — 거리/적차속도 + 거리/공차속도 + 0.25** | +| `L/40+L/43+0.25` | 2 | 같은 꼴에 속도를 직접 씀 | +| `18'sec(90˚)'` · `20'sec(135˚)'` | 다수 | **굴삭기 선회각별 사이클 초** | +| `2*20÷42` · `23.75+10` | 4 | 개별 산정 | + +⇒ **운반 계산이 `거리 ÷ 적차속도 + 거리 ÷ 공차속도 + 상수`** 꼴이다. 임도 토공 운반에 그대로 쓸 수 있다. +선회각(`90˚`/`135˚`)이 사이클 초를 바꾼다 — `18초`(90°) vs `20초`(135°). + +## 2. 품셈 인자 실측 + +`COSTN.SMT` 본문 8,096줄에서 인자 정의를 모았다. + +| 인자 | 뜻 | 관측값 | +|---|---|---| +| `q` | 버킷용량(㎥) | **0.7**(75) · 0.4 · 0.2 | +| `K`·`k` | 버킷계수 | 0.7 · **0.55** · 0.9 | +| `f` | 토량환산계수 | **분수 그대로** — `1/1.3` · `1/1.15` · `1/1.125` · `1/1.175` · `0.9/1.25` · `1.15/1.4` | +| `E` | 작업효율 | 0.9 · 0.6 · 0.45 · 0.35 | +| `V1`~`V4` | 주행속도(km/h) | 30 · 35 · 10 · 15 | +| `t1`~`t6` | 사이클 단계 시간 | 0.7 · 1.1 … | +| `P` | 출력 | **`qo*eo`** (기본출력 × 효율) — `qo`=3.2, `eo`=0.92 | +| `S` | — | 0.006 | + +⚠ **`f`가 `1/1.3` 같은 분수 문자열로 적힌다.** 18번 §2.1의 「좌→우 순차 평가」가 여기서도 필요하다 — 미리 소수로 접으면 자릿수가 어긋난다. + +## 3. `wM_Edit_San` — 단가산출은 **식 편집기**다 + +625 컴포넌트, 기능 캡션 173개. 단순 입력 화면이 아니다. + +```text +손료계산(F6) 중기 손료 계산기 내장 +계산(F9) · 계산결과(Alt+F9) +중기공식 편집 사용자문자 편집 +[함수 입력] · 연산기호 · 변수명 +입력/설정/문법오류 · 문법 강조기능 · 문법설명 보기 ← 식 문법 검사기 +금액변수 초기화 · 금액변수, 제외금액초기화 +특수코드(잡재료비...) +【결과적용 비목 ː 결과값에 낙찰율적용 · 결과금액조정 · 계약단가 +단가가 0원인 비목은 입력안함 +목록표 호출 → 노무비·재료비·경비·일위대가표·중기사용료·단가산출근거·일식/견적·그림코드 +``` + +⇒ **사용자가 식을 직접 쓰고 프로그램이 문법을 검사한다.** `COSTN.SMT`의 전개 텍스트(23번)가 바로 이 편집기의 산출물이다. 재구현하려면 **식 언어와 검사기**가 필요하다. + +## 4. ⚠ `낙찰율`(`NAGCD`) — 계산 사슬에 없던 것 + +`wBoq`의 단가 그리드 **23열 중 마지막이 `NAGCD`(낙찰율)**이고, `wM_Edit_San`에도 `결과값에 낙찰율적용`·`계약단가`가 있다. + +```text +RGrdCostB / CostD / CostX / CostM / CostL (코드 종류별 5벌) + 코드 · 명칭 · 규격 · 단위 + TAMT1·LAMT1·MAMT1·SAMT1 ← 차수 1 + … TAMT4·LAMT4·MAMT4·SAMT4 ← 차수 4 + BQCODE · EQCODE + NAGCD ← 낙찰율 +``` + +⇒ **낙찰율이 단가 수준에 붙는다.** 설계 → 계약 단계에서 낙찰율을 먹여 **계약단가**를 만드는 경로가 있다. `SET_REP`의 `계약,실행내역서`·`실행예산서Ⅰ/Ⅱ`(20번 §3)와 이어진다. + +`PRJLST.SMT`의 `I_NAG_RATE`·`Y_KONGSU`, `Start8x.Ini`의 `[NAG_HAL]`(20번 §2.6)도 같은 갈래다. + +**우리 계산 사슬 8단계(19번 §4)는 「설계」까지다.** 계약·실행·기성 단계는 아직 안 다뤘다. + +## 5. `wBoq` — 내역 편집 화면 + +935 컴포넌트, 기능 캡션 267개. 계산에 닿는 것만 추리면 이렇다. + +```text +일괄할증 할증 일괄 적용 +제외금액 표시 C* 구역 (16번 §4.2) +계표시(레벨) 1단계 상향/하향 계층 레벨 조작 +T. 주석문 → 계시작(+=~+=====)으로 변환 계층 표기와 주석의 변환 +수량산출서에서 내역수량 및 공종 가져오기 +일위대가표 풀어넣기 호표를 내역 행으로 전개 +실행예산서 작업 / 실행예산작업=> +내역보관함 (1)(2)(3) 작업 중 임시 보관 3벌 +단가 불러오기 — 일위대가·단가산출·건설기계·자재·노임·경비·견적·실적 +``` + +⇒ **`계시작(+=~+=====)` 표기가 `BOQ11`의 `T*`/`E*` 계층(16번 §4.1)과 이어진다.** `=` 개수가 레벨이다 — `wM_KanJub_K`의 `rd_Filter`(22번 §3.5)와 같은 표기. + +## 6. `PM_*` 인쇄 폼 ↔ `SET_REP` 75종 + +`Prn_*` export **152개**를 모아 `SET_REP` 74종과 이름으로 이었다 — **64종이 이어졌다.** + +이어지지 않은 10종은 계획·조서 계열이다. + +```text +장비투입계획 · 인력투입계획 · 자재사용계획 +실행예산서Ⅰ · Ⅱ +간이공사비 산출명세서 +기성검사조서(을/병) · 준공조서(을/병) +``` + +⇒ 이들은 **`Prn_` 접두가 아닌 다른 경로**(`Rep_Print`·`GS_Prn_Rec`, 24번 §5)로 출력되거나, 우리 설치본에 해당 모듈이 없다. + +한 서식이 여러 `Prn_*`에 대응하는 것은 **양식 변형**(횡/종·`_L`·`_EXL`) 때문이다 — `_L`은 가로, `_EXL`은 엑셀판(24번 §3). + +## 7. 이번 점검이 바꾸는 것 + +| 항목 | 이전 | 지금 | +|---|---|---| +| `Cm` 사이클 식 | 안 봤음 | ✅ **54꼴** — 운반은 `L/V1+L/V2+상수` | +| 품셈 인자 | Q식 인자 이름만 | ✅ **관측값** — `q`·`K`·`f`(분수)·`E`·`V`·`t`·`P=qo*eo` | +| 단가산출 편집 | 입력 화면으로 봄 | ✅ **식 편집기** — 문법검사·손료계산·함수입력 | +| **낙찰율 `NAGCD`** | **몰랐음** | ⚠ **단가 수준에 낙찰율 열이 있음.** 계약·실행 단계 미분석 | +| 내역 계층 표기 | `T*`/`E*` 만 | ✅ **`+=` ~ `+=====` 가 레벨** | +| `PM_*` ↔ `SET_REP` | 없음 | ✅ **64/74 대응** | + +## 8. 남은 것 — 계약·실행·기성 단계 + +우리가 판 것은 **설계 단계**다. 프로그램에는 그 뒤가 더 있다. + +| 단계 | 흔적 | +|---|---| +| **계약** | `NAGCD` 낙찰율 · `계약단가` · `계약,실행내역서`(0623) · `당초설계 → 계약내역 변환등록`(`wM_Mk_Cont`) | +| **실행예산** | `실행예산서Ⅰ/Ⅱ`(0673·0674) · `wBoq`의 `실행예산서 작업` | +| **기성** | `기성부분총괄내역서`(0632)~`기성부분수량조서`(0638) · `wM_KanJub_K`(기성 제잡비) · `Prn_Jab_K` | +| **준공** | `준공조서(을/병)`(0646·0647) | + +⚠ 이 넷은 **계산 규칙이 설계와 다를 수 있다** — 실제로 기성 제잡비는 부가세 선택지가 다르다(22번 §3.5). 다음 판의 대상이다. diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/27_계약_실행_기성_단계.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/27_계약_실행_기성_단계.md new file mode 100644 index 00000000..f0d07fa8 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/27_계약_실행_기성_단계.md @@ -0,0 +1,162 @@ +# 계약·실행예산·기성·준공 — 설계 뒤의 네 단계 + +점검일: 2026-09-13 +계기: 26번 §8에서 **「우리가 판 8단계는 설계까지」**임이 드러났다. 그 뒤를 판다. +재현 스크립트: `40_스크립트/stage_form_parse.py` + +## 1. 프로그램은 설계에서 끝나지 않는다 + +```text +설계 ──▶ 계약 ──▶ 실행예산 ──▶ 기성(여러 회) ──▶ 준공 +``` + +19번 §4의 계산 사슬 8단계는 **첫 칸(설계)**만 덮는다. 나머지 넷은 **밑수도 요율도 다르다.** + +## 2. 계약 — `wM_Mk_Cont` (당초설계 → 계약내역 변환등록) + +### 2.1 낙찰율을 **비목마다 따로** 먹인다 + +```text +단가 적용율 【 노 】 ___ % 【 재 】 ___ % 【 경 】 ___ % +``` + +⇒ **하나의 낙찰율이 아니라 노무·재료·경비 세 갈래**다. 26번 §4의 `NAGCD`(낙찰율 열)가 이것을 담는다. + +### 2.2 적용 옵션 + +| 옵션 | 뜻 | +|---|---| +| `기초단가(재,노,경,일식)에 단가적용율 적용하기` | 기초단가까지 내려가 적용 | +| `적용율 적용된 일위대가/산출근거 생성하기` | 호표도 새로 만듦 | +| `계약내역내 동일코드의 계약단가 개별생성` | 같은 코드라도 계약본은 따로 | +| `노무비율 적용` | 노무비 비율 별도 | +| `비과세자재대(원가계산)에 단가적용율 적용하기` | 비과세 자재도 대상 | +| **`단가적용율이 0% 이면 계약단가(W코드)를 "0"化 (공내역 생성)`** | **0% → 공내역** | + +### 2.3 ⭐ 적용 제외 공정을 고른다 + +```text +그리드 rGrd_Boq : 공종번호 | 명칭 | 규격 | 금액 | 레벨 | **적용제외** | RecNo +레벨필터 : 소계 이상 … 광역대계 이상 (9단계) +``` + +화면 안내가 **「적용율을 제외할(ex 관급자재대..) 공정을 선택」**이라 적는다. + +⇒ **관급자재대처럼 낙찰율을 먹이면 안 되는 공정을 행 단위로 제외**한다. 16번 §4.2의 `C*` 제외금액 구역과 **다른 개념**이다 — 그쪽은 직접비 합산 제외, 이쪽은 낙찰율 적용 제외다. + +보조 기능으로 `예상적용율 찾기`·`적용금액 미리계산`이 있다 — **목표 계약금액을 넣으면 역산해 적용율을 찾아 준다.** + +## 3. 기성 — `wM_KanJub_K` (기성 제잡비 계산서) + +### 3.1 ⭐ 간접비가 **단일 계약제잡비율**로 바뀐다 + +```text +[ 금 회 간 접 비 적 용 ] 금회직접공사비 × 계약제잡비율 +``` + +설계 단계는 항목마다 고유 밑수에 고유 요율을 곱했다(06번 §3). **기성은 그렇지 않다.** + +⇒ 11번 §10이 「계약 제잡비율 적용 시 간접노무비부터 부가세 직전까지를 `직접비 변경분 × 계약 제잡비율`로 조정」이라 한 것이 **기성 단계의 기본 방식**이다. + +### 3.2 4단 누적 구조 + +```text +rGrd_Jab : 공종 | 명칭 | 규격 | 도급액 | 전회금액 | 전율 | 금회금액 | 금율 + | 누계금액 | 누율 | 구분 | 종류 | **계약잡비율** | D_Typ +``` + +`전회 → 금회 → 누계`와 **각각의 비율(전율·금율·누율)**을 함께 들고 간다. 보고서 서식도 같다. + +| 서식 | 열 | +|---|---| +| `기성내역서`(0633) | 계약 \| 전회 \| 금회 \| 누계 | +| `기성내역서(사정)`(0634) | + **사정** | +| `기성내역서(기성율)`(0635) | + 비율 | +| `기성부분총괄내역서`(0632) | + 금액 \| 비율 | +| `기성검사조서(을/병)`(0636·0637) | 계약금액 \| **기성고(%)** \| 전회 \| 금회 \| 누계 \| 기성금액 | +| `기성부분수량조서`(0638) | 기성수량 \| 전회누계 \| 금회 \| 누계 \| **기성(%)** \| **잔량** | + +### 3.3 부가세 선택지가 설계와 다르다 + +```text +기성 : (0) 직접입력 · (1) 공급가액의 10% · (2) 재료비의 10% · (3) **재료비+산출경비의 10%** +설계 : 공급가액의 10% · 재료비의 10% · 없음 · 산림조합 형식 · 산림조합-면세품 +``` + +⇒ **같은 이름의 축이라도 단계마다 선택지가 다르다.** 재구현은 단계를 축의 일부로 삼아야 한다. + +절사 축은 같다 — `공급가액 절사`·`총공사비 절사` 각각 9택, `이윤금액 직접입력`까지. + +### 3.4 저장 자리 + +`BOQ11`에 **`QTY1_B` · `QTY1_N` · `QTY1_O` · `QTY1_H`** 네 칸이 있다(02번). 설계 단계 표본에서는 **전부 0**이다. + +⇒ **기성 수량 칸**으로 보인다(전회/금회/기타). 기성 STC 표본이 없어 각 글자의 뜻은 **B등급**이다. + +## 4. 실행예산 — `wM_Boq_ExecX` (중기 실행단가) + +```text +시간/단위당 중기실행단가 계산 및 입력 + 1단위당 중기사용료 : ____ 원/단위 1단위 = ____ 시간 + 최초단가 노무비 / 재료비 / 경비 → 실행단가 + 절사 기준 : 1원 · 10원 · 100원 · 1,000원 · 10,000원 · 100,000원 미만절사 + 차액 보정 순서 : 기본보정 / 노무비 / 재료비 / 경비 + 최초수량 → 실행수량 +``` + +⇒ **실행예산은 설계단가를 그대로 쓰지 않고 「실행단가」를 따로 만든다.** + +⭐ **`차액 보정 순서`** — 성분별로 절사하면 합계와 어긋나는데, **그 차액을 어느 비목에 몰아줄지 고른다.** 16번 §4.4의 끝전조정과 같은 성격이되 **단가 수준**에서 일어난다. + +보고서는 `실행예산서Ⅰ/Ⅱ`(0673·0674)이고 열은 `공종 | 설계(계획) | 실행예산 | 작업명 | 구분`이다. + +## 5. 준공 + +`준공조서(을/병)`(0646·0647), 열은 **`계약금액 | 준공금액`** 둘뿐이다. 별도 계산 없이 최종 누계를 옮기는 것으로 보인다. + +## 6. 보조 — `wM_GetAMT` (잡비 금액 불러오기) + +```text +RDbGrid_Prj : 공사번호 | 공사명 | 직접공사비 | 총공사비 | 공사종류 | PCODE +RDbGrid_Boq : 공종 | 명칭 | 규격 | 수량 | 단위 | 계금액 | 비고 +관/사급내역 보기 · 관련항목 보기 · 공종 추려보기 +``` + +⇒ **다른 프로젝트의 금액을 밑수로 끌어온다.** 11번 §12의 「사용자는 다른 내역 금액을 더블클릭으로 밑수에 불러올 수 있다」가 이 화면이다. + +## 7. 단계별 모듈 분포 + +| 문자열 | 가진 모듈 | +|---|---:| +| `누계` | 16 | +| `금회` | 15 | +| `전회` | 14 | +| `기성` | 12 | +| `낙찰` | 4 (`ST_EdSan`·`ST_PList`·`ST_Prt`·`ST_Sys`) | +| `실행예산` | 4 (`STmate`·`ST_Boq`·`ST_Prt`·`ST_U_Convert`) | +| **`계약제잡비`** | **1 (`ST_KanJub`)** | + +⇒ 기성 표기는 널리 퍼져 있지만 **계약제잡비율 계산은 `ST_KanJub` 한 곳**이다. + +## 8. 이번 점검이 바꾸는 것 + +| 항목 | 이전 | 지금 | +|---|---|---| +| 분석 범위 | 설계 단계만 | ✅ **계약·실행·기성·준공 네 단계 구조** | +| 낙찰율 | 열이 있다는 것만 | ✅ **노·재·경 세 갈래 + 적용제외 공정 선택** | +| 기성 간접비 | 몰랐음 | ✅ **금회직접공사비 × 계약제잡비율** (설계와 다름) | +| 기성 누적 | 몰랐음 | ✅ **전회·금회·누계 + 각 비율**, 사정·잔량 | +| 부가세 축 | 단계 무관으로 봄 | ⚠ **단계마다 선택지가 다름** | +| 실행예산 | 서식 이름만 | ✅ **중기 실행단가 + 차액 보정 순서** | +| `QTY1_B/N/O/H` | 「특수 수량」 | ◐ **기성 수량 칸으로 추정** (B등급, 표본 없음) | + +## 9. 남은 것 + +| 무엇 | 왜 막혔나 | +|---|---| +| 기성 회차별 실제 값 | **기성 STC·XLSX 표본 0건.** 한 건만 있으면 §3 전체가 실증됨 | +| 계약내역 표본 | 같음 — 낙찰율 적용 결과를 원 단위로 못 맞춰 봄 | +| `QTY1_B/N/O/H` 글자 뜻 | 기성 표본 필요 | +| 실행예산 표본 | 같음 | + +⇒ **설계 단계는 원 단위까지 재현했지만(16번), 뒤 네 단계는 「구조는 알고 값은 못 맞춤」 상태다.** 표본이 생기면 같은 골든셋 방법으로 바로 검증할 수 있다. diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/28_변환_수량산출_식언어.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/28_변환_수량산출_식언어.md new file mode 100644 index 00000000..b03e3a97 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/28_변환_수량산출_식언어.md @@ -0,0 +1,171 @@ +# 변환·수량산출·식 언어 — 남은 모듈 훑기 + +점검일: 2026-09-13 +대상: `ST_U_Convert` · `STmateQty8` · `ST_EdSan` · `EQSYNC.DBF` +재현 스크립트: `40_스크립트/module_string_probe.py` + +## 1. ⭐ 식 언어의 변수 선언 — 「대상」과 「저장」 + +`ST_EdSan.CPM`(단가산출 편집기)의 화면 문자열에서 식 언어의 핵심이 드러난다. + +```text +특수코드(&PA01&) / 변수 ------------- + 금액변수 대상:M, 저장:S, %】 + 소계변수 대상:M, 저장:L, %】 + 금액변수 대상:M, 저장:S 】 + 소계변수 대상:M, 저장:L 】 + 금액변수로 지정 】 + 소계변수로 지정 】 + 금액을 계산후 제외처리】 +``` + +⇒ 변수를 선언할 때 **세 가지를 함께 지정**한다. + +| 항목 | 뜻 | +|---|---| +| **대상** | 어느 비목에서 값을 **가져올지** (`M` 재료 · `L` 노무 · `S` 경비) | +| **저장** | 어느 비목에 **넣을지** | +| **%** | 비율 적용 여부 | + +23번 §2에서 본 `&X00006L&`(중기 X코드의 노무 성분)이 **참조**라면, 이것은 **중간 변수 선언**이다. `DP_Common`의 `GET_VARI_VAL`·`SET_VARI_VAL`(24번 §2.1)이 이 변수를 다룬다. + +`금액변수`(단일 금액)와 `소계변수`(누적 소계)가 갈리고, **`금액을 계산후 제외처리`** 는 계산은 하되 합계에서 빼는 자리다. + +**재구현 필수** — 단가 식은 「숫자 계산」이 아니라 **비목 사이의 값 이동**이다. 변수마다 `(대상비목, 저장비목, 비율여부)`를 함께 저장해야 한다. + +### 1.1 중기공식은 사용자가 등록한다 + +```text +수정된 중기공식을 저장하시겠습니까? 선택된 중기공식을 삭제하시겠습니까? +신규공식 추가 새로운 중기공식을 추가하시겠습니까? 공식+코드 +``` + +⇒ 23번 §3의 **`Q`식 10꼴은 고정 목록이 아니라 사용자가 늘릴 수 있는 등록부**다. 하드코딩이 더 확실히 금지된다. + +## 2. `STmateQty8.CPM` — 수량산출서와 수량변수 + +```text +기본수량변수 ↔ 확장수량변수(셀별명) + 확장수량변수 읽어오기 실패 + 셀참조 에러가 있는 수량변수(셀별명)를 포함하고 + 기본수량변수값을 확장수량변수값으로 할당 + 방금 저장된 수량산출서의 확장수량변수의 값으로 +전송될 기본수량 변수 * +단가산출에 수량변수를 전송하려면.. +수량산출서 파일 저장하기 / 불러오기 + 수량산출서로 저장하려는 파일이 손상되었거나 … 호환되지 않는 파일형식 +``` + +⇒ **수량산출서가 별도 파일**이고, 그 안의 **셀에 별명(변수)을 붙여** 단가산출로 전송한다. + +| 갈래 | 뜻 | +|---|---| +| **기본수량변수** | 내역에 바로 붙는 수량 | +| **확장수량변수(셀별명)** | 엑셀 셀을 가리키는 이름 — 산출 과정의 중간값 | + +`내역코드`·`내역수량`·`내역단위`가 함께 나오므로 **수량산출서 → 내역**이 코드로 이어진다. + +⚠ 표본 STC의 `QCODE.DBF`는 모두 비어 있다(02번). **수량산출서를 쓰지 않은 프로젝트**라 그렇고, 기능은 실재한다. + +Aislo의 B08 수량 산출과 직접 겹치는 자리다. + +## 3. `ST_U_Convert.CPM` — 조달청·XML 양방향 변환 + +export 20개가 변환 경로를 그린다. + +```text +Conv_Jodal_ST8 ↔ Conv_ST8_Jodal 조달청 ↔ ST8 +Conv_ST8_XML ↔ Conv_XML_ST8 ST8 ↔ XML +Conv_BOQ · Conv_Equip 내역·장비 변환 +MK_K_FLD · CHK_K_FLD · MK_ADD_K_REP 호환규정 필드 생성·검사 +MK_SET_REP · Appn_Tag_REP 보고서 서식·태그 +ST_ConvToWin8 · ST_BlankWin8 구버전 → Win8판 +ST_Conv_Mode1/2/3 · ST_Conv_Data · ST_Copy_Data +``` + +⇒ **납품 호환 경로가 프로그램 안에 있다.** `호환규정코드`가 `wM_Mrg_BSC`의 매칭 키 1순위였던 것(20번 §2)과 이어진다. + +XML **스키마는 문자열로 안 남는다** — 실행 중에 조립한다. 태그 이름을 정적으로는 못 얻는다. + +### 3.1 노임 직종 사전 106종 + +같은 모듈에 **직종 목록이 통째로** 들어 있다. + +```text +보통인부 · 특별인부 · 조력공 · 비계공 · 특수비계공 · 형틀목공 · 철근공 +용접공(일반/철도) · 콘크리트공 · 보링공(지질조사) · 조적공 · 치장벽돌공 +창호공 · 샷시공 · 창호목공 · 함석공 · 덕트공 · 노즐공 · 인력운반공 +건설기계운전기사 · 건설기계운전사 · 화물차운전사 · 일반기계운전사 +건설기계조장 · 건설기계운전조수 · 중기운전사 · 중기조장 · 중기운전조수 +기계공 · 기계설비공 · 기계설치공 +준설선기관장 · 준설선기관사 · 준설선전기사 · 고급선원 · 보통선원 · 선장 · 선부 · 갱부 +플랜트 계열 7 (배관·제관·특별인부·케이블전공·계장·덕트·보온) +원자력 계열 8 (배관·제관·특별인부·케이블전공·계장·덕트·보온·비파괴시험) +품질관리원 3등급 · 시험관련 기사/산업기사/기능사 · 조림인부 … +``` + +⇒ **`CONLD`·`COND_`의 직종 코드(`L00007`·`L00008`·`L00010`…)가 가리키는 이름표**다(18번 §2.1, 20번 §2.5). 노임 환산식을 어느 직종에 걸지 고를 때 쓰는 목록이다. + +공종 계열 문자열도 함께 있다 — `토공 · 배수공 · 구조물공 · 포장공 · 조경공 · 부대공 · 기타공`, 그리고 집계 레벨 `총합계 · 총대계 · 광역계 · 광역총계 · 광역대계`(26번 §5의 `+=` 레벨과 짝). + +## 4. 식 문법 오류 메시지 — 규칙이 드러난다 + +```text +번째줄에 수량코드 문법오류입니다 +번째줄에 단가코드 앞,뒤에 거듭제(곱) … +번째줄에 그림코드는 1개이상 사용 … +… 는 등록된 수량코드가 아닙니다. +… 코드에서 입력된 강제금액을 " +… 코드는 항목집계되지 않았습니다. +변수를 코드로 변환 +중기비사용료의 코드를 B코드("B00…")로 … +… 코드는 실적단가 사용으로 … +연결코드 계산오류 · 계산코드 집계를 위한 파일을 열지 못했습니다. +해당코드의 [비목별/군별단가]를 확인/입력하십시오 +``` + +드러나는 규칙. + +| 규칙 | 근거 | +|---|---| +| 식은 **줄 단위**로 검사된다 | `번째줄에 … 문법오류` | +| **단가코드에 거듭제곱을 붙일 수 있다** | `단가코드 앞,뒤에 거듭제…` | +| **그림코드는 호표당 1개 이상** 제약 | `그림코드는 1개이상 사용` | +| **강제금액**을 코드에 직접 넣을 수 있다 | `입력된 강제금액을` | +| **항목집계에서 빠지는 코드**가 있다 | `항목집계되지 않았습니다` | +| 단가는 **비목별·군별**로 나뉜다 | `[비목별/군별단가]` | + +## 5. `EQSYNC.DBF` — 세 번째 암호화 파일 + +```text +EQSYNC.DBF 54행 × 3열 (2.9 KB) + NAME(C40) · SYNC(M10 메모) · INS_X(L1) + 본문 난독화 — 읽히지 않음 +``` + +`ST_EdSan.CPM`의 `Edit_EQ_SYNC` 가 다루며 **중기(장비) 동기화 표**로 보인다. `EQSYNC.SMT`가 짝으로 있다. + +⇒ **암호화 목록이 셋으로 늘었다** — `BDQTY.DBF` · `SYSINFO.DBF` · **`EQSYNC.DBF`**. 앞 둘은 STC 안, 이것은 설치 폴더에 있다. + +## 6. 이번 점검이 바꾸는 것 + +| 항목 | 이전 | 지금 | +|---|---|---| +| 식 언어 | 참조·사칙·조건까지 | ✅ **변수 선언에 「대상비목·저장비목·%」** | +| `Q`식 목록 | 10꼴 관측 | ⚠ **사용자가 등록·수정·삭제** — 고정 목록 아님 | +| 수량산출 | `QCODE` 빈 표로만 | ✅ **수량산출서 별도 파일 + 셀별명 변수** | +| 조달청 호환 | 몰랐음 | ✅ **`Conv_Jodal_ST8`·`Conv_ST8_XML` 양방향** | +| 노임 직종 | 코드만 | ✅ **직종 사전 106종** | +| 식 문법 | 몰랐음 | ✅ 줄 단위 검사·거듭제곱·강제금액·집계제외 | +| 암호화 파일 | 2개 | ⚠ **3개** — `EQSYNC.DBF` 추가 | + +## 7. 남은 것 + +| 무엇 | 상태 | +|---|---| +| XML 스키마 태그 | 실행 중 조립 — 정적으로 못 얻음 | +| `EQSYNC` 내용 | 암호화 | +| 수량산출서 파일 형식 | 표본 0건 (`QCODE` 전부 빈 표) | +| 조달청 변환 결과물 | 표본 0건 | + +⇒ **설치 폴더·프로젝트 파일·출력물에서 얻을 수 있는 것은 사실상 다 얻었다.** 남은 넷은 전부 **표본 부재** 또는 **암호화**다. diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/cycle_formulas.txt b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/cycle_formulas.txt new file mode 100644 index 00000000..bf2e8a7f --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/cycle_formulas.txt @@ -0,0 +1,63 @@ +### Cm(사이클 시간) 식 — 서로 다른 꼴 54개 / 본문 8096줄 + 'm3/hr' 239 + 'm2/hr' 38 + t1+t2+t3+t4 37 + '㎥/hr' 22 + L/V1+L/V2+0.25 19 + t1+t2+t3+t4+t5 17 + 20'sec(135˚)',E 17 + 20'sec(135)' 16 + 18'sec(135˚)',E 15 + 18'sec(90)' 14 + 18'sec(90˚)',E 12 + '㎥/Hr' 11 + t1+t2+t3+t4+t5+t6 8 + '회/hr' 8 + 18'sec(90˚)' 7 + t1+t2+t3+t4+t5' 7 + 20'(135°)' 5 + 'ton/hr' 5 + '톤/hr' 5 + 18'sec(90˚)',E1 4 + '대/hr' 4 + 2*20÷42 4 + 23.75+10 4 + 20'sec(135˚)' 3 + t1+t2+t3+t4' 3 + L/40+L/43+0.25 2 + +### 인자 정의 (상위 34) + q = 0.7 75회 + E = 0.9 37회 + Cm = t1+t2+t3+t4= 23회 + k = 0.7 22회 + k = 0.55 21회 + V2 = 35 19회 + K = 0.55 18회 + f = 1 18회 + K = 0.9 18회 + k = 0.9 18회 + P = qo*eo= 18회 + V3 = 10 18회 + V4 = 15 18회 + t4 = 0.7 15회 + K = 0.7 14회 + f = 1/1.3= 14회 + f = 1.0 13회 + qo = 3.2 12회 + f = 1/1.15= 12회 + E = 0.6 11회 + q = 0.4 11회 + f = 0.9/1.25= 11회 + E = 0.45 11회 + t3 = 1.1 11회 + Cm = t1+t2+t3+t4+t5= 10회 + E = 0.35 10회 + f = 1/1.125= 10회 + f = 1.15/1.4= 10회 + eo = 0.92 10회 + V1 = 30 9회 + f = 1/1.175= 8회 + S = 0.006 8회 + q = 0.2 8회 + V1 = 35 8회 diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/print_form_map.txt b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/print_form_map.txt new file mode 100644 index 00000000..222f6e90 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/print_form_map.txt @@ -0,0 +1,81 @@ +### SET_REP 서식 74종 ↔ Prn_* export 152개 + +INDX 서식명 제목 대응 export(추정) +0101 재료비목록표 재료비 목록표 Prn_SanMok, Prn_SanMok_EXL, Prn_SanMok_L +0102 노무비목록표 노무비 목록표 Prn_SanMok, Prn_SanMok_EXL, Prn_SanMok_L +0103 경비목록표 경비 목록표 Prn_SanMok, Prn_SanMok_EXL, Prn_SanMok_L +0104 W코드목록표 일식/견적 목록표 Prn_SanMok, Prn_SanMok_EXL, Prn_SanMok_L +0105 자재단가대비표 자재단가 대비표 Edit_Dan, Prn_Col_Dan, Prn_Col_Dan_EXL +0201 환율및기초자료 환율및 기초자료 +0202 중기목록표 중기 목록표 Prn_Joong, Prn_Joong2, Prn_Joong2_L +0203 시간당중기사용료 중 기 사 용 료 Prn_Joong, Prn_Joong2, Prn_Joong2_L +0301 일위대가목록표 일위대가 목록표 Prn_SanMok, Prn_SanMok_EXL, Prn_SanMok_L +0302 일위대가표 일 위 대 가 표 Prn_iLWi, Prn_iLWi_EXL, Prn_iLWi_S +0303 일위대가표(수공양식) 일 위 대 가 표 Prn_iLWi, Prn_iLWi_EXL, Prn_iLWi_S +0401 단가산출근거목록표 단가산출근거 목록표 Calq_San, Edit_SanKun, Prn_SanMok +0402 단가산출근거 단 가 산 출 근 거 Calq_San, Edit_SanKun, Prn_SanMok +0501 재료비수량집계표 재료비 수량,금액 집계표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0502 노무비수량집계표 노무비 수량,금액 집계표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0503 경비수량집계표 경 비 수량,금액 집계표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0504 W코드수량집계표 일식/견적 수량,금액 집계표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0505 중기시간집계표 중기 시간,금액 집계표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0601 총괄내역서 총 괄 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0602 총괄내역서(종양식) 총 괄 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0603 내역서 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0604 내역서(종양식) 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0605 분할내역서(횡양식) 분 할 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0606 내역서(도공양식) 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0607 사,관급내역서 관 급 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0613 견적내역서 견 적 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0614 견적내역서(종양식) 견 적 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0615 견적단가대비표 견 적 단 가 대 비 표 +0623 계약,실행내역서 계 약 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0624 계약,실행내역서(종양식) 계 약 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0632 기성부분총괄내역서 기성부분 총괄내역서 Prn_Jab, Prn_Jab_EXL, Prn_Jab_K +0633 기성내역서 기 성 내 역 서 Prn_Jab, Prn_Jab_EXL, Prn_Jab_K +0634 기성내역서(사정) 기 성 내 역 서 Prn_Jab, Prn_Jab_EXL, Prn_Jab_K +0635 기성내역서(기성율) 기 성 내 역 서 Prn_Jab, Prn_Jab_EXL, Prn_Jab_K +0636 기성검사조서(을) 기성부분 감독/검사 조서(을) Prn_Jab, Prn_Jab_EXL, Prn_Jab_K +0637 기성검사조서(병) 기성부분 감독/검사 조서(병) Prn_Jab, Prn_Jab_EXL, Prn_Jab_K +0638 기성부분수량조서 기 성 부 분 수 량 조 서 Prn_Jab, Prn_Jab_EXL, Prn_Jab_K +0643 변경내역서 설 계 변 경 내 역 서 CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0644 변경내역서(종양식) 설 계 변 경 내 역 서 CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0645 설계변경내역서(변경율) 설 계 변 경 내 역 서 CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0646 준공조서(을) 준공 감독/검사조서(을) +0647 준공조서(병) 준공 감독/검사조서(병) +0648 설계변경증감대비표 설 계 변 경 증 감 대 비 표 CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0206 실적단가목록표 실적공사비 단가목록표 Prn_SanMok, Prn_SanMok_EXL, Prn_SanMok_L +0608 공사원가계산서 공 사 원 가 계 산 서 Prn_Won_A, Prn_Won_A_C, Prn_Won_A_EXL +0609 총괄집계표 총 괄 집 계 표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0651 총괄내역서(구.시도) 총 괄 내 역 서 (구.시도) Prn_Nae, Prn_NaeW, Prn_NaeW_P +0652 총괄내역서(시도) 총 괄 내 역 서 (시도) Prn_Nae, Prn_NaeW, Prn_NaeW_P +0653 총괄내역서(구도) 총 괄 내 역 서 (구도) Prn_Nae, Prn_NaeW, Prn_NaeW_P +0654 설계내역서(굴착) 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0655 설계내역서(구.시도) 설 계 내 역 서 (구.시도) Prn_Nae, Prn_NaeW, Prn_NaeW_P +0656 설계내역서(시도) 설 계 내 역 서 (시도) Prn_Nae, Prn_NaeW, Prn_NaeW_P +0661 변경총괄내역서(구.시도) 변 경 총 괄 내 역 서 (구.시도) CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0662 변경총괄내역서(시도) 변 경 총 괄 내 역 서 (시도) CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0663 변경총괄내역서(구도) 변 경 총 괄 내 역 서 (구도) CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0664 변경내역서(굴착) 변 경 내 역 서 CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0665 변경내역서(구.시도) 변 경 내 역 서 (구.시도) CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0666 변경내역서(시도) 변 경 내 역 서 (시도) CHANGE_AMT, CHANGE_STR, CHANGE_STR_LO +0671 장비투입계획 장 비 투 입 계 획 +0672 총괄내역서(비교) 총 괄 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0673 실행예산서Ⅰ 실 행 예 산 서 +0674 실행예산서Ⅱ 실 행 예 산 서 +0675 재료비집계표 재 료 비 집 계 표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0676 노무비집계표 노 무 비 집 계 표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0677 중장비집계표 중 장 비 집 계 표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0678 자재사용계획 자 재 사 용 계 획 +0679 인력투입계획 인 력 투 입 계 획 +0693 내역서 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0694 내역서(종양식) 설 계 내 역 서 Prn_Nae, Prn_NaeW, Prn_NaeW_P +0695 간이명세서 간이공사비 산출명세서 +0106 포준시장목록표 표준시장/시장시공 목록표 Prn_SanMok, Prn_SanMok_EXL, Prn_SanMok_L +0506 일위대가수량집계표 일위대가 수량,금액 집계표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L +0507 단가산출근거수량집계표 단가산출근거 수량,금액 집계표 Calq_San, Edit_SanKun, Prn_Col_Dan +0508 표준시장집계표 표준시장/시장시공 수량,금액 집계표 Prn_Col_Dan, Prn_Col_Dan_EXL, Prn_Col_Dan_L + +이름으로 이어진 것 64 / 74 + +Prn_* export 이름 전수 152개 diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/stmate_code_name_list.csv b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/stmate_code_name_list.csv new file mode 100644 index 00000000..cb7a2de1 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/stmate_code_name_list.csv @@ -0,0 +1,895 @@ +code,name,size,unit +B00001,유로폼,보통,m2 +B00002,철근(현장)가공,Type-Ⅰ-----아님,ton +B00003,모르타르배합,1:3,m3 +B00004,깬잡석찰쌓기,L3=45cm내외,M2 +B00005,임도준공표지석,30x20x60,개소 +B00006,돌붙임,"메붙임,L3=35cm이하",m2 +B00007,횡단개거(토사형),,m +B00008,횡단개거(토사형),L=5.0m,개소 +B00009,깬잡석메쌓기,L3=45cm내외,M2 +B00010,"기슭막이(깬잡석,찰쌓기 L3=45m)","H=2.0m, 채집",M +B00011,"기슭막이(깬잡석,찰쌓기 L3=45m)","H=2.5m, 채집",M +B00012,취수장 설치,뚜껑설치,개소 +B00013,콘크리트포장포설,"A-Type,t=20CM이하",M3 +B00014,콘크리트포장,T=20cm(레미콘),M2 +B00015,철근(현장)조립,Type-Ⅰ-----아님,ton +B00016,돌쌓기,"찰(켜)쌓기,L3=55cm이하",m2 +B00017,관보호공,"Φ800, 집수정 ㄷ형",개소 +B00018,관보호공,"Φ800, 동물이동L형",개소 +B00019,깬잡석찰붙임,L3=30cm내외,M2 +B00020,"돌붙임(깬잡석,찰붙임)",L3=30cm,M2 +B00021,콘크리트포장거푸집,T=20cm(양면),M +B00022,"기슭막이(깬잡석,메쌓기 L3=45m)","H=2.0m, 채집",M +B00023,잡철물 제작및설치(현장),일반철재,ton +B00024,철부도장페인트,녹막이1회조합2회,㎡ +B00025,임도차단기,"H=1.2m, B=5.6m",개소 +B00026,파형강관부설,D=800mm,m +B00027,관보호공,돌쌓기(ㅁ형),개소 +B00028,기초CON'C,"T=50cm, B=70cm",m +B00029,관보호공,"Φ800, 동물이동ㄷ형",개소 +B00030,횡단개거(포장형),L=4.0,개소당 +B00031,표면마무리,,㎡ +B00032,"돌붙임(깬잡석,메붙임)",L3=30cm,M2 +B00033,깬잡석메붙임,L3=30cm내외,M2 +B00034,돌수로(넓은호형),"B=2.3, H=0.4",M +B00035,깬잡석찰붙임,L3=35cm내외,M2 +B00036,"돌붙임(깬잡석,메붙임)",L3=60cm,M2 +B00037,깬잡석메붙임,L3=60cm내외,M2 +B00038,포장 난간,H=0.30m,m +B00039,PE관 매설,D50mm,m +B00040,PE관 부설 및 접합,D50,m +B00041,관보호공 안전난간,H=0.35,개소 +B00042,유성페인트칠(붓칠)-황색,"콘크리트,모르타르면3회",㎡ +B00043,유성페인트칠(붓칠)-흑색,"콘크리트,모르타르면3회",㎡ +B00044,"기슭막이(H=1.2m),기초무","깬돌, 메쌓기 L3=45",m +B00045,파형강관부설,D=800mm(토공별도),m +B00046,와이어메쉬 바닥깔기,,㎡ +B00047,"기슭막이(깬잡석,찰쌓기 L3=45m)","H=3.0m, 채집",M +B00048,관보호공-유출구,"Φ800, 일반형",개소 +B00049,관보호공-유입구,"Φ800, 일반형",개소 +B00050,집수정,2.0×2.0 H=1.4m,개소 +B00051,집수정,2.0×1.5 H=1.4m,개소 +B00052,7급선떼,H=0.4,M +B00055,관보호공,"Φ1000, 일반형",개소 +B00056,관보호공,"Φ1000,(유출구)",개소 +B00058,BOX구체,5.0x2.5x1@,m +B00062,BOX난간벽,H=0.20m,m +B00064,"돌붙임(깬잡석,찰붙임)",L3=60cm,M2 +B00065,깬잡석찰붙임,L3=60cm내외,M2 +B00135,글자새김,자당 6*6,자 +B00194,규준틀설치,종단규준틀,개소 +B00233,문양 거푸집,,m2 +B00260,녹생토(종자배합),암절개지 및 특수지반 녹화용 (700kg/㎥),M3 +B00287,연결(이음)철근,,kg +B00353,찰쌓기(켜쌓기),L3=55cm이하,m2 +B00363,임도준공표지석,30x20x60,개소 +B00374,돌붙임,"메붙임,L3=35cm이하",m2 +B00378,돌붙임,"찰붙임,L3=55cm이하",m2 +B00437,파형강관부설,D=800mm,m +B00442,물구멍설치,D=50mm,m +B00467,규준틀설치,횡단규준틀,개소 +B00704,국가지점번호판,300x486x1950,개소 +B00800,가설창고(콘테이너),3m*6m 6개월,개소 +B00836,선떼(7급)붙이기,(단끊기無;천단부),m +B00839,찰붙임,L3=55cm이하,m2 +B00866,찰붙임,L3=35cm이하,m2 +B00884,메쌓기(켜쌓기),L3=55cm이하,m2 +B01014,파형강관부설,D=800mm,m +B01077,모르터바르기,1:3,m3 +B01078,돌쌓기(켜쌓기),"찰쌓기,L3=55cm이하",m2 +B01079,돌붙임,"찰붙임,L3=55cm이하",m2 +B01080,7급선떼붙이기,단끊기무,m +B01092,돌붙임,"메붙임,L3=55cm이하",m2 +B01093,돌쌓기(켜쌓기),"메쌓기,L3=55cm이하",m2 +B01094,돌붙임,"메붙임,L3=35cm이하",m2 +B01095,돌붙임,"찰붙임,L3=35cm이하",m2 +B01097,돌묻이기,"메쌓기,L3=35cm이하",m +B01098,돌쌓기,"메쌓기,L3=35cm이하",m2 +B01099,자생수종이식,관목4주이식,㎡ +B01107,굴취(관목),H=0.3~0.7m,주 +B01109,관목식재(단식),H=0.3~0.7m,주 +B01143,제근,밀림(90㎥/ha),m2 +B01146,수로형토사개거,,개소 +B01147,돌붙임(채집),찰붙임 L3=45,m2 +B01155,관보호공(Φ800m/m),동물이동통로 돌집수정ㄴ형,개소 +B01156,관보호공(Φ800m/m),동물이동통로 돌집수정ㄷ형,개소 +B01180,"돌기슭막이(찰쌓기,기초무,구입)",H=1.5 L3=45cm,m +B01183,"돌기슭막이(메쌓기,기초무,구입)",H=2.0 L3=45cm,m +B01184,"돌기슭막이(메쌓기,기초무,구입)",H=2.5 L3=45cm,m +B01189,물넘이 집수부,,개소 +B01190,콘크리트비빔,기계비빔40mm,m3 +B01191,콘크리트포장(t=0.2m),물넘이,m2 +B01192,포장거푸집,T=20cm(양면),m +B01195,"돌기슭막이(찰쌓기,기초무,구입)",H=2.0 L3=45cm,m +B01196,"돌기슭막이(찰쌓기,기초무,구입)",H=2.5 L3=45cm,m +B01197,"돌기슭막이(메쌓기,기초무,구입)",H=1.5 L3=45cm,m +B01198,메붙임,L3=55cm이하,m2 +B01199,돌붙임(채집),메붙임 L3=45,m2 +B01201,파형강관부설,D=1200mm,m +B01202,기슭막이(H=2.0m)구입,"깬돌, 찰쌓기 L3=45",m +B01203,기슭막이(H=1.5m)채집,"깬돌, 메쌓기 L3=45",m +B01204,기슭막이(H=2.0m)채집,"깬돌, 메쌓기 L3=45",m +B01207,돌붙임(구입),L3=35 (찰붙임),m2 +B01208,돌붙임(채집),L3=35 (메붙임),m2 +B01299,유로폼,간단,m2 +B01303,L형옹벽측구,H=1.05m,m +B01582,철근(현장)조립,Type-Ⅰ-----아님,ton +B01608,돌쌓기,"찰(켜)쌓기,L3=55cm이하",m2 +B01609,포장거푸집,T=20cm(1면기준),m +B01680,돌쌓기(깬돌),"메(골)쌓기,L3=55cm이하",m2 +B01963,동물이동통로,B=1.0M,M +B01981,배수관보호공(유입구),D=1000m/m(일반형),개소 +B01982,임도안전표지판,삼각 D=900,개소 +B01983,배수관보호공(유입구),D=800㎜(동물이동통로L형),개소 +B01984,측구보호용잡석채움,B=1.0m,M +B01988,배수관보호공(유입구),D=800m/m(일반형),개소 +B01989,제형돌수로,B=0.75m,m +B01997,도로반사경설치,D=1000m/m(STS),개소 +B01998,콘크리트포장,T=20㎝,m2 +B02002,산불진화취수장,2.0x2.0x1.2,개소 +B02016,돌수로(넓은호형),"B=2.3,H=0.4,야면석,찰붙임",m +B02017,돌수로(넓은호형),"B=2.6,야면석,메붙임",m +B02019,횡단개거,"독립구간,0.3×0.3, L=4m",개소 +B02045,배수관보호공(유입구),D=1200m/m(일반형),개소 +B02052,횡단개거,"포장구간,0.15×0.15, L=4m",개소 +B02053,혼합골재부설,"B=4.0,T=0.1(영월-산불)",M2 +B02059,콘크리트포장,"B=4.0M,T=0.2M",M +B02071,관보호공,돌쌓기(ㅁ형),개소 +B02073,돌붙임,"깬돌,메붙임 L3=35cm",m2 +B02080,돌기슭막이(고1.0),"(찰쌓기,L3=45cm)",m +B02116,기초CON'C,(0.4×0.4 H:0.6),개소 +B02118,돌조공(고0.5),"(메쌓기,L3=45cm)",m +B02119,파형강관부설,D=800mm,m +B02120,관보호공,돌쌓기(ㅁ형),개소 +B02121,기초CON'C,"T=50cm, B=70cm",m +B02122,돌기슭막이(고1.0),"(찰쌓기,L3=45cm)",m +B02123,돌조공(고0.5),"(메쌓기,L3=45cm)",m +B02124,제형돌수로,B=0.75m,m +B02125,돌붙임,"깬돌,메붙임 L3=35cm",m2 +B02126,콘크리트포장,T=20㎝,m2 +B02127,포장거푸집,T=20cm(1면기준),m +B02128,L형옹벽측구,H=1.05m,m +B02129,기초CON'C,(0.4×0.4 H:0.6),개소 +B02130,선떼(7급)붙이기,(단끊기無;천단부),m +B02133,큰돌메쌓기,구입+채집,M2 +B02134,횡단개거(잡석),B=5.0,개소 +B02152,산불취수장안내판,800x700,개소 +B02155,배수관보호공(유입구),D=800㎜(동물이동통로형)-영월,개소 +B02156,큰돌흙막이,산불(영월),M2 +D00001,무대처리,,M3 +D00002,구조물 터파기(토사),굴삭기 0.2m3,m3 +D00003,깬잡석채집,L=35cm 내외,M2 +D00004,글자새김,자당 6*6,자 +D00005,고임돌채집,"기계(0.7㎥,100%)",M3 +D00006,막자갈채집,"기계(0.7㎥,100%)",M3 +D00007,구조물 되메우기,굴삭기 0.2m3,m3 +D00008,기초다짐 및 뒤채움,소형 장비사용 시공,M3 +D00009,잔토처리,인력100%,M3 +D00010,레미콘타설(장비사용),소형구조물,M3 +D00012,콘크리트(기계비빔),무근구조물,M3 +D00013,제근,,M2 +D00014,수평규준틀(변곡점),,개소 +D00015,비탈규준틀(@60M),,개소 +D00016,측구터파기(토사),기계100%(굴삭기 0.4m3),M3 +D00017,성토사면다짐,B/H0.7+콤팩터,M2 +D00018,노면정리,,M2 +D00019,암절취,굴삭기0.7m3+대형브레카,M3 +D00020,파형강관 부설 및 접합,D=800mm,M +D00021,토사절취(흙깎기),굴삭기 0.7m3,M3 +D00022,측구터파기(암),기계100%(굴삭기 0.4m3),M3 +D00023,구조물터파기(육상토사0~1m),기계90%+인력10%(굴삭기 0.7M3),M3 +D00024,잔토처리,굴삭기 0.7m3,M3 +D00025,구조물터파기(육상토사0~1m),기계100%(굴삭기 0.7M3),M3 +D00026,구조물 되메우기,기계100%(굴삭기 0.7M3),M3 +D00027,구조물터파기(육상암0~1m),기계100%(굴삭기 0.7M3),M3 +D00029,구조물 되메우기(사질양토),기계100%(굴삭기 0.7M3),M3 +D00030,평떼붙이기,,m2 +D00031,노면고르기및다짐,그레이더+진동로울러,M2 +D00032,유로폼 설치 및 해체,간단,m2 +D00033,잡관목제거,벌목(5m미만),M2 +D00034,콘크리포장(T=20cm)포설,인력포설,m3 +D00035,비탈 규준틀,0.48x0.60,개소 +D00037,포장절단,콘크리트포장,M +D00038,층따기,,M3 +D00039,파형강관 부설 및 접합,D=1200mm,M +D00040,구조물잔토처리,굴착기0.6m3,m3 +D00041,제근,밀림(90m3/ha이상),m2 +D00042,구조물터파기(연암),대형브레카+B/H0.7㎥,m3 +D00043,깬잡석채집,L=45cm 내외,M2 +D00044,흙 쌓 기,,M3 +D00045,옆도랑파기(연암),대형브레카(굴삭기0.7㎥),m3 +D00046,도자운반-토사,L=46m,m3 +D00047,도자운반-연암,L=44m,m3 +D00048,덤프운반-토사,L=85m,m3 +D00049,잔토처리,굴삭기 0.2m3,M3 +D00050,성토사면다짐,진동콤팩터,m2 +D00051,깬잡석채집,L=30cm 내외,M2 +D00052,깬잡석채집,L=60cm 내외,M2 +D00053,수축줄눈(컷팅),콘크리트포장,m +D00054,혼합석부설,"T=0.1, 임도품셈",M2 +D00055,암발파,중규모진동제어발파,㎥ +D00056,합판거푸집(6회),간단,M2 +D00057,씨뿌리기,,m +D00058,"유로폼 설치,해체(보통)",수직고7.0m 이하,M2 +D00059,"유로폼 설치,해체(복잡)",수직고7.0m 이하,M2 +D00060,철근가공조립(현장),TYPE Ⅰ,Ton +D00061,시멘트(대)운반,L=77.4km,대 +D00062,파쇄(굴림)석 대운반,L=77.4km,톤 +D00063,덤프운반-토사,L=113m,m3 +D00064,덤프운반-연암,L=89m,m3 +D00065,도자운반-연암,L=46.62m,m3 +D00066,도자운반-토사,L=48.62m,m3 +D00067,사토운반,"L=2,835m",m3 +D00068,"돌 채집,운반","L3=45cm,덤프15톤",m2 +D00069,뒷채움,75m/m 미만,m3 +D00070,콘크리트비빔,채움재,m3 +D00071,파형강관부설,Φ800mm,M +D00072,파형강관부설,Φ1000mm,M +D00073,파쇄(굴림)석 대운반,L=63.2km,톤 +D00074,플륨관설치,500~700kg미만/본,본 +D00075,콘크리트믹서사용,0.45 m3,m3 +D00076,철근가공 및 조립,"Type-Ⅰ-1,현장가공조립",ton +D00077,합판거푸집,3회(복잡),M2 +D00079,성토사면다짐,진동콤팩터,m2 +D00081,철근가공및조립(현장),일반(Type-Ⅰ-1),Ton +D00083,콘크리트믹서사용,0.45 m3,m3 +D00089,콘크리트믹서사용,0.45 m3,m3 +D00090,평떼붙임,,m2 +D00091,단끊기,,m +D00093,유로폼 설치 및 해체,간단,m2 +D00094,유로폼 설치 및 해체,보통,m2 +D00095,레미콘타설(장비),무근,m3 +D00096,레미콘타설(장비),"무근,소형",m3 +D00097,레미콘타설(장비),철근,m3 +D00098,철근가공 및 조립,"Type-Ⅰ-1,현장가공조립",ton +D00099,철근가공 및 조립,"Type-Ⅱ-1,현장가공조립",ton +D00102,합판거푸집(간단),간단,m2 +D00103,레미콘타설(장비),"무근,버림",m3 +D00105,씨뿌리기(성토면),줄파종,m +D00107,도자운반-토사(19ton),현동 L=39.47,M3 +D00108,도자운반-암(19ton),현동 L=39.3m,M3 +D00109,덤프운반-토사,현동 L=0.185km,M3 +D00110,덤프운반-암,현동 L=0.198km,M3 +D00111,사토 무대처리,"현동, L=126m",M3 +D00112,강관비계,3개월사용,M2 +D00113,강관동바리,암거용-3개월사용,공/㎥ +D00115,중기운반(현동),L=36.1km,대 +D00116,기계운반(현동),L=36.1km,대 +D00117,시멘트운반(현동),L=62.5km,포 +D00118,모래운반(현동),L=37.8km,㎥ +D00119,자갈운반(현동),L=37.8km,㎥ +D00120,철근운반(현동),L=62.5km,TON +D00121,혼합석운반(현동),L=62.5km,M3 +D00150,고임돌채집,기계,m3 +D00154,노면정리,굴삭기 0.7m3,m2 +D00159,뒷채움,150m/m 내외,m3 +D00208,덤프운반-토사,L=85m,m3 +D00258,측구수로관부설,500∼700kg미만,m +D00408,막자갈(파쇄석)채집,,m3 +D00411,야면석 채집 운반,(25x25x35㎝)장비,M2 +D00450,콘크리트소운반,(L=20m),M3 +D00492,채움 콘크리트,기계비빔,m3 +D00600,기초잡석채집및운반부설,4.5톤(L=500),M3 +D00644,야면석찰붙임,뒷길이 35Cm,M2 +D00649,사토운반,L=409m,m3 +D00720,중기운반,L=34.5km,식 +D00794,단끊기,절취없음,m +D00808,노면 고르기,,m2 +D00867,막자갈채우기,150mm내외,m3 +D00918,채움CON'C,기계비빔,m3 +D00959,막자갈채집,기계,m3 +D00963,제근,밀림(90m3/ha이상),m2 +D01010,암(연암)절취,굴삭기07+브레카,m3 +D01030,고임돌채집,굴삭기0.2m3,m3 +D01036,유용토운반,무대,m3 +D01038,성토사면다짐,굴삭기0.7m3,m2 +D01075,수축줄눈(컷팅),콘크리트포장,m +D01124,고임돌채집,기계,m3 +D01129,야면석채집,L3=45cm내외,m2 +D01132,자갈류(대)운반,L=77.4km,m3 +D01140,시멘트(대)운반,L=77.4km,대 +D01154,낙석방지책(표준부),"H=2.5m,B=2.0m",경간 +D01155,낙석방지책(단부),"H=2.5m,B=2.0m",경간 +D01248,도자운반-연암,L=44m,m3 +D01249,덤프운반-연암,L=82m,m3 +D01251,측구파기(연암),대형브레카+B/H0.7㎥,m3 +D01254,옆도랑파기(연암),대형브레카(굴삭기0.7㎥),m3 +D01256,파쇄(굴림)석 대운반,L=77.4km,톤 +D01259,도자운반-토사,L=46m,m3 +D01329,평떼붙이기,,m2 +D01336,레미콘타설,무근(장비),m3 +D01341,절토(토사),굴삭기0.7m3,m3 +D01343,구조물터파기(토사),굴삭기0.7m3,m3 +D01344,구조물 되메우기,굴삭기0.7m3,m3 +D01351,유로폼 설치 및 해체,간단,m2 +D01352,유로폼 설치 및 해체,보통,m2 +D01354,콘크리포장(T=20cm)포설,인력포설,m3 +D01361,고임돌채집운반,4.5톤덤프(L=500),M3 +D01396,평떼붙임,,m2 +D01398,씨뿌리기,,m +D01416,토사절취,B/H 0.7m3,m3 +D01417,암절취(연암),B/H0.7m3+대형브레카,m3 +D01418,구조물 터파기,B/H0.7m3+인력,m3 +D01419,구조물터파기(연암),대형브레카+B/H0.7㎥,m3 +D01420,구조물 되메우기,B/H0.7m3+인력,m3 +D01421,성토(운반무대),B/H 0.7m3,m3 +D01422,순성토,덤프+0.7m3,m3 +D01423,잔토처리,0.7m3 현장내처리,m3 +D01424,콘크리트비빔,채움재,m3 +D01425,고임돌채집,기계,m3 +D01426,뒤채움,소형장비,m3 +D01427,돌채집,L3=45cm내외,m2 +D01428,떼붙임,평떼,m2 +D01429,씨뿌리기,줄파종,m +D01430,중기운반,L=35.0km,대 +D01431,기계운반,L=35.0km,대 +D01432,모래운반,L=27.8km,m3 +D01433,자갈운반,L=27.8km,m3 +D01434,막자갈운반,L=27.8km,m3 +D01435,시멘트운반,L=35.0km,대 +D01436,깬돌운반,L=27.8km,ton +D01438,돌채집,L3=35cm내외,m2 +D01439,혼합석운반,L=27.8km,m3 +D01441,노면정리,,m2 +D01442,혼합석부설 및 다짐,굴삭기+진동롤러(10톤),m3 +D01443,노면정비,,m +D01445,모래소운반,소운반 4.5ton(L=0.10km),m3 +D01446,자갈소운반,소운반 4.5ton(L=0.10km),m3 +D01447,막자갈소운반,소운반 4.5ton(L=0.10km),m3 +D01448,돌소운반,소운반 4.5ton(L=0.10km),ton +D01453,인력운반,기타,ton +D01455,혼합석소운반,소운반 4.5ton(L=0.10km),m3 +D01456,구조물터파기(토사),굴착기0.6m3,m3 +D01466,야면석소운반(L=35CM),(L=20m),M2 +D01474,구조물되메우기,굴착기0.6m3,m3 +D01475,구조물잔토처리,굴착기0.6m3,m3 +D01476,제근,밀림(90m3/ha이상),m2 +D01477,토사절취,굴삭기 0.7m3,m3 +D01478,암(연암)절취,굴삭기07+브레카,m3 +D01479,옆도랑파기(토사),굴삭기 0.4m3,m3 +D01480,옆도랑파기(연암),대형브레카(굴삭기0.7㎥),m3 +D01481,도자운반-토사,L=46m,m3 +D01482,도자운반-연암,L=44m,m3 +D01483,덤프운반-토사,L=85m,m3 +D01484,덤프운반-연암,L=82m,m3 +D01485,성토사면다짐,진동콤팩터,m2 +D01486,노면 고르기,,m2 +D01487,사토운반,L=409m,m3 +D01488,수축줄눈(컷팅),콘크리트포장,m +D01489,낙석방지책(표준부),"H=2.5m,B=2.0m",경간 +D01490,낙석방지책(단부),"H=2.5m,B=2.0m",경간 +D01491,구조물헐기,"무근,30cm미만",m3 +D01492,씨뿌리기,,m +D01493,중기운반,L=34.5km,식 +D01494,모래(대)운반,L=103.3km,m3 +D01495,자갈류(대)운반,L=77.4km,m3 +D01496,시멘트(대)운반,L=77.4km,대 +D01497,파쇄(굴림)석 대운반,L=77.4km,톤 +D01519,뒷채움돌채집운반부설,4.5톤 덤프트럭(L=500m),M3 +D01611,초류종자파종,㎡당 2줄,M2 +D01748,콘크리트포장(인력),T=20㎝,M3 +D01752,콘크리트포장절단공,임도,M +D01755,사토운반,L=500m,M3 +D01759,도로반사경설치,D=1000(STS),개소 +D01810,큰돌채집운반(뒷길이 0.6~0.8m),장비(80%) + 인력(20%),M2 +D01841,합판거푸집(4회),보통,M2 +D01843,야면석메붙임,뒷길이 35Cm,M2 +D01844,콘크리트타설,장비사용타설(소형),M3 +D01854,지수판 설치(PVC 용접),200×5t,m +D01855,배수관부설및접합(P.V.C),Ø 50 MM - VG2 일반관,m +D01874,절토(연암),굴삭기0.7m3+대형브레카,m3 +D01926,임도안전표지판설치,"삼각,D=900",개소 +D01927,면고르기,,M2 +D01928,잡석운반및다짐,,M3 +D01932,파형강관부설,Φ1200mm,M +D01942,구조물터파기,인력(경질토사),M3 +D01989,파쇄석운반(울진군 울진읍 대흥리),L=80.00km,ton +D01999,사질양토운반,산불-영월(지선),M3 +D02001,혼합골재부설,영월-산불,M3 +D02002,중기운반,산불 영월,회 +D02003,자주식중기운반,그레이더3.6M(산불-영월),회 +D02004,컨테이너운반,10톤크레인트럭(영월-산불),회 +D02005,철근운반,영월 산불,Ton +D02008,암절취(연암+보통암),B/H0.7m3+대형브레카,M3 +D02030,흙운반 D/Z19Ton,영월 산불(지선),M3 +D02031,흙운반D/P+B/H,영월 산불(지선),M3 +D02032,흙운반 D/Z19Ton,영월 산불(본선),M3 +D02033,흙운반D/P+B/H,영월 산불(본선),M3 +D02034,사질양토운반,산불-영월(본선),M3 +D02036,사토운반,L=200m,M3 +D02058,무근콘크리트타설,인력운반타설,M3 +D02071,철근콘크리트타설,장비사용타설,M3 +D02074,큰돌(0.6~0.8m)운반(영월),B/H07㎥ + D/T15Ton,M3 +D02119,야면석채집,L3=35cm내외,m2 +D02139,다지기,굴삭기0.7m3,m3 +D02145,사토처리,,m3 +D02153,중기운반(울진군 울진읍 대흥리),L=19.00km,대 +D02154,모래운반(울진군 울진읍 대흥리),L=16.40km,m3 +D02155,자갈운반(울진군 울진읍 대흥리),L=16.40km,m3 +D02157,시멘트운반(울진군 울진읍 대흥리),L=19.00km,대 +D02172,도자운반-토사,L=40.94m,m3 +D02173,도자운반-암,L=39.13m,m3 +D02174,덤프운반-토사,L=64.00m,m3 +D02175,덤프운반-암,L=64.00m,m3 +D02195,유로폼 설치 및 해체,간단,m2 +D02200,콘크리트비빔,채움재,m3 +D02242,기계운반(울진군 울진읍 대흥리),L=19.00km,대 +D02246,유로폼 설치 및 해체,보통,m2 +D02248,콘크리트포장(B-type),t=20cm,m2 +D02251,철근가공 및 조립,"Type-Ⅱ-2,현장가공조립",ton +D02252,철근운반(울진군 울진읍 대흥리),L=19.00km,톤 +D02253,사토처리,,m3 +D02254,도자운반-토사,L=43.66m,m3 +D02255,도자운반-암,L=39.07m,m3 +D02256,덤프운반-토사,L=293.78m,m3 +D02257,덤프운반-암,L=318.60m,m3 +D02258,도자운반-토사,L=38.30m,m3 +D02259,도자운반-암,L=40.90m,m3 +D02260,덤프운반-토사,L=385.00m,m3 +D02261,덤프운반-암,L=353.00m,m3 +D02262,레미콘타설,무근(장비사용타설),m3 +D02263,사토처리,대흥2공구 L=0.118km,m3 +L00001,건축목공,,인 +L00002,형틀목공,,인 +L00003,철근공,,인 +L00004,석공,,인 +L00005,콘크리트공,,인 +L00006,특별인부,,인 +L00007,보통인부,,인 +L00008,건설기계운전사,,인 +L00009,화물차운전사,,인 +L00010,일반기계운전사,,인 +L00011,배관공(수도),,인 +L00012,포장공,,인 +L00013,도장공,,인 +L00014,철공,,인 +L00015,용접공,,인 +L00016,화약취급공,,인 +L00017,작업반장,,인 +L00018,조경공,,인 +L00019,비계공,,인 +L00020,기구손료,"품의 %,노무비의%",L% +L00021,일반기계운전사,,인 +L00023,건축목공,,인 +L00024,건설기계운전사,,인 +L00025,포장공,,인 +L00026,화물차운전사,,인 +L00027,일반기계운전사,,인 +L00032,배관공(수도),,인 +L00033,석공,,인 +L00034,포장공,,인 +L00037,벌목부,,인 +L00038,건설기계운전사,,인 +L00039,화물차운전사,,인 +L00040,배관공(수도),,인 +L00048,건설기계운전사,,인 +L00049,화물차운전사,,인 +L00050,일반기계운전사,,인 +L00061,배관공(수도),,인 +M00001,"철못,대구",N 50,KG +M00002,"외송판재, 대구",30*300*3600,M3 +M00003,경유,저유황(0.05%),L +M00004,요소,,KG +M00005,인산질비료,용성인비인산,KG +M00006,요소,,KG +M00007,판재,외송,M3 +M00008,화강석,(원석 거창석),M3 +M00009,PVC파이프,VG1(50m/m),M +M00010,조달수수료,재료비*0.54%,M% +M00011,치즐,0.7m3,개 +M00012,휘발유,무연,L +M00013,내부코너패널,(200+200)*1200mm,매 +M00014,천연부엽토,,KG +M00015,국가지점번호(임도형),140*140*2200(설치비포함),식 +M00016,이형철근 D13,별도계상,TON +M00017,와이어매쉬,"#6,100*100",M2 +M00018,경유,저유황,L +M00019,시멘트,40kg/포,포 +M00020,측점표지판(임도번호판),180*100,EA +M00021,휘발유,무연,L +M00022,경유,저유황,L +M00023,물,,L +M00024,산림종자,(안고초),KG +M00025,깬돌,구입-자재별산,m2 +M00026,와이어메쉬,#6 100*100,M2 +M00027,면목,28 20*20,m +M00028,비닐,0.07mm,M2 +M00029,블레이드(커터),"d=320 400mm 14""xt3.2",개 +M00030,이형철근,별도계상,TON +M00031,떼,,m2 +M00032,연마지,#120,매 +M00033,구조용강관(백),D=125mm(외경139.8mmx3.2t),m +M00034,구조용강관(백),D=100mm(외경114.3mmx3.2t),m +M00035,구조용강관(백),D=80mm(외경89.1mmx2.3),m +M00036,구조용강관(백),D=50mm(외경60.5mmx2.3t),m +M00037,광명단조합페인트,1종2류(철재),L +M00038,열연강판,3.0mm,Kg +M00039,자물쇠,50m/m,개 +M00040,조합페인트,"KSM-6020 2급,백색",L +M00041,레미콘,별도계상,㎥ +M00042,"이형철근,SD400",D13~32m/m(세액별도),TON +M00043,파쇄석(L3=45~55cm),상차가(영주),톤 +M00044,파쇄석(L3=45~55cm),상차가(울진),톤 +M00045,스틸그레팅(날개형),"1000×400×50mm,",M +M00046,스틸그레이팅,1000×1000×100mm,개소 +M00047,PE관,Φ50m/m,M +M00048,취수정뚜껑,삼각형,개소 +M00051,천연부엽토,,KG +M00052,잡재료비,재료비의 %,M% +M00053,파형강관,"Φ800m/m, 2.7t.아연도금",M +M00054,파형강관,"Φ1000m/m, 2.7t.아연도금",M +M00055,인산질비료,용성인비인산,KG +M00056,요소,,KG +M00057,폭 약,28mm(메가마이트Ⅰ),KG +M00058,전기뇌관,3.5m,개 +M00059,PE 직관(수도용),D50mm,m +M00060,PE유니온 볼밸브,D50mm,개 +M00061,구조용강관(백),D=32mm(외경42.7mmx2.0t),m +M00062,신너(조합페인트용),KSM-6060(2종),ℓ +M00063,조합페인트,KSM-6020 1급(황색),ℓ +M00064,조합페인트,KSM-6020 1급(흑색),ℓ +M00067,모 래,봉화 상차도,M3 +M00068,자 갈(40m/m),봉화 상차도,M3 +M00069,혼합석,영주 상차도,M3 +M00075,화강석,거창석,M3 +M00077,"아연도철선(결속선),서울","#20, 0.9mm",kg +M00080,각재,외송,M3 +M00081,합판(내수),12×1220×2440,M2 +M00082,결속선(철선),"#20 , 0.9M/M",KG +M00083,떼,,m2 +M00084,패널(유로폼),600*1200mm,매 +M00085,내부코너패널(유로폼),(100x200)x1200mm,매 +M00086,종자,"생태복원형,초본류",KG +M00087,종자,"생태복원형,목본류",KG +M00088,이음철물,,EA +M00089,조임철물,(직교자재),EA +M00090,받침철물,,EA +M00091,철물,,EA +M00093,잡품,주연료의 %,M% +M00094,면목,42 30*30,m +M00095,내수합판1급,12mmx1220x2440,M2 +M00099,잡유,주연료의 %,M% +M00100,시멘트,별도계상,KG +M00101,강관동바리,"Φ48.6x2.4,L=2.6~4.0",본 +M00102,강관비계,φ48.6m/m×2.3mm,M +M00103,레미콘(봉화),25-18-80,M3 +M00104,레미콘(봉화),25-21-80,M3 +M00106,레미콘(봉화),25-24-120,M3 +M00109,잡품,주연료의 %,M% +M00112,"이형철근,SD400",HD13m/m(부가세별도),TON +M00113,"이형철근,SD400",HD16m/m(부가세별도),TON +M00114,"이형철근,SD400",HD19m/m(부가세별도),TON +M00115,"이형철근,SD400",HD22m/m(부가세별도),TON +M00116,"이형철근,SD400",HD25m/m(부가세별도),TON +M00117,시멘트,별도계상,KG +M00118,치즐(대형 브레이카),0.7 m3,본 +M00125,레미콘,별도계상,M3 +M00131,패널,600*1200mm,매 +M00132,내부코너패널,(200+200)*1200mm,매 +M00133,천연부엽토,,KG +M00157,천연부엽토,,KG +M00211,산림종자,참싸리(박피),KG +M00214,파형강관(800M/M),별도계상,M +M00219,파형강관(1000M/M),별도계상,M +M00222,파형강관(800mm),별도계상,M +M00227,이형철근 D13,별도계상,TON +M00231,와이어매쉬,"#6,100*100",M2 +M00255,치즐,0.7m3,개 +M00275,모래,상차가(안동),M3 +M00276,자갈,상차가(영주),M3 +M00286,파쇄석(L3=45~55cm),상차가(영주),톤 +M00292,치즐,0.7m3,개 +M00299,시 멘 트,40Kg/포,대 +M00302,휘발유,무연,L +M00303,경유,저유황,L +M00344,레미콘(울진),25-18-80(세액포함),M3 +M00404,복합비료,21-17-17,㎏ +M00424,레미콘(울진),25-21-80(세액포함),M3 +M00453,깬돌,구입-자재별산,m2 +M00488,모래,별도계상,㎥ +M00495,자 갈(40m/m),울진,M3 +M00513,막자갈,상차가(영주),M3 +M00580,잡재료비,재료비의 %,M% +M00654,이형철근,D13~D32,Ton +M00661,종자,"생태복원형,초본류",KG +M00671,종자,"생태복원형,목본류",KG +M00684,돌(L3=45cm),별도계상,m2 +M00745,임도번호판,180×100,EA +M00747,국가지점번호판,300x486x1950,개 +M00758,경유,저유황,L +M00759,휘발유,무연,L +M00760,P.V.C PIPE,VG2(50m/m),M +M00761,돌(L3=45cm),별도계상,m2 +M00762,막자갈,별도계상,M3 +M00763,모 래,상차가(영덕),M3 +M00764,자 갈(40m/m),상차가(영덕),M3 +M00765,막자갈,상차가(영덕),M3 +M00766,시 멘 트,40Kg/포,대 +M00767,깬돌,상차가(영덕),ton +M00768,떼,,m2 +M00770,잡품,주연료의 %,M% +M00775,녹화끈,6mm×200m,M +M00776,녹화마대,15cm×20m,M +M00777,발근촉진제(루트테크),1ℓ/병,g +M00778,살균제(톱신페스트),1kg/포,g +M00779,혼합석,상차가(영덕),M3 +M00782,모래,울진,M3 +M00792,파쇄암,별도계상,㎡ +M00793,이형철근,별도계상,Ton +M00798,파형강관,"Φ800m/m, 2.7t",M +M00815,폭약,28㎜(메가마이트Ⅰ),KG +M00816,전기뇌관(MS),3.5m×500개(하이데토),EA +M00817,BUTTON BIT,Ø38×76㎜,EA +M00818,유압드릴샹크,T38×CM470,EA +M00819,유압식드릴스리브,T38×190mm,EA +M00820,유압식드릴롯드,T38×R32x3660mm,EA +M00832,인공토양(녹생토),암절개지 및 특수지반 녹화용 (700kg/㎥),M3 +M00862,산림종자,(비수리),KG +M00863,유기질퇴비,,㎏ +M00865,파형강관,별도계상,M +M00904,유로폼(패널),600*1200,매 +M00905,내부코너패널,(200+200)*1200,매 +M00914,와이어매쉬,"#6,(100*100)",M2 +M00915,블레이드,14"X 3.2,개 +M00916,PE비닐(저밀도),0.03x180x183,M2 +M00918,조달수수료,,T% +M00920,공구손료,인건비의 %,L% +M00921,국가지점번호판,임도(말뚝형),개소 +M00923,도로반사경(지주포함),D=1000mm(STS),EA +M00924,파쇄암,상차가(영덕 축산),ton +M00932,경유,저유황,L +M00933,휘발유,무연,L +M00934,파형강관,"Φ1000m/m, 2.7t",M +M00938,면목,A25,M +M00939,내부코너패널(유로폼),(100x200)x1200mm,매 +M00940,와이어메쉬,#6-100mm×100mm,m2 +M00941,자 갈,별도계상,M3 +M00943,결속선(철선),"#20 , 0.9M/M",KG +M00944,"이형철근,SD400",HD16m/m,TON +M00945,파형강관이음관,Φ800m/m,개 +M00946,파형강관이음관,Φ1000m/m,개 +M00947,경유,저유황,L +M00948,깬돌(L3=45cm),별도계상,m2 +M00949,"파형강관(68X13,1RS)",별도계상,M +M00950,공구손료 및 잡재료,노무비의 %,L% +M00951,깬돌(L3=35cm),별도계상,m2 +M00952,레미콘(울진),25-18-80,M3 +M00953,파형강관,"Φ1200m/m, 3.2t",M +M00954,파형강관이음관,Φ1200m/m,개 +M00985,레미콘,별도계상,M3 +M00996,안전표지판,"삼각,D=900",개 +M00998,산불취수장안내판,800x700x2000,개 +M01016,PVC지수판,200x5T KSM3805,M +M01017,PVC용접봉,Ø3.2 (국산),KG +M01019,PVC엘보,D50mm,개 +M01020,PVC벨브소켓,D50mm,개 +M01024,측구수로관,300x300x120,본 +M01025,스틸그레이팅(중하중용),395x995x50,개 +M01031,"이형철근,SD400",D13~32m/m(세액별도),TON +M01054,물,,ℓ +M01082,큰돌(별도계상),직경 0.6~0.8m,M2 +M01087,PVC파이프(일반용VG2),50㎜ × 4m,M +M01090,PE직관,D75mm,m +M01091,보호덮개,2550×2550,EA +M01092,파형강관(2.7T)-영월,Φ800-1RS,M +M01094,파형강관이음관-영월,φ800m/m,개 +M01095,파형강관이음관-영월,φ1200m/m,개 +M01097,레미콘(영월),25-21-12,M3 +M01098,혼합골재,영월,M3 +M01110,파형강관(3.2T)-영월,Φ1200-1RS,M +M01111,파형강관이음관-영월,φ1000m/m,개 +M01112,파형강관(2.7T)-영월,Φ1000-1RS,M +M01137,표지판지주,"D=76.3mm, 3.5M",개 +M01147,큰돌(영월),직경 0.6~0.8m,Ton +M01150,떼,,m2 +M01225,종자,초본류,KG +M01226,종자,목본류,KG +M01324,낙석방지책,H2500×W2000(표준),경간 +M01325,낙석방지책,H2500×W2000(단부),경간 +M01436,P.V.C PIPE,VG2(50m/m),M +M01513,파형강관,"Φ800m/m, 2.7t",M +M01514,모래,상차가(안동),M3 +M01515,자갈,상차가(영주),M3 +M01516,막자갈,상차가(영주),M3 +M01517,시멘트,40Kg/포,대 +M01518,"이형철근,SD400",D13~32m/m(세액별도),TON +M01519,파쇄석(L3=45~55cm),상차가(영주),톤 +S00001,굴삭기(무한궤도),0.2㎥,천원 +S00002,굴삭기(무한궤도),0.7㎥,천원 +S00003,대형 브레이커,0.7㎥,천원 +S00004,덤프트럭,2.5톤,천원 +S00005,덤프트럭 자동덮개시설,15톤용,천원 +S00006,트럭 트랙터 및 평판트레일러,20톤,천원 +S00007,콘크리트 믹서,0.45㎥,천원 +S00008,트럭탑재형 크레인,5톤,천원 +S00009,굴삭기(타이어),0.6㎥,천원 +S00010,덤프트럭,15톤,천원 +S00011,유압식 진동콤팩터(굴삭기 부착용),0.7㎥,천원 +S00012,불도저(무한궤도),19톤,천원 +S00013,덤프트럭,24톤,천원 +S00014,덤프트럭,2.5톤,천원 +S00015,트럭탑재형 크레인,10톤,천원 +S00016,물탱크(살수차),5500ℓ,천원 +S00017,굴삭기(무한궤도),1.0㎥,천원 +S00018,동력분무기,4.85㎾,천원 +S00019,진동롤러(자주식),12톤,천원 +S00020,커터(콘크리트 및 아스팔트용),320-440mm,천원 +S00021,부착용 집게,0.6~0.8㎥,천원 +S00022,크롤러드릴(탑승유압식),110㎾,천원 +S00023,유압식진동콤팩터,0.7m3 굴삭기용,천원 +S00024,부착용 집게,0.6~0.8㎥,천원 +S00025,굴삭기(무한궤도),0.4㎥,천원 +S00026,대형 브레이커,0.4㎥,천원 +S00028,구역화물자동차(8톤),40km이내,회 +S00031,구역화물자동차,10.5톤(70km 이내),회 +S00036,트럭 트랙터 및 평판트레일러,20Ton,천원 +S00038,콘크리트믹서0.45m3,,천원 +S00043,크로울러드릴(탑승유압식),110kw,천원 +S00051,치즐(0.7m3),,천원 +S00058,트럭탑재형크레인,5톤,천원 +S00073,구역화물자동차,5톤(20km 이내),회 +S00075,구역화물자동차,5톤(40km 이내),회 +S00102,덤프트럭,4.5톤,천원 +S00104,불도저(무한궤도),19톤,천원 +S00114,트럭탑재형 크레인,5톤,천원 +S00138,부착용집게,굴삭기0.7m3,천원 +S00145,덤프트럭2.5톤,,천원 +S00146,굴삭기(0.6m3),타이어,천원 +S00151,굴착기(타이어),0.6㎥,천원 +S00162,굴삭기(무한궤도),0.2㎥,천원 +S00163,굴삭기(무한궤도),0.4㎥,천원 +S00164,굴삭기(무한궤도),0.7㎥,천원 +S00165,덤프트럭 자동덮개시설,24톤용,천원 +S00167,덤프트럭24.0톤,,천원 +S00168,덤프자동덮개,24톤,천원 +S00169,부착용 집게,0.6~0.8㎥,천원 +S00170,굴삭기(타이어),0.6㎥,천원 +S00174,대형브레이카용 치즐,0.7㎥,천원 +S00175,유압식 진동콤팩터(굴삭기 부착용),0.7㎥,천원 +S00202,굴삭기(무한궤도),0.2㎥,천원 +S00203,굴삭기(무한궤도),0.4㎥,천원 +S00204,굴삭기(무한궤도),0.6㎥,천원 +S00205,굴삭기(무한궤도),0.7㎥,천원 +S00206,굴삭기(무한궤도),0.8㎥,천원 +S00207,굴삭기(무한궤도),1.0㎥,천원 +S00212,굴삭기(타이어),0.6㎥,천원 +S00233,대형 브레이커,0.7㎥,천원 +S00276,트럭탑재형 크레인,10톤,천원 +S00346,트럭트랙터 및 트레일러,20톤,$ +S00391,커터(콘크리트 및 아스팔트용),320-440mm,천원 +S00502,모터그레이더,3.6m (일반용),천원 +S00603,덤프트럭,4.5톤,천원 +S00607,덤프트럭,15톤,천원 +S00610,덤프트럭 자동덮개시설,15톤용,천원 +S00724,덤프트럭,24톤,천원 +S00734,운반비 계,,T% +S00741,굴삭기(타이어),0.6㎥,천원 +S01045,공구손료,인건비의 %,L% +S01262,부착용집게,0.6-0.8㎥용,천원 +S01263,동력분무기,4.85㎾,천원 +S01309,진동롤러(자주식),10톤,천원 +S02104,크레인(타이어),10톤,천원 +S02107,트럭탑재형 크레인,5톤,천원 +S02108,트럭탑재형 크레인,10톤,천원 +S02702,트럭 트랙터 및 평판트레일러,20톤,천원 +S04330,커터(콘크리트 및 아스팔트용),320-440mm,천원 +S04612,콘크리트 진동기,45φ(2.6㎾)엔진식플렉시블형,천원 +S05405,크롤러드릴(탑승유압식),110㎾,천원 +S07204,물탱크(살수차),5500ℓ,천원 +S07205,물탱크(살수차),16000ℓ,천원 +S07206,이동식 임목파쇄기,93.25㎾,천원 +S07208,부착용 집게,0.2㎥,천원 +S07209,부착용 집게,0.6~0.8㎥,천원 +S07210,동력분무기,4.85㎾,천원 +S07507,발전기,250㎾,천원 +S09600,국가지점번호검증수수료,,식 +S11006,일반하역요금(하차비),,원 +S11012,구역화물 (2.5TON),40㎞ 이내,TON +S11039,국가지점번호판 검증수수료,별도계상,식 +W00002,폐기물처리,폐콘크리트,TON +W00003,폐기물운반,30km이하,TON +W00004,깬돌,구입별산,m2 +W00005,켜쌓기적용,전체금액의 %,T% +W00006,무대처리,,m3 +W00045,폐기물처리,폐콘크리트,TON +W00046,폐기물운반,30km이하,TON +W01835,깬돌,구입별산,m2 +W02335,깬돌,구입별산,Ton +W02336,무대처리,,m3 +X00001,굴삭기(무한궤도),0.2㎥,X +X00002,굴삭기(무한궤도),0.7㎥,X +X00003,덤프트럭,15톤,X +X00004,덤프트럭,"2.5톤,(암석)",X +X00005,덤프트럭 자동덮개시설,15톤용,X +X00006,트럭탑재형 크레인,5톤,X +X00007,트럭 트랙터 및 평판트레일러,20톤,X +X00008,콘크리트 믹서,0.45㎥,X +X00009,굴삭기(타이어),0.6㎥,X +X00010,굴삭기(무한궤도),"0.7㎥,(브레이커조합)",X +X00011,유압식 진동콤팩터(굴삭기 부착용),0.7㎥,X +X00012,굴삭기(무한궤도),"0.7㎥,(암석)",X +X00013,불도저(무한궤도),19톤,X +X00014,덤프트럭,24톤,X +X00015,덤프트럭,"15톤,(암석)",X +X00016,커터(콘크리트 및 아스팔트용),320-440mm,X +X00017,물탱크(살수차),5500ℓ,X +X00018,동력분무기,4.85㎾,X +X00019,진동롤러(자주식),12톤,X +X00020,굴삭기(타이어),"0.6㎥,(부착용집게)",X +X00021,크롤러드릴(탑승유압식),110㎾,X +X00022,굴삭기(무한궤도),"1.0㎥,(암석)",X +X00023,굴삭기+부착용집게(06),,X +X00024,덤프트럭,4.5톤,X +X00025,굴착기(무한궤도),0.2㎥,X +X00026,굴삭기(무한궤도),0.4㎥,X +X00027,굴삭기(무한궤도),"0.4㎥,(암석)",X +X00028,굴삭기(무한궤도),"0.4㎥,(브레이커조합)",X +X00029,대형 브레이커,0.7㎥,X +X00030,덤프트럭10.5ton(암),할증율:1.25,X +X00031,덤프트럭15ton(암),할증율:1.25,X +X00032,덤프자동덮개,15톤,X +X00044,트럭탑재형크레인,5톤,X +X00046,트럭 트랙터 및 평판트레일러,20Ton,X +X00048,콘크리트믹서0.45m3,,X +X00055,크로울러드릴,탑승유압식,X +X00060,덤프트럭,2.5톤,X +X00061,덤프트럭,4.5톤,X +X00063,덤프트럭,10.5톤,X +X00064,덤프트럭,15톤,X +X00074,덤프트럭2.5ton(토사),,X +X00084,불도우저19ton,(암),X +X00085,덤프트럭,24톤,X +X00086,덤프자동덮개,24톤,X +X00087,덤프트럭24ton(토사),,X +X00088,굴삭기(0.7m3),할증율:1.20,X +X00089,굴삭기+부착용 집게(0.6m3),,X +X00090,덤프트럭(2.5ton),할증율:1.25,X +X00092,덤프트럭4.5ton(암),,X +X00094,진동롤러(자주식),10톤,X +X00099,굴삭기+진동콤팩터,0.7m3,X +X00101,굴삭기(1.0m3),할증율:1.20,X +X00102,덤프트럭,10.5톤,X +X00104,불도저(무한궤도),19톤,X +X00105,굴삭기(타이어),"0.6㎥,(부착용집게,0.7~0.8㎥)",X +X00127,트럭트랙터및트레일러,20톤,X +X00202,굴삭기(무한궤도),0.2㎥,X +X00203,굴삭기(무한궤도),0.4㎥,X +X00204,굴삭기(무한궤도),0.6㎥,X +X00205,굴삭기(무한궤도),0.7㎥,X +X00206,굴삭기(무한궤도),0.8㎥,X +X00207,굴삭기(무한궤도),1.0㎥,X +X00212,굴삭기(타이어),0.6㎥,X +X00233,굴삭기(무한궤도),"0.7㎥,(브레이커조합)",X +X00268,굴삭기(무한궤도),0.2㎥:할증120%,X +X00270,굴삭기(무한궤도),0.7㎥:할증120%,X +X00272,덤프트럭,2.5톤:할증125%,X +X00275,덤프트럭,15톤:할증125%,X +X00283,굴삭기(타이어),0.6㎥,X +X00292,덤프트럭,24톤,X +X00350,콘크리트 믹서,0.45㎥,X +X00352,커터(콘크리트 및 아스팔트용),320-440mm,X +X00503,모터그레이더,3.6m (일반용),X +X00568,트럭탑재형 크레인,10톤,X +X00603,덤프트럭,4.5톤,X +X00606,덤프트럭,15톤,X +X00607,덤프트럭,"15톤,(암석)",X +X00610,덤프트럭 자동덮개시설,15톤용,X +X00740,덤프트럭,24톤(할증125%),X +X00750,굴삭기+부착용집게(06),,X +X00751,동력분무기,4.85㎾,X +X01309,진동롤러(자주식),10톤,X +X02104,크레인(타이어),10톤,X +X02107,트럭탑재형 크레인,5톤,X +X02108,트럭탑재형 크레인,10톤,X +X02702,트럭 트랙터 및 평판트레일러,20톤,X +X04330,커터(콘크리트 및 아스팔트용),320-440mm,X +X05405,크롤러드릴(탑승유압식),110㎾,X +X07204,물탱크(살수차),5500ℓ,X +X07205,물탱크(살수차),16000ℓ,X +X07206,이동식 임목파쇄기,93.25㎾,X +X07207,부착용 집게,0.2㎥,X +X07208,부착용 집게,0.6~0.8㎥,X +X07210,동력분무기,4.85㎾,X +X07507,발전기,250㎾,X +X08802,콘크리트 진동기,45φ(2.6㎾)엔진식플렉시블형,X diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/big_form_parse.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/big_form_parse.py new file mode 100644 index 00000000..edecde0d --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/big_form_parse.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +"""큰 편집 폼 깊이 파싱 + PM_* 인쇄폼 ↔ SET_REP 서식 대응.""" +import sys, io, re, pathlib, struct, importlib.util, collections + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") +spec=importlib.util.spec_from_file_location("pd", REPO + r"\resources\knowledge\original\경쟁사 프로그램\STmate 분석\40_스크립트\parse_dfm.py") +pd=importlib.util.module_from_spec(spec); spec.loader.exec_module(pd) +F=pathlib.Path(r"C:\Users\umsan\AppData\Local\Temp\claude\D--aislo-wt-sub\df75230a-b05b-4088-ad34-bb0c9da0a312\scratchpad\forms") + +def walk(n, out, d=0): + if isinstance(n,dict): + pr=n.get("properties") or {} + out.append((d, n.get("class",""), n.get("name",""), pr)) + for c in n.get("children",[]) or []: walk(c,out,d+1) + return out + +for f in ("wBoq","wM_Edit_San"): + p=F/(f+".dfm") + if not p.exists(): print("없음 %s"%f); continue + try: + r=pd.Reader(p.read_bytes()); r.take(4); root=r.component(root=True) + except Exception as e: print("%s 파싱 실패 %s"%(f,e)); continue + ns=walk(root,[]) + print("\n" + "="*96) + print("### %s 컴포넌트 %d개" % (f, len(ns))) + # 그리드 열 제목 + for d,cls,nm,pr in ns: + cols=pr.get("Columns") + if isinstance(cols,list) and cols: + tt=[ (c.get("Title.Caption") or "").replace("\r"," / ").strip() for c in cols ] + fl=[ (c.get("FieldName") or "") for c in cols ] + print("\n ▣ 그리드 %s 열 %d개" % (nm, len(cols))) + for t,fn in zip(tt,fl): + if t or fn: print(" %-26s ← %s" % (t[:26], fn)) + # 액션·버튼 캡션 + caps=[str(pr.get("Caption")) for d,cls,nm,pr in ns + if isinstance(pr.get("Caption"),str) and any(ord(c)>127 for c in pr["Caption"])] + uniq=[] + for c in caps: + c=c.strip() + if c and c not in uniq: uniq.append(c) + print("\n 기능 캡션 %d개" % len(uniq)) + for i in range(0,min(len(uniq),60),3): + print(" " + " ".join("%-28s"%x[:28] for x in uniq[i:i+3])) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/code_name_list.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/code_name_list.py new file mode 100644 index 00000000..5ef35924 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/code_name_list.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +"""자원 이름·코드 목록이 평문으로 읽히는 자리를 모은다 (단가 없이도 축 매칭에 쓸 것).""" +import sys, io, re, pathlib, zipfile, struct, warnings, collections +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") +warnings.filterwarnings("ignore"); import openpyxl +def _repo_root(): + p=pathlib.Path(__file__).resolve() + for q in p.parents: + if (q/"resources"/"knowledge").is_dir(): return q + return pathlib.Path(r"D:\aislo-wt\sub") +REPO=_repo_root(); PRAC=REPO/"resources"/"knowledge"/"original"/"실무문서" + +def dbf(zf,n): + b=zf.read(n); nrec,hlen,rlen=struct.unpack_from("1 and not re.fullmatch(r"[\d.,]+", c) and c!=code), "") + xl[s].setdefault(code, nm) +print("\n### ② 출력 XLSX 목록표 시트 (평문)") +tot=0 +for s in SHEETS: + if s in xl: print(" %-20s 코드 %4d개" % (s, len(xl[s]))); tot+=len(xl[s]) +print(" 합계 %d개" % tot) + +print("\n### ③ 합치면") +allc=dict(res) +for s in xl: + for c,n in xl[s].items(): allc.setdefault(c,(n,"","")) +print(" 서로 다른 자원·단가 코드 %d개" % len(allc)) +k=collections.Counter(c[0] for c in allc) +LBL={"M":"재료","L":"노무","S":"경비","X":"중기","B":"일위대가","D":"단가산출","W":"일식/견적","C":"기타","T":"제목","E":"계"} +for kk,v in sorted(k.items()): print(" %s %-8s %4d개" % (kk, LBL.get(kk,"?"), v)) +out=REPO/"resources"/"knowledge"/"original"/"경쟁사 프로그램"/"STmate 분석"/"30_원자료"/"stmate_code_name_list.csv" +import csv +with open(out,"w",newline="",encoding="utf-8-sig") as fh: + w=csv.writer(fh); w.writerow(["code","name","size","unit"]) + for c,(n,sz,u) in sorted(allc.items()): w.writerow([c,n,sz,u]) +print("\n → 저장: %s" % out.name) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/costn_invariant_audit.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/costn_invariant_audit.py index 6dd9b5da..a05e8b64 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/costn_invariant_audit.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/costn_invariant_audit.py @@ -1,5 +1,14 @@ # -*- coding: utf-8 -*- import pathlib, zipfile, struct, sys, io + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") def rd(zf, name): @@ -48,7 +57,7 @@ print(" RATE_A 첫행: %s" % " ".join(x or "·" for x in ra[0])) print(" RATE_M 첫행: %s" % " ".join(x or "·" for x in rm[0])) print("\n### 다른 프로젝트에도 RATE_A/RATE_B 가 있나") -for p in sorted(pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서").rglob("*.STC")): +for p in sorted(pathlib.Path(REPO + r"\resources\knowledge\original\실무문서").rglob("*.STC")): try: zz = zipfile.ZipFile(p) rs = sorted(n for n in zz.namelist() if re.match(r"RATE", n, re.I)) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/coverage_ledger.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/coverage_ledger.py index 38af52e0..8f41eb5a 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/coverage_ledger.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/coverage_ledger.py @@ -1,10 +1,19 @@ # -*- coding: utf-8 -*- """진행률 장부 — 원천별로 무엇을 어디까지 봤나 실제로 센다.""" import sys, io, pathlib, zipfile, struct, re, warnings, collections + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") warnings.filterwarnings("ignore"); import openpyxl SYS = pathlib.Path(r"C:\경영정보(주)\System") -PRAC = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서") +PRAC = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서") # ── ① 설치 폴더 186개 ── files = [p for p in SYS.rglob("*") if p.is_file()] diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/cycle_formula_extract.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/cycle_formula_extract.py new file mode 100644 index 00000000..fd0fa11f --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/cycle_formula_extract.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +"""COSTN.SMT 의 Cm(사이클) 식과 인자 정의를 꼴별로 모은다.""" +import sys, io, re, pathlib, zipfile, collections + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") +PRAC = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서") +SRC = [pathlib.Path(r"C:\경영정보(주)\STmate 자료\설계자료\실습(맛보기)\COSTN.SMT")] + sorted(PRAC.rglob("*.STC")) + +def body(b): + out=[] + for m in re.finditer(rb"[\x20-\x7e\xa1-\xfe]{3,}", b[0x200:]): + try: out.append(m.group().decode("cp949")) + except Exception: pass + return out + +RE_CM = re.compile(r"\bCm\d?\s*=\s*([^=\n]{4,90})") +RE_DEF = re.compile(r"\b([A-Za-z]\w{0,3})\s*[:=]\s*([^,\n]{1,40})") +cm=collections.Counter(); defs=collections.Counter(); lines=0 +for s in SRC: + try: + if s.suffix.upper()==".STC": + z=zipfile.ZipFile(s) + nm=next((n for n in z.namelist() if n.upper()=="COSTN.SMT"),None) + if not nm: continue + b=z.read(nm) + else: b=s.read_bytes() + except Exception: continue + if b[8:15]!=b"SIxMemo": continue + for ln in body(b): + lines+=1 + for m in RE_CM.findall(ln): + t=re.sub(r"\s+","",m).rstrip("=") + if len(t)>3: cm[t[:70]]+=1 + if "'" not in ln and re.match(r"^\s*[A-Za-z]\w{0,3}\s*[:=]", ln): + for k,v in RE_DEF.findall(ln): + vv=re.sub(r"\s+","",v) + if len(k)<=4 and vv: defs[(k,vv[:24])]+=1 + +print("### Cm(사이클 시간) 식 — 서로 다른 꼴 %d개 / 본문 %d줄" % (len(cm), lines)) +for s,c in cm.most_common(26): print(" %-70s %3d" % (s, c)) +print("\n### 인자 정의 (상위 34)") +for (k,v),c in defs.most_common(34): print(" %-5s = %-26s %3d회" % (k, v, c)) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_bonghwa_full.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_bonghwa_full.py index 33a0eb1a..c05ce124 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_bonghwa_full.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_bonghwa_full.py @@ -6,7 +6,16 @@ sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="repla warnings.filterwarnings("ignore") import openpyxl -BASE = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서") +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + + +BASE = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서") STC = BASE/"13-2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.STC" XLS = BASE/"2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx" D = Decimal diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_regression.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_regression.py index 05adaec3..36a24218 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_regression.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/golden_regression.py @@ -5,7 +5,16 @@ from decimal import Decimal as D, ROUND_DOWN, ROUND_HALF_UP, ROUND_UP sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") warnings.filterwarnings("ignore") import openpyxl -ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서") + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + +ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서") def dn(x): return D(x).quantize(D(1), rounding=ROUND_DOWN) def dbf(zf,name): diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/machine_rate_extract.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/machine_rate_extract.py index afa10a50..8daa9805 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/machine_rate_extract.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/machine_rate_extract.py @@ -2,13 +2,22 @@ """중기사용료 호표에서 시간당 손료율·연료·잡품률을 뽑는다.""" import sys, io, pathlib, warnings, re, collections from decimal import Decimal as D + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") warnings.filterwarnings("ignore"); import openpyxl def dec(v): if v in (None,""): return None try: return D(str(v)) except Exception: return None -P = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서\2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx") +P = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서\04.산불 봉화\01. 내역서\2024년 산불진화임도 실시설계(기번41_현동)_ L=3.46km.xlsx") ws = openpyxl.load_workbook(P, data_only=True)["중기사용료"] rows=[list(r) for r in ws.iter_rows(min_row=1,max_row=ws.max_row,max_col=12,values_only=True)] 호표=[]; cur=None; title=None diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/material_adoption_test.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/material_adoption_test.py index 51fbc708..37190b64 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/material_adoption_test.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/material_adoption_test.py @@ -2,13 +2,22 @@ """자재 채택 규칙 검정 — 적용단가가 후보 중 무엇인가.""" import sys, io, pathlib, warnings, collections from decimal import Decimal as D + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") warnings.filterwarnings("ignore"); import openpyxl def dec(v): if v in (None,""): return None try: return D(str(v)) except Exception: return None -ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서") +ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서") SLOTS = [("조달가격",5),("물가자료",7),("물가정보",9),("거래가격",11),("견적단가",13)] APPLY = 15 stat = collections.Counter(); examples=[] diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/module_string_probe.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/module_string_probe.py new file mode 100644 index 00000000..5e59affe --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/module_string_probe.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +"""모듈 한글 문자열 훑기 — 사전·오류메시지에서 규칙을 캔다.""" +import sys, io, re, pathlib +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") +R=pathlib.Path(r"C:\경영정보(주)\System") +for n in sys.argv[1:] or ["ST_U_Convert.CPM","STmateQty8.CPM","ST_EdSan.CPM"]: + b=next(R.rglob(n)).read_bytes(); ko=[] + for m in re.finditer(rb"[\xb0-\xc8][\xa1-\xfe](?:[\x20-\x7e\xa1-\xfe]){1,44}", b): + try: s=m.group().decode("cp949").strip() + except Exception: continue + if sum(1 for c in s if 0xAC00<=ord(c)<=0xD7A3)>=2 and s not in ko: ko.append(s) + print("\n### %s — 한글 문자열 %d개" % (n, len(ko))) + for s in ko: print(" %s" % s[:76]) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/print_form_map.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/print_form_map.py new file mode 100644 index 00000000..b1855026 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/print_form_map.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +"""PM_* 인쇄 폼·export ↔ SET_REP 서식 75종 대응.""" +import sys, io, re, pathlib, struct, collections +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") +SYS=pathlib.Path(r"C:\경영정보(주)\System") +D=pathlib.Path(r"C:\경영정보(주)\STmate 자료\설계자료\실습(맛보기)") + +# SET_REP 75종 +b=(D/"SET_REP.DBF").read_bytes(); nrec,hlen,rlen=struct.unpack_from("127 for c in pr["Caption"])] + uniq=[] + for c in caps: + c=c.strip() + if c and c not in uniq: uniq.append(c) + print("\n 기능 캡션 %d개" % len(uniq)) + for i in range(0,min(len(uniq),60),3): + print(" " + " ".join("%-28s"%x[:28] for x in uniq[i:i+3])) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/stc_table_probe.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/stc_table_probe.py index 82eaa35e..13efc5fe 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/stc_table_probe.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/stc_table_probe.py @@ -1,10 +1,19 @@ # -*- coding: utf-8 -*- """STC 프로젝트 안의 표들이 실제로 읽히는지 본다. 복호화 시도 없음.""" import pathlib, zipfile, struct, sys, io, collections + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") roots = [pathlib.Path(r"C:\경영정보(주)"), - pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서")] + pathlib.Path(REPO + r"\resources\knowledge\original\실무문서")] stcs = [] for r in roots: if r.exists(): stcs += sorted(r.rglob("*.STC")) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/t1_cross_project_consistency.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/t1_cross_project_consistency.py index df868766..9faa8dfe 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/t1_cross_project_consistency.py +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/t1_cross_project_consistency.py @@ -1,9 +1,18 @@ # -*- coding: utf-8 -*- """T1 대체 — 통제시험 없이, 모든 프로젝트에서 동시에 성립하는 좌표만 남긴다.""" import sys, io, pathlib, re, zipfile, struct, collections, warnings, difflib + +# -- 저장소 뿌리 찾기 (창마다 경로가 달라 절대경로를 박지 않음) -- +def _repo_root(): + p = pathlib.Path(__file__).resolve() + for q in p.parents: + if (q / "resources" / "knowledge").is_dir(): return str(q) + raise SystemExit("저장소 뿌리를 못 찾음 - resources/knowledge 가 있는 폴더 아래에서 실행할 것") +REPO = _repo_root() + sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") warnings.filterwarnings("ignore"); import openpyxl -ROOT = pathlib.Path(r"D:\aislo-wt\sub\resources\knowledge\original\실무문서") +ROOT = pathlib.Path(REPO + r"\resources\knowledge\original\실무문서") def dbf(zf,name): b=zf.read(name); nrec,hlen,rlen=struct.unpack_from("