From a4a2ecac4850a643fa74ff88ad516c2da7cb8979 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 13 Sep 2026 14:48:14 +0900 Subject: [PATCH] =?UTF-8?q?knowledge(=EA=B2=BD=EC=9F=81=EC=82=AC):=20?= =?UTF-8?q?=EC=A1=B0=EB=8B=AC=EC=B2=AD=20=EA=B3=B5=EC=82=AC=EC=9B=90?= =?UTF-8?q?=EA=B0=80=ED=98=B8=ED=99=98=EA=B7=9C=EC=A0=95=20XSD=20=EB=B0=9C?= =?UTF-8?q?=EA=B2=AC=20=E2=80=94=20=EA=B5=AD=EA=B0=80=20=ED=91=9C=EC=A4=80?= =?UTF-8?q?=20=EB=82=A9=ED=92=88=20=EA=B7=9C=EA=B2=A9=20=EC=A0=84=EB=AC=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 최종 빈칸 점검에서 확장자 기준으로 한 번도 안 연 파일을 훑다가 나옴. 28번의 「XML 스키마는 실행 중 조립이라 못 얻음」은 틀렸음 — 정정함. System/Valid_Xml.vsl = 조달청 공사원가호환규정 V1.0.5 XSD 전문 (1,429줄) - 조달청 공사원가통합관리시스템(npccs.g2b.go.kr) 발표하는 공개 규격. STmate 고유가 아니라 국가 표준이라 Aislo 가 그대로 따르면 됨 - complexType 32 · simpleType 21 · 열거형 40곳 - 같은 폴더에 「호환규정코드(2026_09_01)」 안내문도 있음 문서 뼈대가 우리가 판 STmate 구조와 한 겹씩 대응 - 일위대가/상세 · 중기단가산출 · 기계경비/상세 · 자재 · 노무 · 경비항목 · 실적단가 · 제경비항목 · 내역서→공종→세부공종 ⭐ 규격이 우리 계약을 뒷받침함 - 제경비항목에 적용산식·적용산식설명 칸이 있음 = 「식을 데이터로 저장하라」가 납품 규격의 요구사항이기도 함 - 직접공사비정보에 제요율적용제외공종_금액 이 박혀 있음 = C* 제외금액 구역과 낙찰율 적용제외가 국가 표준에도 있는 개념 ⭐ 기계경비 산출 규격이 우리가 캔 것과 정확히 일치 - 시간당노임산출 H0-일반구간·H1-터널구간·H2-장대터널·H3-펌프준설선· H4-그래브준설선·H5-버킷준설선·H_-사용자정의 = 22번의 wM_Set_Sys cmBx_Sel_RX 와 하나도 안 틀림. Start8x.Ini 의 RXXNM·RX1NM~RX4NM 이 이 자리임 - 환율형식(USD/EUR/100엔)도 EXNM_·EXEUR·EXYEN 과 맞음 - ⚠ 시간당손료산출이 E0-주간·E1-야간·E2-2교대·E3-3교대 네 갈래. 17번에서 뽑은 손료율 25개는 E0 하나뿐임 열거형 — 주공사 9종(국가유산수리 포함)·공사현장지역코드 290·인도조건 40· 시설물유형 27·지역구분 3(산간도서 포함)·내진등급·에너지효율·녹색건축 등 XSD 사본과 구조 덤프를 30_원자료에 넣음. 최신판은 npccs.g2b.go.kr 에서 직접 받을 것. 문서 30 신규, 스크립트 2개 추가. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Prk9BCHG1EMAywk9k8wegA --- .../20_분석/00_분석_요약과_읽는법.md | 6 + .../20_분석/28_변환_수량산출_식언어.md | 4 +- .../20_분석/30_조달청_호환규정_XSD.md | 149 ++++++++++++++++++ .../STmate 분석/30_원자료/조달청_XSD_구조.txt | 56 +++++++ .../40_스크립트/final_gap_check.py | 21 +++ .../STmate 분석/40_스크립트/xsd_parse.py | 34 ++++ .../경쟁사 프로그램/STmate 분석/README.md | 1 + 7 files changed, 269 insertions(+), 2 deletions(-) create mode 100644 resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/30_조달청_호환규정_XSD.md create mode 100644 resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/조달청_XSD_구조.txt create mode 100644 resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/final_gap_check.py create mode 100644 resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/xsd_parse.py diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md index eab8feaf..8c514568 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/00_분석_요약과_읽는법.md @@ -36,6 +36,7 @@ | 27 계약·실행·기성 단계 | **설계 뒤 네 단계** — 낙찰율 3갈래, 기성은 계약제잡비율, 실행 차액보정 | (저장소 파일) | | 28 변환·수량산출·식언어 | **식 변수의 대상/저장 비목** · 수량산출서 셀별명 · 조달청 변환 · 직종 106종 | (저장소 파일) | | 29 암호화자료의 뼈대 | **값 없이 구조만** — 스키마 평문, 카탈로그 규모, 분류 4~5단, 단위 59~130종 | (저장소 파일) | +| 30 조달청 호환규정 XSD | ⭐ **국가 표준 납품 규격 전문** — 문서 뼈대·제경비 적용산식·기계경비 산출 | (저장소 파일) | > **정본은 저장소 파일이다** — `resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/`. > 위 Orca 링크는 보기용이며, 문서를 지식DB 자리로 옮기면서 주소가 한 번 바뀌었다. @@ -131,6 +132,11 @@ | 카탈로그 규모 | 건수만 | **명칭 1,761종 : 자재 57,580건** — 규격이 난관 | 29번 §3 | | 단위 사전 | 몰랐음 | **59종(자재)·130종(통합)** | 29번 §3 | | 표준시장단가 | 건수만 | **노무만 요율 조정** (`RATE_M`·`RATE_S` 빈칸) | 29번 §3.2 | +| XML 스키마 | ⛔ 「못 얻음」이라 적었음 | **정정 — `Valid_Xml.vsl` 에 XSD 전문** | 30번 | +| 납품 규격 | STmate 고유로 봄 | **조달청 공개 국가 표준** V1.0.5 — 그대로 따름 | 30번 §1 | +| 식을 데이터로 저장 | 우리 계약 | **규격이 `적용산식`·`적용산식설명`을 요구** | 30번 §3 | +| 노임 환산 갈래 | 화면 문자열 | **`H0`~`H5` 규격 코드** (일반·터널·장대터널·준설선 3종) | 30번 §4 | +| 손료 산출 | 한 갈래로 봄 | ⚠ **주간/야간/2교대/3교대 네 갈래** — 뽑은 25개는 `E0` 뿐 | 30번 §4 | 분석일: 2026-09-13 대상: `C:\경영정보(주)` diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/28_변환_수량산출_식언어.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/28_변환_수량산출_식언어.md index b03e3a97..00ed0433 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/28_변환_수량산출_식언어.md +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/28_변환_수량산출_식언어.md @@ -85,7 +85,7 @@ ST_Conv_Mode1/2/3 · ST_Conv_Data · ST_Copy_Data ⇒ **납품 호환 경로가 프로그램 안에 있다.** `호환규정코드`가 `wM_Mrg_BSC`의 매칭 키 1순위였던 것(20번 §2)과 이어진다. -XML **스키마는 문자열로 안 남는다** — 실행 중에 조립한다. 태그 이름을 정적으로는 못 얻는다. +> ⛔ **이 판정은 틀렸다. 30번에서 정정했다.** 스키마는 `System\Valid_Xml.vsl` 에 **XSD 파일로 있다**(1,429줄, 조달청 공사원가호환규정 V1.0.5). ### 3.1 노임 직종 사전 106종 @@ -163,7 +163,7 @@ EQSYNC.DBF 54행 × 3열 (2.9 KB) | 무엇 | 상태 | |---|---| -| XML 스키마 태그 | 실행 중 조립 — 정적으로 못 얻음 | +| ~~XML 스키마 태그~~ | ✅ **해결** — `Valid_Xml.vsl` XSD 전문 (30번) | | `EQSYNC` 내용 | 암호화 | | 수량산출서 파일 형식 | 표본 0건 (`QCODE` 전부 빈 표) | | 조달청 변환 결과물 | 표본 0건 | diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/30_조달청_호환규정_XSD.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/30_조달청_호환규정_XSD.md new file mode 100644 index 00000000..ab68467f --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/20_분석/30_조달청_호환규정_XSD.md @@ -0,0 +1,149 @@ +# 조달청 공사원가호환규정 XSD — 국가 표준 납품 규격 + +발견일: 2026-09-13 +계기: 최종 빈칸 점검에서 **확장자 기준으로 한 번도 안 연 파일 종류**를 훑다가 나옴. +⛔ **28번 §3의 「XML 스키마는 실행 중 조립이라 정적으로 못 얻음」은 틀렸다.** 스키마가 **파일로 있다.** + +원본: `C:\경영정보(주)\System\Valid_Xml.vsl` (57.4 KB · 1,429줄) +재현 스크립트: `40_스크립트/xsd_parse.py` · 사본 `30_원자료/조달청_공사원가호환규정.xsd` + +## 1. 무엇인가 + +```xml + + 이 문서는 공사원가호환규정 V1.0.4 XML스키마이다. 최종수정일 2022-10-06 + … 1.0.5 건축공사의 사업내용 정보 추가 (2022-11-28) + +``` + +**조달청 공사원가통합관리시스템(`npccs.g2b.go.kr`)이 발표하는 공개 규격**이다. STmate 고유 포맷이 아니라 **국가 표준**이므로 Aislo가 그대로 따라 쓰면 된다. + +같은 폴더에 `호환규정코드(2026_09_01)` 안내문도 있다. + +```text +호환규정코드 2026년 9월 1일 조달청 발표분 반영 +조달청 공사원가통합관리시스템 https://npccs.g2b.go.kr 발표 +``` + +⇒ **STmate는 이 규격을 따라 `Conv_Jodal_ST8`·`Conv_ST8_XML`(28번 §3)로 변환한다.** 규정 코드는 반기마다 갱신된다. + +버전 이력이 그대로 남아 있다 — `1.0.0` → `1.0.5`. 내역공종코드 길이가 **16 → 20자**로 늘어난 것(2017-04-19)도 적혀 있다. + +## 2. 문서 뼈대 + +```text +공사원가호환규정 + ├ 스키마버전 1.0.0 ~ 1.0.5 + ├ 작성정보 작성업체명 · 프로그램명 · 프로그램버전 · 파일제작일 + │ · 파일검증여부 · 건축공사사업내용작성여부 + ├ 공사정보 공사관리번호 · 주공사 · 공사명 · 비고 + │ · 기계경비산출 · 건축공사사업내용 + └ 공사내역서 + ├ 공사제경비 → 제경비항목 + └ 단일공사내역서 + ├ 단일공사정보 (공사구분 · 공사설명 · 전역변수) + ├ 내역서 → 공종 → 세부공종 + ├ 일위대가 → 일위대가상세 + ├ 중기단가산출 + ├ 기계경비 → 기계경비상세 + ├ 자재 → 조사처별단가 + ├ 노무 + ├ 경비항목 → 조사처별단가_경비 + ├ 실적단가 + └ 제경비 +``` + +**우리가 판 STmate 구조와 한 겹씩 대응한다.** + +| 호환규정 | STmate | +|---|---| +| 일위대가 / 일위대가상세 | `B` 코드 호표 (17번) | +| 중기단가산출 | `D` 코드 (18번 §2.2) | +| 기계경비 / 기계경비상세 | 중기사용료 호표 (17번 §3) | +| 자재 · 노무 · 경비항목 | `M` · `L` · `S` 코드 | +| 실적단가 | 표준시장단가 `CSTA` (29번 §1.3) | +| 제경비항목 | 간접비 (25번 §2) | +| 내역서 → 공종 → 세부공종 | `BOQ11` 계층 (16번 §4.1) | + +## 3. ⭐ 제경비 항목이 **적용산식을 문자열로** 싣는다 + +```text +제경비항목정보 : 세부공종코드 · 집계항목여부 · 비목명 + · 적용산식 · 적용요율 · 추가금액 · 산출금액 · 적용산식설명 +``` + +⇒ **국가 규격 자체가 「밑수 산식을 글로 적어 함께 보내라」고 정한다.** 25번 §2의 간접비 식 템플릿 26개와 같은 요구다. 우리가 「식을 데이터로 저장하라」고 세운 계약이 **납품 규격과 맞아떨어진다.** + +`직접공사비정보`도 따로 있다. + +```text +직접공사비_재료비 · 직접공사비_노무비 · 직접공사비_경비 +· 미확정설계공종_금액 · 제요율적용제외공종_금액 · 관급자재공종_금액 +``` + +⇒ **「제요율적용제외공종」이 규격에 못 박혀 있다** — 16번 §4.2의 `C*` 제외금액 구역, 27번 §2.3의 낙찰율 적용제외와 같은 개념이 **국가 표준에도 있다.** + +## 4. ⭐ 기계경비 산출 규격 — 우리가 캔 것과 정확히 맞는다 + +```text +기계경비산출형식 : 환율 · 시간당손료산출 · 시간당노임산출 + +환율형식 미국_1USD · 유럽연합_1EUR · 일본_100엔 +시간당손료산출 E0-주간 · E1-야간 · E2-주야간2교대 · E3-주야간3교대 +시간당노임산출 H0-일반구간 · H1-터널구간 · H2-장대터널 + · H3-펌프준설선 · H4-그래브준설선 · H5-버킷준설선 · H_-사용자정의 +``` + +**22번 §3.4에서 `wM_Set_Sys`의 `cmBx_Sel_RX`가 「계수 ; 터널구간 / 계수-1 ; 장대터널 / 계수-2 ; 펌프준설선 / 계수-3 ; GRAB준설선 / 계수-4 ; 버켓준설선」이라 한 것과 하나도 안 틀리고 같다.** + +⇒ `Start8x.Ini`의 `RXXNM`·`RX1NM`~`RX4NM`(20번 §2.5)이 **규격의 `H0`~`H5` 자리**다. 18번 §2.1의 노임 환산식 `1/8*16/12*25/20`이 `H0-일반구간`에 해당한다. + +`환율형식`도 `EXNM_`·`EXEUR`·`EXYEN`(18번 §2.3)과 그대로 맞는다. + +⚠ **`시간당손료산출`이 주간/야간/2교대/3교대 네 갈래**다 — 우리가 17번 §4에서 뽑은 손료율 25개는 **`E0-주간` 한 갈래**일 뿐이다. + +## 5. 열거형 — 코드 목록이 규격에 박혀 있다 + +| 열거 | 개수 | 값 | +|---|---:|---| +| **주공사** | 9 | 토목 · 건축 · 설비 · 전기 · 통신 · 조경 · 소방 · 문화재수리 · **국가유산수리** | +| **공사현장지역코드** | **290** | 행정구역 코드 (`11110` 서울 종로 …) | +| 인도조건구분 | 40 | 일반 · 납품장소도 · 상차도 · 하차도 · 현장설치도 · 생산공장도 … | +| 시설물유형 | 27 | 일반청사 · 대형청사 · 초중고 · 대학교 · 도서관 · 체육시설 … | +| 지역구분 | 3 | 비혼잡(일반) · 혼잡(특수) · **산간도서(특수)** | +| 구조형식 | 4 | 철골조 · 철골철근콘크리트조 · 철근콘크리트조 · 기타 | +| 내진등급 | 3 | 특등급 · 1등급 · 2등급 | +| 에너지효율등급 | 5 | `1+++` ~ 7등급 · 해당 없음 | +| 녹색건축인증 | 5 | 최우수 · 우수 · 우량 · 일반 · 해당 없음 | +| 철거공사 포함여부 · BF인증 · 신재생에너지 · 지반형태 · 흙막이 | 각 2 | | + +**`주공사`에 `문화재수리공사`와 `국가유산수리공사`가 둘 다 있다** — 10번 §4에서 2020-05-27에 국가유산 열이 붙은 것과 이어진다(명칭 개정 과도기). + +**`지역구분`의 `산간도서지역(특수)`** 은 임도에 바로 걸린다. + +## 6. 건축공사 사업내용 36요소 + +```text +연면적 · 대지면적 · 건축면적 · 조경면적 · 지하층연면적 · 용적률 · 건폐율 +기준층층고 · 최고높이 · 최대지하층수 · 최대지상층수 · 공사일수 · 공사현장 … +``` + +건축 전용이라 임도와 직접 관계는 없으나, **규격이 공사 종류별로 사업내용을 따로 요구**한다는 점은 알아 둘 것. + +## 7. 이 발견이 바꾸는 것 + +| 항목 | 이전 | 지금 | +|---|---|---| +| XML 스키마 | ⛔ 「실행 중 조립이라 못 얻음」 | ✅ **파일로 있음** — XSD 1,429줄 전문 | +| 납품 규격 | STmate 고유로 봄 | ✅ **조달청 공개 국가 표준** — 그대로 따라 쓰면 됨 | +| 식을 데이터로 | 우리 계약 | ✅ **규격이 `적용산식`·`적용산식설명`을 요구** | +| 제외공종 | STmate 구현으로 봄 | ✅ **규격에 `제요율적용제외공종_금액`** | +| 노임 환산 갈래 | 화면 문자열로만 | ✅ **`H0`~`H5` 규격 코드** | +| 손료 산출 | 한 갈래로 봄 | ⚠ **주간/야간/2교대/3교대 네 갈래** — 우리가 뽑은 25개는 `E0` 뿐 | +| 공사 종류 | 임도 중심 | ✅ **9종 + 지역코드 290** | + +## 8. 남은 것 + +1. `30_원자료/조달청_공사원가호환규정.xsd` 로 사본을 떠 뒀다. **최신판은 `npccs.g2b.go.kr` 에서 직접 받을 것** — 이 사본은 V1.0.5(2022-11-28)이다. +2. 세부공종 28요소·일위대가상세 21요소의 **필드별 뜻**은 아직 안 풀었다. +3. 손료 `E1`~`E3`(야간·교대) 계수는 STmate 자료에 없다 — 품셈에서 가져와야 한다. diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/조달청_XSD_구조.txt b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/조달청_XSD_구조.txt new file mode 100644 index 00000000..7bf50426 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/조달청_XSD_구조.txt @@ -0,0 +1,56 @@ +### 조달청 공사원가호환규정 XSD + complexType 32개 · simpleType 21개 + +■ complexType (구조 정의) + 공사원가호환규정형식 요소 4 스키마버전, 작성정보, 공사정보, 공사내역서 + 공사정보형식 요소 6 공사관리번호, 주공사, 공사명, 비고, 기계경비산출, 건축공사사업내용 + 건축공사사업내용형식 요소 36 연면적, 대지면적, 건축면적, 조경면적, 지하층연면적, 용적률, 건폐율, 기준층층고, 최고높이, 최대지하층수, 최대지상층수, 공사일수, 공사현장 + 작성정보형식 요소 6 작성업체명, 프로그램명, 프로그램버전, 파일제작일, 파일검증여부, 건축공사사업내용작성여부 + 실적단가형식 요소 11 항목구분, 공종구분, 실적공사비코드, 품명, 규격, 단위, 재료비단가, 노무비단가, 경비단가, 비고, 기타 + 노임산출근거형식 요소 4 산출수량, 노임별공량, 노임할증, 공량품셈근거 + 일위대가상세형식 요소 21 자원구분, 자원코드, 계산제외, 품명, 규격, 단위, 수량, 재료비단가, 노무비단가, 경비단가, 재료비, 노무비, 경비, 관급, 손료코드군, 손 + 일위대가형식 요소 12 일위대가코드, 번호, 품명, 규격, 단위, 재료비, 노무비, 경비, 비목구분, 비고, 기타, 일위대가상세 + 중기단가산출형식 요소 12 중기단가산출코드, 번호, 품명, 규격, 단위, 재료비, 노무비, 경비, 비목구분, 비고, 중기단가산출식, 기타 + 기계경비형식 요소 13 기계경비코드, 번호, 품명, 규격, 단위, 작업시간, 작업장소, 재료비, 노무비, 경비, 비고, 기타, 기계경비상세 + 자재형식 요소 9 자재코드, 품명, 규격, 단위, 재료비단가, 인도조건구분, 비고, 기타, 조사처별단가 + 노무형식 요소 7 노무코드, 품명, 규격, 단위, 노무비단가, 비고, 기타 + 경비항목형식 요소 16 경비항목코드, 경비구분, 품명, 규격, 단위, 통화구분, 재료비단가, 노무비단가, 경비단가, 외화경비단가, 상각비계수, 정비비계수, 관리비계수, + 조사처별단가형식 요소 5 상호, 전화번호, 재료비단가, 인도조건구분, 비고 + 조사처별단가형식_경비 요소 7 상호, 전화번호, 재료비단가, 노무비단가, 경비단가, 인도조건구분, 비고 + 공사내역서형식 요소 2 공사제경비, 단일공사내역서 + 단일공사내역서형식 요소 10 단일공사정보, 내역서, 일위대가, 중기단가산출, 기계경비, 자재, 노무, 경비항목, 실적단가, 제경비 + 공종형식 요소 11 내역서번호, 공종구분, 계산제외, 공종번호, 공종명, 재료비, 노무비, 경비, 비고, 기타, 세부공종 + 세부공종형식 요소 28 세부공종코드, 자원구분, 계산제외, 세부공종번호, 세부공종명, 규격, 단위, 수량, 재료비단가, 노무비단가, 경비단가, 재료비, 노무비, 경비, + 단일공사정보형식 요소 3 공사구분, 공사설명, 전역변수 + 전역변수형식 요소 2 변수명, 실수값 + 개별노임산출형식 요소 2 노무코드, 공량 + 직접공사비정보 요소 6 직접공사비_재료비, 직접공사비_노무비, 직접공사비_경비, 미확정설계공종_금액, 제요율적용제외공종_금액, 관급자재공종_금액 + 제경비항목정보 요소 8 세부공종코드, 집계항목여부, 비목명, 적용산식, 적용요율, 추가금액, 산출금액, 적용산식설명 + 공사제경비형식 요소 1 제경비항목 + 기계경비상세 요소 22 자원구분, 자원코드, 계산제외, 품명, 규격, 단위, 수량, 재료비단가, 노무비단가, 경비단가, 재료비, 노무비, 경비, 손료코드군, 손료계산비 + 사용자정의_시간당노임산출정보 요소 2 사용자정의코드, 노임산출 + 노임산출형식 요소 3 산출식, 계산값, 적용구분 + 기계경비산출형식 요소 3 환율, 시간당손료산출, 시간당노임산출 + 환율형식 요소 3 미국_1USD, 유럽연합_1EUR, 일본_100엔 + 시간당손료산출형식 요소 4 E0-주간, E1-야간, E2-주야간2교대, E3-주야간3교대 + 시간당노임산출형식 요소 7 H0-일반구간, H1-터널구간, H2-장대터널, H3-펌프준설선, H4-그래브준설선, H5-버킷준설선, H_-사용자정의 + +■ 열거형 (코드 목록) + 인도조건구분형식 40개: 일반, 납품장소도, 납품장소상차도, 납품장소하차도, 납품장소입고도, 현장설치도, 생산공장도(상차제외), 최기역레일도, 운반구상차도, 분공장도(상차제외), 수요기관 부 + 열거형 1개 + +■ 인라인 열거 40곳 (앞 14) + 스키마버전 6개: 1.0.5, 1.0.4, 1.0.3, 1.0.2, 1.0.1, 1.0.0 + 주공사 9개: 토목공사, 건축공사, 설비공사, 전기공사, 통신공사, 조경공사, 소방공사, 문화재수리공사, 국가유산수리공사 + 공사현장지역코드 290개: 11110, 11140, 11170, 11200, 11215, 11230, 11260, 11290, 11305, 11320, 11350, 113 + 시설물유형 27개: 일반청사, 대형청사, 일반형초중고, 복합형초중고, 강의형대학교, 복합형대학교, 일반형수련시설, 복합형수련시설, 도서관, 야외형체육시설, 복합형체 + 철거공사포함여부 2개: 철거공사 포함, 철거공사 미포함 + 지역구분 3개: 비혼잡지역(일반), 혼잡지역(특수), 산간도서지역(특수) + 지반공사.지반형태 2개: 일반지반, 특수지반 + 지반공사.흙막이공사 2개: 흙막이공사가 없는 경우, 흙막이공사가 있는 경우 + 구조형식 4개: 철골조, 철골철근콘크리트조, 철근콘크리트조, 기타 + 내진등급 3개: 내진설계특등급, 내진설계1등급, 내진설계2등급 + 건축물인증.신재생에너지 2개: 대상시설 해당 있음, 대상시설 해당 없음 + 건축물인증.에너지효율등급 5개: 1+++ 등급, 1등급 ~ 1++등급, 2등급 ~ 4등급, 5등급 ~ 7등급, 해당 없음 + 건축물인증.녹색건축인증 5개: 최우수, 우수, 우량, 일반, 해당 없음 + 건축물인증.BF인증 2개: 해당 있음, 해당 없음 diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/final_gap_check.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/final_gap_check.py new file mode 100644 index 00000000..7ebc6ea2 --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/final_gap_check.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +"""최종 빈칸 점검 — 아직 한 번도 안 연 파일 종류가 있나.""" +import sys, io, pathlib, struct, collections, re +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") +R=pathlib.Path(r"C:\경영정보(주)") +COVERED_EXT = {".CPM",".EXE",".BPL",".DLL",".BSC",".CSTA",".STBSC",".DBF",".SMT",".STC", + ".JB_1",".JB_M",".JB_R",".JB_RA",".INI",".MEM",".XLSX"} +kinds=collections.Counter(); other=collections.defaultdict(list) +for p in R.rglob("*"): + if not p.is_file(): continue + e=p.suffix.upper() + kinds[e]+=1 + if e not in COVERED_EXT: other[e].append(p) +print("### `C:\경영정보(주)` 전체 파일 종류") +for e,c in kinds.most_common(): print(" %-10s %3d %s" % (e or "(없음)", c, "✅ 다룸" if e in COVERED_EXT else "·")) +print("\n### 아직 안 다룬 종류의 실제 파일") +for e,ps in sorted(other.items()): + for p in ps[:4]: + try: head=p.open("rb").read(16) + except Exception: head=b"" + print(" %-12s %-30s %7.1f KB 머리=%r" % (e or "(없음)", p.name[:30], p.stat().st_size/1024, head[:10])) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/xsd_parse.py b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/xsd_parse.py new file mode 100644 index 00000000..53ee712a --- /dev/null +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/40_스크립트/xsd_parse.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +"""조달청 공사원가호환규정 XSD 구조 추출.""" +import sys, io, re, pathlib, collections +import xml.etree.ElementTree as ET +sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace") +p=next(pathlib.Path(r"C:\경영정보(주)").rglob("Valid_Xml.vsl")) +t=p.read_text(encoding="utf-8") +NS={"xsd":"http://www.w3.org/2001/XMLSchema"} +root=ET.fromstring(t) +ct=root.findall("xsd:complexType",NS); st=root.findall("xsd:simpleType",NS) +print("### 조달청 공사원가호환규정 XSD") +print(" complexType %d개 · simpleType %d개" % (len(ct), len(st))) +print("\n■ complexType (구조 정의)") +for c in ct: + nm=c.get("name") + els=[e.get("name") or e.get("ref") for e in c.iter("{http://www.w3.org/2001/XMLSchema}element")] + ats=[a.get("name") for a in c.iter("{http://www.w3.org/2001/XMLSchema}attribute")] + print(" %-22s 요소 %2d %s" % (nm, len(els), ", ".join(x for x in els if x)[:80])) + if ats: print(" 속성: %s" % ", ".join(x for x in ats if x)[:80]) +print("\n■ 열거형 (코드 목록)") +n=0 +for s in st: + nm=s.get("name") + en=[e.get("value") for e in s.iter("{http://www.w3.org/2001/XMLSchema}enumeration")] + if not en: continue + n+=1 + print(" %-22s %2d개: %s" % (nm, len(en), ", ".join(en)[:92])) +print(" 열거형 %d개" % n) +# 인라인 열거 +inline=re.findall(r'name="([^"]+)"[^>]*>\s*\s*]*>((?:\s*)+)', t) +print("\n■ 인라인 열거 %d곳 (앞 14)" % len(inline)) +for nm,blk in inline[:14]: + vals=re.findall(r'value="([^"]*)"', blk) + print(" %-22s %2d개: %s" % (nm, len(vals), ", ".join(vals)[:80])) diff --git a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/README.md b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/README.md index ea652a79..fa9a8475 100644 --- a/resources/knowledge/original/경쟁사 프로그램/STmate 분석/README.md +++ b/resources/knowledge/original/경쟁사 프로그램/STmate 분석/README.md @@ -68,6 +68,7 @@ | 27 | **계약·실행·기성 단계** — 설계 뒤 네 단계의 계산 구조 | | 28 | **변환·수량산출·식언어** — 식 변수 대상/저장, 조달청 변환, 직종 106종 | | 29 | **암호화자료의 뼈대** — 값 없이 구조만, 카탈로그 규모와 분류 깊이 | +| 30 | ⭐ **조달청 호환규정 XSD** — 국가 표준 납품 규격 전문 | ## 확정된 굵직한 것