diff --git a/resources/master_data/_갱신절차.md b/resources/master_data/_갱신절차.md new file mode 100644 index 00000000..ff95cf04 --- /dev/null +++ b/resources/master_data/_갱신절차.md @@ -0,0 +1,137 @@ +# 마스터 갱신 절차 + +테이블마다 한 줄씩. 명령은 저장소 루트에서 `./venv/Scripts/python.exe …` (표기는 `scripts/…` = `resources/master_data/scripts/…`). +`빌더 없음` = 구멍. 돌린 뒤 검사는 언제나 `check_master.py`(틀 · 본문 · 로직)를 더함. + +공통: + +- 원문 받기 = 지식DB 폴더에 원본을 두고 md 로 옮긴 뒤(`resources/knowledge/original/_pipeline/`) 빌더를 돌림. +- 빌더는 옛 모양으로 쓰고 끝에 `master_keys.adopt` 가 키 · 파일 이름으로 받음. 새 키는 `_키대장.json` 이 냄. +- API 키는 `resources/knowledge/.secrets.local.md` 에서 읽음 — 출력·커밋 금지. +- 공통 검사 — `check_master.py 틀` · `pytest resources/tester/test_masterdata_check.py -q`. + +## 인력 (`인력.json` · 구분별) + +| 구분 | 출처 원문 · 지식DB 자리 | 받는 법 | 주기 | 빌더 | 검사 | +| --- | --- | --- | --- | --- | --- | +| 건설업 | 건설노임 · `원가계산/노임단가_건설업_대한건설협회/` | 협회 사이트 PDF — `_pipeline/collect_cost_sources.py docs` (게시글 uuid 를 먼저 갱신) → `_pipeline/split_cost_docs.py`(md) | 반기(12월 말→1/1 · 8월 말→9/1) | `scripts/build_인력_노임.py` | 빌더가 md 와 줄 수·값 자체 대조 · `check_master.py 틀 인력.json` | +| 제조업 | 제조노임 · `원가계산/노임단가_제조업_중소기업중앙회/` | 중기중앙회 게시판 PDF — `collect_cost_sources.py docs` (게시글 seq 갱신) → `split_cost_docs.py kbiz` | 반기(6월 말→7/1 · 11월 말→1/1) | `scripts/build_인력_노임.py` | 같음 | +| 엔지니어링 | 엔지니어링노임 · `원가계산/노임단가_엔지니어링_한국엔지니어링협회/` | 협회 게시물 첨부 손으로 내려받음 (`_meta.md` 의 게시물 번호) | 연 1회(12월 공표→1/1) | `scripts/build_인력_노임.py` | 같음 | +| 측량 | 측량노임 · `원가계산/노임단가_측량_한국공간정보산업협회/` | 협회 게시물 첨부 손으로 | 연 1회 | `scripts/build_인력_노임.py` | 같음 | +| 건설사업관리 | 건설사업관리노임 · `원가계산/노임단가_건설사업관리_한국건설엔지니어링협회/` | 협회 공표 PDF 손으로 | 연 1회 | `scripts/build_인력_노임.py` | 같음 | +| SW | SW노임 · `원가계산/노임단가_SW기술자_한국인공지능소프트웨어산업협회/` | 협회 사이트 XLSX(`_meta.md` 주소) 손으로 | 연 1회 | `scripts/build_인력_노임.py` | 같음 | +| 산림 | 산림노임 · `원가계산/노임단가_산림_산림청/` | 산림청 게시글 HTML 손으로 | 수시 | `scripts/build_인력_노임.py` | 같음 | + +- 건설·제조 미공표 직종은 빌더가 산정. 추정 줄은 준용 직종에서 되채움. + +## 자재품목 · 물가지 (`재료_자재품목.json`) + +| 항목 | 값 | +| --- | --- | +| 출처 | 물가지 네 열 — 상용 적산 자료(ESTX) · `원가계산/다산소프트/2026-07-main.estx` / 나라장터 가격정보 — `원가계산/자재단가/나라장터_시설공통자재_*.json` | +| 받는 법 | ESTX = 구매 파일(배포 전 판권 구매 뒤 갱신) · 나라장터 = `collect_cost_sources.py values` (API) · 유료 물가지 직접 구독은 미정 | +| 주기 | ESTX 반기 · 나라장터 연 2회+수시 | +| 빌더 | `scripts/build_재료_자재품목.py` → `scripts/build_자재품목_분류.py`(구분·상세구분 채움 · `ref/_묶음_자재품목.md` 새로 씀) | +| 검사 | `scripts/compare_estx.py 자재` · `pytest resources/tester/test_자재품목_분류.py -q` · `check_master.py 틀 재료_자재품목.json` | + +- 나라장터 스냅샷에서 마스터 줄을 뽑는 빌더 없음 — 구멍. + +## 관급 (자재품목 「관급」 열) + +| 항목 | 값 | +| --- | --- | +| 출처 | 조달청 종합쇼핑몰 OpenAPI(15129471) · 원본 `원가계산/자재단가/관급/<받은 날>/*.json.gz` · 설계 `ref/_설계_관급단가_갱신.md` | +| 받는 법 | `scripts/update_관급단가.py fetch` (API · 일일 호출 한도) | +| 주기 | 계약 기간 단위 · 견적 기준일마다 | +| 빌더 | `scripts/update_관급단가.py update` (받기 + 정본 관급 열 갱신 · 바뀐 줄 `tmp/관급_바뀐줄.json`) · 보강 후보 = `scripts/update_관급단가_보강.py fetch` → `build` (`ref/_관급_보강_후보.json`) | +| 검사 | `scripts/update_관급단가.py test` (정본 안 덮음 · `tmp/관급_대조.json`) · `pytest resources/tester/test_masterdata_procure.py -q` | + +## 유가전력 (`재료_유가전력.json`) + +| 항목 | 값 | +| --- | --- | +| 출처 | 오피넷 유가 · `원가계산/유가_오피넷/` / 한전 전기요금표 별표1(C) · `원가계산/전기요금_한국전력/20250101/` | +| 받는 법 | 유가 = `collect_cost_sources.py values` (오피넷 API) · 전기요금 = 한전 요금표 손으로 | +| 주기 | 유가 주간 · 견적 기준일마다 · 전기요금 개정 때 | +| 빌더 | `scripts/build_재료_유가전력.py` | +| 검사 | `check_master.py 틀 재료_유가전력.json` | + +- 휘발유·경유는 옛 판 값 그대로 지님 — 새로 받아도 갱신 안 됨(빌더 안 새 판 반영 없음) — 구멍. + +## 품셈재료 (`재료_품셈재료.json`) + +| 항목 | 값 | +| --- | --- | +| 출처 | 품셈이 부르는 재료 — 산림품셈 · 건설품셈 본문 · `원가계산/산림_표준품셈/본문/` · `원가계산/건설공사_표준품셈/본문/` | +| 받는 법 | 손으로 줄 추가 · 연결(자재품목 키)은 M01 화면에서 사람이 이음 | +| 주기 | 품셈 개정 때 | +| 빌더 | 빌더 없음 | +| 검사 | `check_master.py 로직` (로직 재료 줄 고르기 조건) · `pytest resources/tester/test_자재품목_분류.py -q` (품셈재료가 부르는 재료의 묶음) | + +## 기계 (`기계.json` · 세부분류 건설품셈 · 산림품셈) + +| 세부분류 | 출처 · 지식DB 자리 | 받는 법 | 주기 | 빌더 | 검사 | +| --- | --- | --- | --- | --- | --- | +| 건설품셈 | 건설품셈 공통 8-3 손료 · 8-4 운전경비 · 8-5 기계가격 · `원가계산/건설공사_표준품셈/본문/01_공통부문/제08장_건설기계/` | 한국표준품셈정보원 PDF — `collect_cost_sources.py docs` → md | 연 1회(품셈 개정) | `scripts/build_기계_건설품셈.py [--dry]` | `check_master.py 틀 기계.json` | +| 산림품셈 | 산림품셈 2장 기계손료 · `원가계산/산림_표준품셈/본문/제02장_소요재료_및_기계손료/` | 산림청 고시 PDF · md | 고시 개정 때 | 빌더 없음 | 같음 | + +- 운전경비의 환율·유가는 마스터가 아니라 로직이 환율·유가전력 줄을 부름. + +## 소요량 (`소요량_<원문>_장_….json`) + +| 범위 | 출처 · 지식DB 자리 | 받는 법 | 주기 | 빌더 | 검사 | +| --- | --- | --- | --- | --- | --- | +| 건설 공통 2장 | 건설품셈 본문 `01_공통부문/제02장_가설공사` | PDF → md | 연 1회 | `scripts/build_소요량_건설품셈_공통2장.py` | `check_master.py 본문 소요량_건설품셈_02장_가설공사.json` | +| 건설 공통 3장 | 건설품셈 본문 `01_공통부문/제03장_토공사` | 같음 | 같음 | `scripts/build_소요량_건설품셈_공통3장.py` | `check_master.py 본문 소요량_건설품셈_03장_토공사.json` | +| 건설 토목 | 건설품셈 본문 `02_토목부문` 1·2·6장 | 같음 | 같음 | `scripts/build_소요량_건설품셈_토목.py` | `check_master.py 본문 <해당 장 파일>` | +| 건설 기계설비 7~13장 | 건설품셈 본문 `04_기계설비부문` | 같음 | 같음 | `scripts/build_소요량_건설품셈_기계설비.py [7 8 …]` | `check_master.py 본문 <해당 장 파일>` | +| 건설 건축 · 유지관리 | 건설품셈 본문 `03_건축부문` · `05_유지관리부문` | 같음 | 같음 | 빌더 없음 | — | +| 산림 1~14장 | 산림품셈 본문 `원가계산/산림_표준품셈/본문/제NN장_…/` | 산림청 고시 PDF → md(절 하나 = md 하나) | 고시 개정 때 | 빌더 없음 | `check_master.py 본문 <해당 장 파일>` | + +## 계수 (`계수_<원문>_장_….json`) + +| 범위 | 출처 · 지식DB 자리 | 받는 법 | 주기 | 빌더 | 검사 | +| --- | --- | --- | --- | --- | --- | +| 산림 1장 추가(1-1-3 · 1-2 · 1-6 · 1-7) | 산림품셈 본문 `제01장_적용기준` | 산림청 고시 md | 고시 개정 때 | `scripts/build_계수_산림품셈_01장_추가.py` (이미 넣었으면 멈춤 — 한 번 돌림) | `check_master.py 본문 계수_산림품셈_01장_적용기준.json` | +| 산림 그 밖 장 | 산림품셈 본문 각 장 | 같음 | 같음 | 빌더 없음 | 같음 | +| 건설 전 장 | 건설품셈 본문 각 부문 | 같음 | 연 1회 | 빌더 없음(소요량 빌더 안 계수 손 표는 소요량에 들어감) | 같음 | + +## 환율 (`환율_한국은행환율.json`) + +| 항목 | 값 | +| --- | --- | +| 출처 | 한국은행환율 · `원가계산/환율_한국은행ECOS/환율_일별_*.csv` (ECOS 731Y001 · 5통화) | +| 받는 법 | `collect_cost_sources.py values` (ECOS API) | +| 주기 | 일별 · 견적 기준일마다 | +| 빌더 | 빌더 없음 (`scripts/_migrate_base.py` 는 옛 파일 한 번 옮기기) | +| 검사 | `check_master.py 틀 환율_한국은행환율.json` | + +## 요율 (`요율_조달청제비율.json`) + +| 항목 | 값 | +| --- | --- | +| 출처 | 조달청제비율 · `행정규칙/토목공사원가계산 제비율 적용기준/첨부/*조달청_토목공사_제비율.xlsx` + 국민연금법 `법률/국민연금법/현행_*.xml` | +| 받는 법 | 조달청 고시 첨부 XLSX · 법령 XML 손으로 (`_pipeline/collect_law.py` 는 법령 쪽) | +| 주기 | 고시 개정 때(연 1~2회) · 국민연금 요율은 매년 | +| 빌더 | 빌더 없음 (`scripts/_migrate_base.py` 는 옛 파일 한 번 옮기기) | +| 검사 | `check_master.py 틀 요율_조달청제비율.json` | + +## 로직 (`로직_<원문>_장_….json`) + +| 항목 | 값 | +| --- | --- | +| 출처 | 품셈 본문 절 + 위 요소·표 파일(키로 끌어옴) · 자체 로직은 원문 「자체」 | +| 받는 법 | M01 화면에서 편집·저장 (정본 파일 직접 편집도 가능) | +| 주기 | 요소 갱신 때 · 품셈 개정 때 | +| 빌더 | 빌더 없음 | +| 검사 | `check_master.py 로직` (끊긴 키 · 돌고 도는 참조 · 찾기 조건) · `check_master.py 계산 <로직키> 이름=값 …` (견본 계산) · `pytest resources/tester/test_masterdata_check.py resources/tester/test_m01_api.py -q` | +| 복잡도 | `scripts/로직_복잡도_재기.py [상위 N]` (읽기 전용) | + +## 구멍 목록 + +- 환율 · 요율 · 품셈재료 · 로직 — 빌더 없음. +- 기계 산림품셈 · 소요량 건설 건축·유지관리 · 소요량 산림 전 장 · 계수 건설 전 장 · 계수 산림 1장 밖 — 빌더 없음. +- 자재품목 — 나라장터 스냅샷 → 마스터 줄 빌더 없음 · 유료 물가지 받는 길 미정. +- 유가전력 — 휘발유·경유 새 판 반영 없음. +- 원본 받기 — 문서 URL(게시글 uuid · seq)을 반기마다 `collect_cost_sources.py` 상수에 손으로 갱신. +- 판 최신 여부 표 없음 — `resources/tester/test_master_sources.py` 가 가리키는 `resources/data_master_sources/` 가 이 저장소에 없음.