feat(master_data): 자재품목 관급 열을 조달청 값으로 — 다산소프트 값 제거 · update_관급단가.py · 설계 문서
- 관급 열 4,552줄: 조달청 종합쇼핑몰(MAS · 일반 · 3자단가)에서 받은 값 2,981 · 못 채움·보류 null 1,571 · 비고 「관급: 조달청 … 받은 날」 - 짝짓기: 레미콘 2,095줄 중 2,028줄 다산 값과 같음 · 아스콘은 기준일(2026-08-01) 차이 · 제조사별 값이 갈리는 갈래는 보류 - 다시 돌리기: update_관급단가.py update (받기 → 원본 보관 → 관급·비고만 갈음) - ref/_설계_관급단가_갱신.md: API · 짝짓기 · 대조 결과 표 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# 설계 — 관급 단가 갱신 (조달청 → 자재품목 「관급」 열)
|
||||
|
||||
## 결론
|
||||
|
||||
- **관급 단가는 조달청 종합쇼핑몰 API 3종에서 「분류명 부분 글자」로 받을 수 있음** — 레미콘·아스콘은 「조합공통품목」 줄이 지역별 관급 단가(다산소프트 관급 열과 같은 것). 인증키 = 기존 공공데이터포털 일반 인증키 하나(활용신청 끝남).
|
||||
- 지난번 「시설공통자재 6,999줄」(`PriceInfoService`)에는 관급 자재가 없음 — 잘못 고른 API.
|
||||
- **레미콘 2,095줄 중 2,028줄이 다산소프트 값과 똑같음**(97%). 아스콘은 짝은 서고 값은 기준일이 달라 다름. 철근·파형강관·흄관은 제조사별 값이 갈려 **채우지 않고 보류**.
|
||||
- 정본 `재료_자재품목.json` 관급 열을 다산소프트 값 → 조달청 값으로 바꿈: 관급 열이 있던 4,552줄 중 **채움 2,981 · null 1,571**(다산 값 남기지 않음).
|
||||
- 다시 돌리기 — `./venv/Scripts/python.exe resources/master_data/scripts/update_관급단가.py update`
|
||||
|
||||
## 조달청 API (공공데이터포털 15129471 `at/ShoppingMallPrdctInfoService`)
|
||||
|
||||
| 오퍼레이션 | 뜻 | 쓴 분류명 | 받은 줄 |
|
||||
|---|---|---|---|
|
||||
| `getMASCntrctPrdctInfoList` | 다수공급자계약(MAS) — 제조사·조합별 | 레미콘 · 아스팔트콘크리트 · 봉강 · H빔 · 파형강관 · 콘크리트관 | 26,384 · 17,949 · 1,039 · 181 · 6,970 · 504 |
|
||||
| `getUcntrctPrdctInfoList` | 일반단가계약 | 아스팔트콘크리트 · 콘크리트관 | 17 · 10 |
|
||||
| `getThptyUcntrctPrdctInfoList` | 3자단가계약 | 레미콘 · 아스팔트콘크리트 · 파형강관 | 128 · 13 · 1,573 |
|
||||
|
||||
- 조건 = `inqryDiv=2` + `prdctClsfcNoNm=<글자>` — **부분 글자 조회**(분류 통째가 아님). 「철근」은 암거블록·배수로가 섞여 옴 → 「봉강」(철근콘크리트용봉강) · H형강은 「H빔」 · 「형강」은 파형강관이 걸림.
|
||||
- 응답 칸(쓰는 것) — `prdctSpecNm`(품명·규격) · `cntrctPrceAmt`(단가·VAT 포함) · `prdctSplyRgnNm`(공급지역) · `prdctDlvryCndtnNm`(인도조건) · `prdctMakrNm`(「조합공통품목」 = 조합 공통 관급단가) · `cntrctCorpNm`(계약 조합·업체) · `cntrctBgnDate`·`cntrctEndDate`(계약 기간) · `prdctUnit`.
|
||||
- 갱신 주기 — 계약 기간 단위(레미콘 조합공통 2026-06-01~, 아스콘 2026-08-01~ 등) · 일별 조회 · 쪽당 999 · 인증키 일일 호출 한도 안.
|
||||
- 없는 것(이번 조사에서 못 찾음) — 시멘트 지역별 관급 · 골재 · 조경석 · 벤치플륨 · 주철관 · 측구수로관 등 648줄(다산소프트 관급 열에는 있음) → 「짝짓기 아직 없음」으로 null.
|
||||
- 원본 보관 — `resources/knowledge/original/원가계산/자재단가/관급/<받은 날>/*.json.gz` + `_meta.md`(받은 칸만 남김 — 첨부·이미지 뺌).
|
||||
|
||||
## 짝짓기 방법
|
||||
|
||||
| 갈래 | 자재품목 줄 | 조달청 줄 | 짝짓는 열쇠 |
|
||||
|---|---|---|---|
|
||||
| 레미콘 | `레미콘(관급)-<지역>` · 「조합공통품목, 25-18-080」 | MAS 「조합공통품목」 | 강도 숫자 셋(25-18-80 = 25-18-080) + 지역 |
|
||||
| 아스콘 | `(순환)아스콘(관급)-<지역>` · 「조합공통품목, WC-2, 가열, 3등급」 | MAS·일반·3자 「조합공통품목」 | 순환 여부 + 배합·가열·등급 + 지역 |
|
||||
| 철근 | `이형철근(SD400[,제주])-관급` · 「HD=10mm 생산공장 상차도」 | MAS 봉강 | 강종 + D + 지역(전지역(제주제외)/제주) + 인도조건 |
|
||||
| H형강 | `H 형강(관급)` · 「SS275, 100*100*6*8mm」 | MAS H빔 | 강종 + 치수 4개 + 전지역 |
|
||||
| 파형강관 | `파형강관(관급)` · 「D300×1.6T (1RS)」 | MAS·3자 파형강관 | 지름 + 두께 + RS |
|
||||
| 흄관 | `흄 관(B형)(관급)` · 「Φ250mm」 | MAS·일반 콘크리트관 「보통관」 | 지름 |
|
||||
|
||||
- 지역 — 지명 낱말로 쪼개 약칭을 풀고(경기 → 경기도) 「시·군·구」·「전지역(구 나열)」·조합 이름을 뺀 뒤, 같은 묶음 → 겹침 0.5 이상 하나뿐일 때만 짝(동점은 못 채움). 이름에 조합이 붙은 줄(제주…레미콘(협))은 그 조합 줄만.
|
||||
- 후보가 여럿이면 — 값이 하나(같은 값 여럿 포함)일 때만 채움. **제조사별로 값이 갈리면 null(보류)** — 고르는 기준 미정(다산 값은 H형강 26줄에서 최저값과 같았음 · 철근 8/81 · 파형강관 15/98).
|
||||
|
||||
## 다산소프트 값과 맞대기 (사본에서 관급 열을 지우고 다시 채움 — 2026-09-20)
|
||||
|
||||
| 갈래 | 전체 | 짝 서고 채움 | 값 같음 | 값 다름 | 보류(제조사별 값 갈림) | 못 채움 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 레미콘 | 2,095 | 2,078 | **2,028** | 50 | 0 | 17 |
|
||||
| 아스콘 | 1,430 | 902 | 0 | 902 | 150 | 378 |
|
||||
| 철근 | 81 | 0 | 0 | 0 | 81 | 0 |
|
||||
| H형강 | 57 | 1 | 0 | 1 | 26 | 30 |
|
||||
| 파형강관 | 214 | 0 | 0 | 0 | 98 | 116 |
|
||||
| 흄관 | 27 | 0 | 0 | 0 | 27 | 0 |
|
||||
| 그 밖(벤치플륨 · 조경석 · 주철관 등) | 648 | 0 | 0 | 0 | 0 | 648 |
|
||||
| **합계** | **4,552** | **2,981** | 2,028 | 953 | 382 | 1,189 |
|
||||
|
||||
(정본 null 1,571 = 보류 382 + 못 채움 1,189 — 「못 채움」 = 짝 자체가 안 선 줄 · 「보류」 = 짝은 서나 값이 갈려 채우지 않은 줄.)
|
||||
|
||||
- **레미콘 값 다름 50** — 광주·전남 25-30-180(다산 117,800 · 조달청 118,710) · 충남 25-33-150(130,800 · 131,000) 등 소수 규격 + 제주 세 조합(다산 119,130 · 조달청 125,940~126,000). 지역·규격은 같음 → **기준일 차이(다산 2026-07 · 조달청 계약 2026-06-01~)나 다산 원문 값 차이** — 이 조사로는 어느 쪽인지 못 가림.
|
||||
- **아스콘 값 다름 902 전부** — 조달청 계약 시작이 **2026-08-01**(다산 「조달 26.7」보다 새 기준). 지역·배합·등급은 같음 → 기준일 차이. 비율 1.003~1.033.
|
||||
- **철근** — 다산 값(SD400 D10 827,640 · D13~ 819,500)은 조달청 제조사별 값(5~8가지) 중 최저와 8/81만 같음 → 다산이 어느 제조사·조건을 골랐는지 원문에 없음 → 보류.
|
||||
- **H형강** — 다산 1,228,830 = 동국제강(SS275) 값, 현대제철은 1,301,590 → 다산은 최저 제조사 값. 그러나 규칙으로 못박지 않음(보류 26). 못 채움 30 = 다산 규격 중 조달청 H빔에 없는 치수.
|
||||
- **못 채움 까닭** — 지역 못 찾음(레미콘 16 · 아스콘 270: 조달청 지역 묶음이 다산과 다름) · 규격 없음(아스콘 108 · 레미콘 1) · 후보 없음(H형강 30 · 파형강관 116 — 「-거양」 제조사 줄·D 규격이 조달청 목록에 없음) · 짝짓기 아직 없음(648).
|
||||
|
||||
## 갱신 절차
|
||||
|
||||
1. `update` — 받기(`fetch_all`) → 원본 보관(gz · `_meta.md`).
|
||||
2. 짝짓기(`refill`) → 정본 관급 열·비고만 바꿈(`apply` · 다른 열·서식 그대로 · 줄 수 안 변함).
|
||||
3. 바뀐 줄 목록 = `tmp/관급_바뀐줄.json`(옛값 · 새값 · 비고) — 검토 뒤 커밋.
|
||||
4. 비고 형식 — 「관급: 조달청 <계약방식> <받은 날> · 계약 <시작>~ · <지역> · <인도조건> · <부가세>」 · 못 채운 줄 = 「관급: 조달청 값 못 채움 — <까닭> (<받은 날>)」.
|
||||
|
||||
## 남은 일
|
||||
|
||||
- 보류 갈래(철근·파형강관·흄관·H형강·아스콘 일부)는 **제조사 고르는 기준**(최저가 · 특정 조합 등)을 관리자가 정해야 채움.
|
||||
- 못 찾은 지역·648줄 갈래는 조달청 다른 서비스(가격정보 `getPriceInfoListMrktCnstrctPc` 등) 조사 필요.
|
||||
- `resources/tester` 시험 없음 — 짝짓기 단위 시험은 다음 손.
|
||||
Reference in New Issue
Block a user