knowledge(M01): B08·B09 초기화 가능 여부 분석 — 마스터로 대신할 자리와 못 할 자리 (일감 36)
- 코드·데이터 안 고침 · 읽기 조사만 · `ref/_분석_B08B09_초기화.md` 한 파일 - 크기 — B08 26,451줄(85 파일) · B09 28,507줄(111 파일) · 서버 길 56 · 시험 191 파일 26,943줄 - 마스터로 갈아끼울 수 있는 자리 약 15,400줄(B09 품셈·단가 11,872 · B08 공종 마스터 만들기·단가 붙이기 3,554) - 못 하는 자리 — 수량 산출 규칙 7,805 · 구조물도 2,643 · 공종 축(로직 키와 잇는 대응표 없음) · 원가계산서 서식 4형식 · 내역서 조판 · 목록표 16종 · 끝수·소수자리 · 제비율 적용 절차 · 단계 넷 - B08·B09 가 서로 부르는 고리(구조물도 미리보기가 B09 단가를 부름) — 한쪽만 들어내면 멈춤 - 다시 짜는 차례 제안 — 공종 축 연결표 먼저 · 단가 길만 마스터로 · 수량은 남김 · 서식은 데이터로 · 걷기는 `ref/_걷을_옛코드.md` 5 단계 그대로 맨 끝 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# 분석 — B08(수량)·B09(견적)을 초기화할 수 있나 (일감 36)
|
||||
|
||||
읽기만 함 · 코드·데이터 하나도 안 고침. 센 자리 = 이 창(sub_laptop_1 · dev 8dfd7105).
|
||||
|
||||
한 줄 답 — **B09 는 절반 넘게 마스터로 갈아끼울 수 있음(품셈·단가 11,872줄) · B08 은 거의 못 갈아끼움(수량 산출 규칙 7,805줄 + 구조물도 2,643줄은 마스터에 자리 자체가 없음)**. 그래서 「둘 다 갈아엎기」 보다 **B09 의 단가 길만 마스터로 옮기고 · B08 은 수량 규칙을 남긴 채 겉(인계·단가 붙이기)만 다시 짜는 것**이 손해가 적음.
|
||||
|
||||
## 1. 크기 — 파일과 줄
|
||||
|
||||
| 방 | 파이썬 | 화면(ts) | 합 | 파일 수 |
|
||||
|---|---|---|---|---|
|
||||
| B08_Quantity | 19,617 | 6,834 | **26,451** | 85(py 61 · ts 24) + 옛 구현 zip 1 |
|
||||
| B09_Estimation | 22,615 | 5,892 | **28,507** | 111(py 83 · ts 28) |
|
||||
| 합 | 42,232 | 12,726 | **54,958** | 196 |
|
||||
|
||||
딸린 것 — 서버 길 B08 25 · B09 31(`main.py:647~659` 에 라우터 13 등록) · 시험 191 파일 26,943줄(`test_b08_*` 91/14,752 · `test_b09_*` 69/7,740 · 그 밖 31).
|
||||
|
||||
### B08 을 하는 일로 가른 것
|
||||
|
||||
| 묶음 | 줄 | 무엇 |
|
||||
|---|---|---|
|
||||
| 수량 산출 규칙 | 7,805 | 토적표·사면 면적/길이·구조물 원단위 전개(돌쌓기·기슭막이·BOX·포장·녹화)·배수관·준비공·운반 가중평균·자재총괄 할증·암 가르기·거푸집 횟수 |
|
||||
| 화면 | 6,834 | 수량 페이지 한 장 + 토적표·자재·집계 그리드 · 구조물도 탭 · 산출조건 패널 |
|
||||
| 공종 마스터 만들기 | 2,818 | 산림 476표·건설 2,192표를 공종 축(`FW-`·`CW-`)으로 정규화하는 **한 번 돌리는 스크립트** |
|
||||
| 구조물도(표준도) | 2,643 | 양식 읽기·상단 그림·장 조판·제원 입력·라이브러리(개인/회사/프로그램) |
|
||||
| B09 인계 | 2,585 | 수량 줄 → 내역 줄로 넘기는 계약(두 벌: 작업공종·자재) |
|
||||
| 라우터 | 2,467 | 조회 15 · 저장 10 |
|
||||
| 단가 붙이기 | 736 | 구조물도 하단 일위대가 미리보기 · 밑수 단위 대조 |
|
||||
| 그 밖 | 563 | 근거 사전·화면 문구 |
|
||||
|
||||
### B09 를 하는 일로 가른 것
|
||||
|
||||
| 묶음 | 줄 | 무엇 |
|
||||
|---|---|---|
|
||||
| 품셈 읽기·단가 산출 | **11,872** | 자원 축(표 모양 11 갈래 읽개 3,550) · 단가산출/일위대가 조립 1,767 · 기계경비·운전경비·시공능력 2,288 · 품 할증·소모재료·작업조 · 공종별 특수 규칙 10(유로폼·치즐·화약·암손료·표토·파쇄·풀베기·종자·수송·철근) |
|
||||
| 서식·단계 | 8,929 | 예산내역서 조판 1,677 · 원가계산서 4형식 1,442 · 법정경비 546 · 목록표 16종 564 · 자재대·중기경비계산서·산출기초·설계서 구성표 · 계약/실행/기성 1,078 · 사용자 고친 값 338 · 저장 스냅샷 231 · 근거 사전 778 · 끝수 216 |
|
||||
| 라우터 | 1,814 | 조회 21 · 저장 10 |
|
||||
| 화면 | 5,892 | 탭 19 + 공용 표·틀 |
|
||||
|
||||
## 2. 어떻게 얽혀 있나
|
||||
|
||||
```
|
||||
B05(노선·구조물 정본) B06(횡단 설계)
|
||||
structures.json · pipe_points.json 설계선·벽·관
|
||||
│ │
|
||||
└──────────────┬───────────────┘
|
||||
▼
|
||||
B08 수량 산출
|
||||
(토적·사면·구조물 원단위·배수관·준비공·운반·자재총괄)
|
||||
│ GET /quantity/handoff ← 두 벌
|
||||
│ ① work_items(공종 축 · 내역 줄이 됨)
|
||||
│ ② materials(자재 축 · 공종코드 안 붙임 · 할증 전/후 둘 다)
|
||||
▼
|
||||
B09 원가계산
|
||||
(자원 축 → 단가산출 → 일위대가 → 내역서 → 원가계산서 → 단계 넷)
|
||||
```
|
||||
|
||||
- **B08 → B09** = 인계 한 길. 계약이 문서로 박혀 있음(`B08_Quantity_Engine_Handoff.py` 머리 40줄) — 두 벌로 냄 · 반영률은 B08 에서만 곱하고 `quantity`·`quantity_gross`·`application_ratio_pct` 셋을 함께 실음 · 내역에 안 서는 줄은 빼지 않고 `in_bill=false` 로 실음 · 못 이은 줄은 `unmatched_work_items` 로 실음 · 갈래 세트(`ground_class_set`)를 실어 인계본만으로 내역이 서게 함. **다시 짜도 이 계약은 그대로 쓸 값어치가 있음.**
|
||||
- **B09 → B08(거꾸로)** 도 있음 — 구조물도 하단 일위대가 미리보기가 B09 의 `PriceBook`·`UnitPrice`·`ResourceAxis`·`Rounding`·`Router._build_for` 를 부름(5 자리). 즉 **둘이 서로 부르는 고리**라 한쪽만 들어내면 다른 쪽이 멈춤.
|
||||
- **B08 ← B05·B06** — 횡단 설계(`get_cross_section_designs`) · 노선 문맥 · 구조물 정본 읽기/쓰기 · 관 벽 최소높이 · 지반 경사. B06 화면(`B06_Section_Structure_Layouts.ts`)과 `common_util_masonry_slope.ts` 는 **B08 파이썬과 짝**(한쪽만 고치면 횡단도와 수량이 갈림).
|
||||
- **저장되는 것** — B09 는 프로젝트 폴더 `<프로젝트>/B09_Estimation/v1/price_book.json`(+`_manifest.json`)에 **그때 쓴 단가를 사본으로** 박음(3년 뒤에도 같은 금액). B08 은 구조물도 양식·제원을 프로젝트 폴더에, 산출 조건은 DB 에, 확정은 워크플로 stage 5(B08)·6(B09) 로. 기준자료는 `resources/master_data/old/`(37 파일 20MB) · `resources/master_data/ref/` 데이터 7 개 · `data_aliases` · `data_masonry`.
|
||||
|
||||
## 3. 마스터로 대신할 수 있는 것 · 없는 것
|
||||
|
||||
지금 마스터(`resources/master_data/*.json`) — 로직 1,354(건설 1,103 · 산림 251) · 소요량 2,535 · 계수 498 · 인력 378 · 기계 654 · 재료 31,011 · 요율 19 · 환율 5 · 일위대가 조합 1.
|
||||
|
||||
### 대신할 수 있음
|
||||
|
||||
| 지금 코드 | 줄 | 마스터에서 |
|
||||
|---|---|---|
|
||||
| B09 자원 축 읽개 11 개 | 3,550 | 로직의 호표 줄이 이미 자원(인력·재료·기계)을 가리킴 — 표 모양을 읽을 까닭이 없어짐 |
|
||||
| B09 단가산출·일위대가 조립 | 1,767 | 로직 계산(`master_formula.run`)과 일위대가 조합(UA) |
|
||||
| B09 기계경비·운전경비·시공능력 | 2,638 | 계수·로직 건설품셈 08장 계열(후보 있음 · 시공능력 밑값은 확인 필요) |
|
||||
| B09 품 할증·소모재료·작업조·특수 공종 10 | 약 1,900 | 계수·소요량·로직 각 장 |
|
||||
| B09 요율 읽기 | 271 | `요율_조달청제비율.json` — **값뿐 아니라 처리규칙(끝수·안전관리비 A/B·관급 천원올림·이윤 밑수·규모 구간)까지 데이터에 있음** |
|
||||
| B09 자재 카탈로그·수동 단가 | 391 | `재료_자재품목`·`재료_품셈재료` |
|
||||
| B08 공종 마스터 만들기 | 2,818 | 원문 표는 이미 마스터가 정규화해 갖고 있음 — 다시 만들 까닭 없음 |
|
||||
| B08 단가 붙이기 | 736 | 로직·조합 계산 길 |
|
||||
|
||||
합쳐 **대략 15,400줄**(B09 11,900 · B08 3,550)이 「마스터를 부르는 얇은 층」으로 줄어들 자리 — 전체 54,958줄의 28 %.
|
||||
|
||||
### 대신할 수 없음 — **이 쪽이 중요**
|
||||
|
||||
1. **수량 산출 규칙 7,805줄** — 토적표·사면·구조물 전개·배수관·준비공·운반·자재총괄 할증. 마스터는 **단가 쪽**만 담고 있어 「치수 → 물량」 규칙을 둘 자리가 아예 없음. 남기든 다시 짜든 **이 지식은 코드나 새 「수량 로직」 그룹으로 반드시 살려야 함**.
|
||||
2. **구조물도(표준도) 2,643줄** — 양식·상단 그림·장 조판·라이브러리. B07 도면이 이것을 부름.
|
||||
3. **공종 축이 없음** — 지금 코드는 공종코드(`FW-`·`CW-`·`FP-`)로 잇고, 수량 줄 ↔ 공종 다리는 `ref/공종_수량연결_실무_*.json` 에 데이터로 있음. 마스터에는 **로직 키(GC/GF)와 조합 키(UA)만** 있고 「공종 = 어느 로직」 대응표가 없음. **갈아끼우기의 첫 막힘돌.**
|
||||
4. **원가계산서 서식 4형식 · 예산내역서 조판 · 목록표 16종 · 설계서 구성표** — 차례가 전부 코드 안에 있음(데이터 아님).
|
||||
5. **끝수·소수자리** — 줄 금액 원 단위 버림 · 관급자재대만 천원 올림 · 종목별 수량 소수자리(품셈 1-2-2). 요율 파일의 처리규칙에 일부만 있음.
|
||||
6. **제비율 적용 절차** — 요율 값은 마스터에 있으나, 대상액 규모 구간 판정 · 안전관리비 A/B 뒤집힘 · 관급 부가세 제수 같은 **적용 순서**는 코드(법정경비 546 · 원가 엔진 841).
|
||||
7. **단계 넷(계약·실행·기성·준공) · 사용자 고친 값 · 단가 사본 저장** 1,650줄 — 마스터와 무관.
|
||||
8. **근거 사전 1,251줄**(B08 473 · B09 778) — 「이 숫자가 어디서 왔나」. 마스터는 출처를 줄에 달지만 화면 설명 글은 따로.
|
||||
|
||||
## 4. 지우면 같이 깨지는 곳
|
||||
|
||||
- `main.py:63~76 · 647~659` — 라우터 13 개 등록(B08 5 · B09 8).
|
||||
- 화면 — `A00_Common/router.ts` 의 두 쪽(`B08_QUANTITY`·`B09_ESTIMATION`) · 워크플로 단계 막대 · B09 탭 19.
|
||||
- **B07 도면 3 자리** — 표준도 도면이 `B08_Quantity_Engine_StructureFigure`·`_StructureSheet` 를 부르고, 횡단 수량이 `Engine_SlopeArea`·`_SlopeLength` 를 부름.
|
||||
- **B06·B05 화면 3 자리** — 구조물 배치 ts 가 B08 셈법을 전제로 씀 · `common_util_masonry_slope.ts` 는 B08 파이썬과 짝 · B05 배수시설 칸이 `ref/수량_사방기슭막이치수` 를 바로 읽음.
|
||||
- `common_util` 3 개 — 노드 묶음(`old/` 통째를 씀) · 공종 열쇠 · 공종 연결.
|
||||
- `Z01_MasterData` 3 개 2,082줄 — 옛 마스터 화면이 `old/` 이름표·공종 마스터·기계를 읽음.
|
||||
- 시험 191 파일 26,943줄(그 가운데 31 개는 B05·B06·B07·Z01 이름으로 되어 있어 눈에 안 띔).
|
||||
- 이미 조사된 표가 있음 — `ref/_걷을_옛코드.md`(어느 파일이 `old/`·`ref/` 의 무엇을 읽고 누가 부르는지 · 새 마스터 후보가 있는지 · 걷는 순서 5 단계). **이번 분석과 어긋나는 데 없음 · 그 표를 그대로 씀.**
|
||||
|
||||
## 5. 압축해 `old` 로 옮길 때 남길 것
|
||||
|
||||
코드보다 **글과 데이터**가 값어치 있음. 지우면 다시 못 만드는 것 차례로 —
|
||||
|
||||
1. **인계 계약** — `Engine_Handoff.py` 머리 40줄(두 벌 · 반영률 한 곳 곱하기 · `in_bill` · 갈래 세트 · 못 이은 줄). 규칙 글로 뽑아 `ref/` 에.
|
||||
2. **서식 차례** — 원가계산서 4형식 · 예산내역서 줄 차례 · 목록표 16종 · 설계서 구성표(별표2 (5)(가)) · 중기경비계산서 · 산출기초. 지금은 코드 안 배열이라 **JSON 서식표로 뽑아 두면 그대로 다시 씀**.
|
||||
3. **끝수·소수자리 표**(줄 버림 · 관급 천원 올림 · 종목별 자리).
|
||||
4. **제비율 처리규칙** — 이미 `요율_조달청제비율.json` 에 있고 거울 시험(`test_b09_rate_rules_mirror.py`)이 지킴. **그 시험은 살려 둘 것.**
|
||||
5. **판정 까닭이 적힌 머리글** — B08·B09 파일 머리에 「왜 이렇게 정했나 · 브레인 판정 날짜」가 촘촘함(이중계상 경계 · 무대 · 암 구성비 · 임목폐기물 따위). 코드를 압축하면 **이 글이 같이 사라짐** — 공종별 규칙 글로 걷어 `ref/` 에 남길 것.
|
||||
6. **시험은 지우지 않음** — `test_b08_*` 91 개는 수량 규칙의 판정값 창고라 다시 짜도 그대로 맞대 볼 수 있음.
|
||||
7. **실무 산출물은 이미 있음** — `resources/knowledge/original/실무문서/` 의 내역+수량 xlsx 여섯 현장(울진·거창·장수·진안·봉화·영월). 다시 짤 때 **금액 맞대기 기준**.
|
||||
8. 데이터(`old/` 37 · `ref/` 7)는 코드와 따로 — 코드만 압축하고, 데이터는 `_걷을_옛코드.md` 의 이관 표를 따름.
|
||||
9. 앞선 전례 — `B08_Quantity/0_old_260726_codex.zip`(71KB)처럼 **폴더 안에 zip 하나로 두는 방식**이 이미 쓰인 적 있음.
|
||||
|
||||
## 6. 다시 짜는 큰 차례 (제안)
|
||||
|
||||
```
|
||||
① 공종 축부터 로직 키·조합 키를 「공종」으로 삼고,
|
||||
B08 수량 줄 → 로직/조합 키 연결표를 마스터 ref 에 데이터로
|
||||
(지금 공종_수량연결_실무 가 하던 구실 · 코드 아님)
|
||||
② 단가 길을 갈아끼움 B09 품셈·단가 11,872줄 → 마스터 호출 얇은 층으로
|
||||
(자원 축 읽개·기계경비·특수 공종이 통째로 없어짐)
|
||||
판정 = 실무 xlsx 여섯 현장과 금액 맞대기
|
||||
③ 수량은 남김 B08 Engine_* 7,805줄은 그대로 두고 겉(인계·단가 붙이기)만 새로
|
||||
나중에 「수량 로직」 그룹을 마스터에 둘지 따로 정함
|
||||
④ 서식을 데이터로 원가계산서 4형식·목록표 16종·내역서 차례를 JSON 서식표로
|
||||
⑤ 단계·저장은 얇게 계약·실행·기성·준공 · 사용자 고친 값 · 단가 사본
|
||||
⑥ 걷기는 마지막 _걷을_옛코드.md 의 5 단계 차례대로 · old/·ref/ 삭제는 맨 끝
|
||||
```
|
||||
|
||||
- ②를 먼저 끝내야 「마스터가 실무 금액을 낼 수 있나」가 증명됨 — 증명 전에 코드를 지우면 되돌릴 자리가 없음.
|
||||
- ①의 연결표가 없으면 ②가 못 섬(로직을 어느 내역 줄에 붙일지 모름). **가장 먼저 사용자와 정할 것 = 공종 이름을 로직 키로 부를지, 조합 키로 부를지.**
|
||||
- B08·B09 가 **서로 부르는 고리**라, 손대는 차례는 「B09 단가 → B08 단가 붙이기 → B08 인계」로 한 방향씩 끊는 것이 안전함.
|
||||
Reference in New Issue
Block a user