auto: 2026-09-13 14:48 (ESD_LAPTOP)
This commit is contained in:
@@ -0,0 +1,316 @@
|
||||
# 축 C 명세 — 두 축과 그것을 잇는 표
|
||||
|
||||
작성 2026-09-13 · **브레인(데스크탑 메인)** · 코드 창 둘이 따를 계약
|
||||
|
||||
> **왜 이 문서가 있나** — 랩탑 메인(1장 축)과 랩탑 서브(3장 구조물도)가 **서로 안 만나면서도
|
||||
> 나중에 맞물리게** 하려면 계약이 먼저 있어야 함. `PLAN.md` 는 「무엇을 할 것인가」이고
|
||||
> 이 문서는 「그것이 어떤 모양이어야 하는가」임.
|
||||
|
||||
---
|
||||
|
||||
## 0. 한 줄 요약
|
||||
|
||||
**공종 축**(수량이 붙는 자리)과 **자원 축**(돈이 붙는 자리)을 따로 두고,
|
||||
**일위대가가 둘을 잇는 표**로 선다.
|
||||
|
||||
```
|
||||
공종 축 FP-09-03-01 돌쌓기(찰) ← B08 이 수량을 붙임
|
||||
│
|
||||
└── 일위대가 = 잇는 표 ← 라이브러리가 저장하는 것
|
||||
├─ 자원 M-야면석 0.88 ton/㎡
|
||||
├─ 자원 L-조경공 0.21 인
|
||||
└─ 자원 L-보통인부 0.15 인
|
||||
← B09 가 돈을 붙임
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1. ⚠ 실측 — 지금 무엇이 서 있나 (2026-09-13 브레인 확인)
|
||||
|
||||
**「자원 축 뒤 패스를 만든다」는 틀린 말임. 이미 있고 이미 돌았음.**
|
||||
|
||||
| 무엇 | 자리 | 상태 |
|
||||
| --- | --- | --- |
|
||||
| 공종 축 마스터 | `resources/data_work_item_master/work_item_master_2026-01-01.json` | ✅ 섬 |
|
||||
| 자원 축 산출물 | `resources/data_cost_resource_axis/resource_axis_2026-01-01.json` | ✅ **418줄** |
|
||||
| 못 맞춘 목록 | `resources/data_cost_resource_axis/unmatched_2026-01-01.json` | ⚠ **497줄** |
|
||||
| 뒤 패스 코드 | `B09_Estimation/B09_Estimation_ResourceAxis*.py` (6파일) | ✅ 섬 |
|
||||
|
||||
**`stats` 실측**
|
||||
|
||||
```
|
||||
rows 418 · unmatched 497
|
||||
skipped_forms : coefficient 19 · reference 64 · undetermined 75
|
||||
policy : axis=resource_only · work_item_axis_owner=B08
|
||||
material_amounts_are_before_surcharge=true
|
||||
```
|
||||
|
||||
**⇒ 남은 일은 「만들기」가 아니라 「채우기」임.**
|
||||
|
||||
못 맞춘 497줄의 주된 사유는 파일 안에 그대로 적혀 있음 —
|
||||
**「카탈로그에 없는 이름 (기계·자재 카탈로그 미확보 포함)」.**
|
||||
즉 막힌 것은 **단가가 아니라 이름·코드 목록조차 없는 것**임.
|
||||
(예: `보통휘발유 (주연료)` · `체인오일 (일반오일)` — 이름은 품셈에 있는데 받을 코드가 없음)
|
||||
|
||||
---
|
||||
|
||||
## 2. 공종 축
|
||||
|
||||
### 코드 모양 — 이미 도는 규약을 그대로 씀
|
||||
|
||||
```
|
||||
FP-<절>-<절>-<절> 예) FP-04-02-02 (벌목, 5m 미만)
|
||||
```
|
||||
|
||||
- 정본은 **품셈 절 번호**. 표의 행은 그 절의 **조건별 변형**(`variant` 칸)임
|
||||
- **이름은 표시용, 잇기는 코드로.** 이름으로 맞추는 코드가 남아 있으면 그것이 곧 결함임
|
||||
- 부모·잎이 있음 — `FP-09-15` 는 부모이고 잎이 답구간·답외구간임.
|
||||
**부모 코드에 수량을 붙이지 말 것**
|
||||
|
||||
### ⭐ 코드 체계 — 브레인 확정 (2026-09-13, 사용자 지시)
|
||||
|
||||
**새로 만들지 않았음. 이미 도는 규약에 한 칸을 더한 것임.**
|
||||
|
||||
#### ① 층 글자 — 이미 코드에 살아 있음. 바꾸지 말 것
|
||||
|
||||
```
|
||||
S-<기계코드> 중기 취득가(천원)
|
||||
X-<기계코드> 시간당 중기사용료 · X-<코드>#조합 = 기계 조합
|
||||
B-<공종코드>[#<갈래>] 일위대가 예) B-FP-12-01-01#철근구조물
|
||||
D-<공종코드> 단가산출 B- 를 D- 로 갈아 끼움
|
||||
W-<…> 일식·견적
|
||||
```
|
||||
|
||||
#### ② 공종 축 코드 — 층 글자 **뒤**에 오는 자리
|
||||
|
||||
```
|
||||
FP-<절>-<절>-… 품셈 절번호 (정본, 두 자리 zfill) 예) FP-04-02-02
|
||||
AX-<갈래>-<8자리 16진> 우리가 더한 공종
|
||||
|
||||
갈래 ST 구조물 일위대가 — 라이브러리가 낳는 것
|
||||
갈래 WK 품셈에 없는 공종 — 첫 사례 지장목제거
|
||||
```
|
||||
|
||||
예) `B-AX-ST-3f9a2b17` = 어느 구조물 양식이 낳은 일위대가 한 벌
|
||||
|
||||
#### ③ 자원 축 코드
|
||||
|
||||
```
|
||||
<숫자> 카탈로그 코드 (정본) 예) 1037 보통인부
|
||||
AR-<종류>-<8자리 16진> 카탈로그에 없는 자원
|
||||
|
||||
종류 M 자재 · L 노임 · X 중기 ← PriceKind 글자 그대로. 새 낱말 안 만듦
|
||||
```
|
||||
|
||||
지금 못 맞춘 497줄(`보통휘발유(주연료)` 등)이 여기로 들어감.
|
||||
⚠ **단가는 없어도 됨** — 이름·코드만 서면 축은 이어짐.
|
||||
|
||||
#### ④ 지킬 것 다섯
|
||||
|
||||
1. **관급은 코드가 아님** — 자재 줄의 **칸**임
|
||||
(`material_supply` = `owner_supplied`·`contractor_supplied`·`unknown`, 관급 줄엔 `install_by` 가 더 붙음).
|
||||
⇒ 관급용 접두는 **만들지 않음**
|
||||
2. **번호는 난수 8자리 소문자 16진.** 발급자를 두지 않음 —
|
||||
3단 라이브러리(프로그램·회사·개인)와 창끼리 공유에서도 안 부딪힘.
|
||||
만들 때 자기 범위 안 중복만 볼 것
|
||||
3. **코드는 동등 비교만.** 사전순 정렬·계층 해석 **금지** —
|
||||
`AX`·`AR` 에는 부모·잎이 없음(`FP` 만 있음). 표시 차례는 공종 계층에서 옴
|
||||
4. **층 글자는 맨 앞에만** — `B-AX-ST-3f9a2b17` ⭕ · `AX-B-ST-…` ❌
|
||||
5. **`#갈래` 는 기존 규약 그대로.** 새 구분자를 만들지 말 것
|
||||
|
||||
#### ⑤ 왜 이 모양인가
|
||||
|
||||
- `FP` 는 `CODE_PREFIX = "FP"` 로 이미 박혀 있고 `B-FP-12-01-01#철근구조물` 이 실제로 돎.
|
||||
**거기에 `AX` 한 칸만 나란히 세우면 층 글자 로직을 한 줄도 안 고쳐도 됨**
|
||||
- 난수를 쓰는 까닭 — 회사·개인 라이브러리가 서로 모르는 채 항목을 만들고 **공유까지 함**.
|
||||
일련번호를 쓰면 공유하는 순간 부딪힘
|
||||
- 읽기는 **이름 칸**이 맡음. 코드는 식별자일 뿐임
|
||||
|
||||
---
|
||||
|
||||
## 3. 자원 축
|
||||
|
||||
### 한 줄의 모양 — 실물 그대로 (고치지 말 것)
|
||||
|
||||
```json
|
||||
{
|
||||
"work_item_code": "FP-04-02-02",
|
||||
"resource_kind": "labor",
|
||||
"resource_code": "1037",
|
||||
"resource_name": "벌목부",
|
||||
"resource_spec": "",
|
||||
"amount": "2.14",
|
||||
"amount_unit": "",
|
||||
"variant": "5m 미만",
|
||||
"pum_form": "requirement",
|
||||
"pum_table_id": "F0087",
|
||||
"raw_row_index": 1
|
||||
}
|
||||
```
|
||||
|
||||
### 지켜야 할 것 다섯 — 이미 코드 머리에 적혀 있음
|
||||
|
||||
1. **`pum_form` 을 먼저 볼 것.** `productivity` = **1 ÷ 값** · `requirement` = **값 ÷ 밑수**.
|
||||
⚠ **뒤집으면 20배 틀림**
|
||||
2. `coefficient`·`reference` 는 **공종이 아님** — 일위대가 항목으로 세우지 말 것.
|
||||
`undetermined` 는 **값을 쓰지 말 것**
|
||||
3. **규격(`resource_spec`)이 없으면 매칭 성공이 아님.** 「굴착기」와 「굴착기 0.7㎥」는 단가가 다름
|
||||
4. 못 맞춘 것은 **빈칸이 아니라 `unmatched` 목록**으로
|
||||
5. **자재는 할증 전 값.** 할증은 자재총괄 한 곳뿐
|
||||
|
||||
### 자원 종류와 단가 층은 **다른 것**
|
||||
|
||||
헷갈리면 값이 두 배가 되거나 사라짐.
|
||||
|
||||
| 축 | 값 | 무엇인가 |
|
||||
| --- | --- | --- |
|
||||
| **자원 종류** (`resource_kind`) | `labor` · `material` · `machine` | 품셈 줄이 무엇을 부르나 |
|
||||
| **단가 층** (`PriceKind`) | `M·L·S·X·B·D·W` | 단가가 어느 겹에 사나 |
|
||||
|
||||
단가 층 넷의 차례 (STC `COSTN` 186행 실측) —
|
||||
`S 중기취득가(천원) → X 시간당 중기사용료 → B 일위대가 → D 단가산출`,
|
||||
`L 노임`·`M 자재`는 카탈로그 층(상세 없이 값이 바로 있음).
|
||||
|
||||
---
|
||||
|
||||
## 4. 일위대가 — 잇는 표
|
||||
|
||||
- **한 줄** = 공종 코드 하나 + 그에 딸린 자원 줄 여럿
|
||||
- 금액은 **어느 층이든 재료·노무·경비 3분할**이고 `합계 = 재료 + 노무 + 경비`
|
||||
- **재귀** — 구조물 일위대가(`AX-ST-*`)가 다른 공종의 하위 일위대가로 들어감.
|
||||
⚠ 순환 참조 막이 필요 · 깊이 한도는 **사용자 답 대기**
|
||||
|
||||
---
|
||||
|
||||
## 5. 별칭표
|
||||
|
||||
**한 파일에만 둘 것.** 지금 `B08_Quantity_Engine_Handoff_Mapping.py` 등 여러 곳에 흩어져 있음.
|
||||
|
||||
```
|
||||
우리 이름 → 코드 ← 남의 이름
|
||||
리핑암 → FP-… ← 파쇄암 (실재 · 코드에 주석으로 있음)
|
||||
노면다짐 → FP-… ← 노면고르기 (답 대기)
|
||||
```
|
||||
|
||||
- 방향은 **양쪽 다** — 우리 이름으로도, 실무·품셈 이름으로도 코드를 찾을 수 있어야 함
|
||||
- **한 이름이 두 코드에 걸리면 오류로 세울 것.** 조용히 첫째를 고르면 안 됨
|
||||
|
||||
---
|
||||
|
||||
## 6. 이중계상 경계 — 축으로 판정
|
||||
|
||||
지금은 **주석 경고뿐**임. 코드가 잡게 세울 것.
|
||||
|
||||
| 규칙 | 판정 자리 |
|
||||
| --- | --- |
|
||||
| 구조물 터파기·되메우기는 **토공집계로만** | 공종 축 — 같은 물량이 두 공종 코드에 붙으면 오류 |
|
||||
| 콘크리트 배합 성분(시멘트·모래·자갈)은 **일위대가만 쪼갬** | 자원 축 — 자재총괄에 배합 성분이 뜨면 오류 |
|
||||
| 자재 할증은 **자재총괄 한 곳** | `material_amounts_are_before_surcharge=true` 정책 이미 있음 |
|
||||
|
||||
원문 규칙은 `docs/raw/plans/2026-09-13b_plan_구컨셉_전문_재편전.md` 8-7절.
|
||||
**세우기 전에 반드시 대조할 것.**
|
||||
|
||||
---
|
||||
|
||||
## 7. 반올림 — 자리마다 다름 (STmate 실증, 17·18번)
|
||||
|
||||
⚠ **한 가지로 통일하면 틀림.** 자리마다 다른 것이 실측 결과임.
|
||||
|
||||
| 자리 | 규칙 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| **호표 안 성분 소계** | **절사** | 중기사용료 398건 100% · 일위대가 345건 94.2% |
|
||||
| **집계표 행 금액** | `ROUND` | 자원·일위대가·중기 집계표 |
|
||||
| **내역에 실릴 때** | 정수 절사 | 착공내역서 178건 100% |
|
||||
| **단가산출 성분단가** | 소수 1자리 절사 | 211건 중 137건 설명 |
|
||||
| 내부 계산 | 은행가(최근접-짝수) | STmate 내부. ⚠ 뽑은 엑셀은 사사오입이라 20개 경계 중 10개가 갈림 |
|
||||
|
||||
**식을 접지 말 것 둘**
|
||||
|
||||
- **노임 시간당 환산** — 식 문자열을 **좌→우 순차 평가**.
|
||||
계수로 미리 곱하면 `267,360 × 0.20833… = 55,699.99…` → **55,699** 로 1원 틀림.
|
||||
좌→우는 모든 단계가 정수라 **55,700**. 18건 중 계수 선계산은 14/18 만 맞음
|
||||
- **단가산출 Q 식** — `Q = 3600 × q × K × f × E / Cm`.
|
||||
⚠ **Q 를 소수 2자리로 먼저 확정한 뒤 나눌 것**(`55,700/15.708 = 3,545.96` ≠ `55,700/15.71 = 3,545.5`)
|
||||
|
||||
**중기 시간당 사용료 조립** — 손료(경비) · 운전원(노무) · 주연료(재료) · 잡품(재료).
|
||||
⚠ **잡품은 수량 × 단가가 아니라 연료비 × 비율의 가산 행**임.
|
||||
|
||||
---
|
||||
|
||||
## 8. 검산 계약 — 무엇이 「끝났다」인가
|
||||
|
||||
**STmate 골든셋 재현이 초록이면 끝.**
|
||||
|
||||
- 기준점 — 실무 6건 · 내역 1,515행을 **원 단위로 재현한 실증본**
|
||||
(`…/STmate 분석/20_분석/16_골든셋_회귀_결과.md`)
|
||||
- 시험 자리 — `resources/tester/` (git 추적 대상)
|
||||
- **시험 코드는 코드 창이 짜고 판정은 브레인이 함**
|
||||
|
||||
**⭐ 어느 창에서든 돎** (2026-09-13 확인) — 골든셋 스크립트는 **로컬 원본
|
||||
`C:\경영정보(주)` 를 안 씀.** 저장소 안 `resources/knowledge/original/실무문서/` 의 STC·XLSX 만 봄.
|
||||
절대경로가 박혀 있던 것을 **24개 스크립트 전부 저장소 뿌리 자동탐색(`_repo_root()`)으로 고쳤고**
|
||||
고친 뒤 6건 초록 유지를 확인했음. ⇒ **랩탑에서 그대로 돌릴 수 있음.**
|
||||
|
||||
| 쓸 것 | 무엇을 하나 |
|
||||
| --- | --- |
|
||||
| `40_스크립트/golden_regression.py` | **이것 하나면 됨** — 프로젝트 짝짓기부터 직접비·간접비 대조까지 |
|
||||
| `40_스크립트/golden_bonghwa_full.py` | 봉화 한 건을 총공사비까지 훑음 |
|
||||
| `40_스크립트/revision_direct_cost.py` | 변경설계 |
|
||||
|
||||
⚠ 로컬 원본이 필요한 스크립트 25개는 **설치폴더(PE·폼·JB) 분석용**이라 검산과 무관함.
|
||||
|
||||
⚠ 골든셋은 **계산 엔진**을 재는 것이지 **기준자료**를 재는 것이 아님.
|
||||
기초단가 원천(자재 57,580 · 노임 460 · 중기 833 · 표준시장단가 4,921건)은 전부 암호화라
|
||||
영영 못 가져옴 — 그 자리는 **사용자 수동입력 + 빨간 테두리**로 둠.
|
||||
|
||||
---
|
||||
|
||||
## 9. 아직 안 정한 것
|
||||
|
||||
- 일위대가 **재귀 깊이 한도** — 사용자 답 대기
|
||||
- **옆도랑파기 갈래 수**(우리 둘 ↔ 실무 셋) · **노면고르기 ↔ 노면다짐** — 사용자 답 대기
|
||||
- **`undetermined` 75표** 판정 — 사람이 봐야 함. 값을 쓰면 뒤집힌 채 들어감
|
||||
- **못 맞춘 497줄 잇기** — ⭐ **재료가 생겼음**(2026-09-13). 아래 §11 참고. 남은 것은
|
||||
「품셈 이름 ↔ STmate 자재명」 **맞추기**이지 목록 구하기가 아님
|
||||
|
||||
---
|
||||
|
||||
## 11. ⭐ 이름·코드 목록 — 확보됨 (2026-09-13)
|
||||
|
||||
STC 의 `COSTN.DBF` 가 **암호화가 아니라** 코드·명칭·규격·단위가 평문으로 읽힘.
|
||||
실무 7건을 합쳐 **서로 다른 코드 894개**.
|
||||
|
||||
```
|
||||
resources/knowledge/original/경쟁사 프로그램/STmate 분석/30_원자료/stmate_code_name_list.csv
|
||||
열 : code , name , size , unit ← size 가 곧 우리 resource_spec
|
||||
|
||||
D 단가산출 273 · M 재료 228 · B 일위대가 158 · X 중기 96
|
||||
S 경비 92 · L 노임 37 · W 일식·견적 10
|
||||
```
|
||||
|
||||
곁들여 **노임 직종 사전 106종**이 평문으로 있음 (`ST_U_Convert.CPM` · 28번 §3.1).
|
||||
|
||||
### ⚠ 그대로 우리 코드로 쓰지 말 것
|
||||
|
||||
STmate 코드는 `B00001`·`M00042` 꼴로 **층 글자 + 다섯 자리**이고 대시가 없음.
|
||||
우리 규약(`B-<공종코드>`)과 **모양이 비슷해 헷갈리기 딱 좋음.**
|
||||
|
||||
- 우리 자원 코드는 **`AR-<M|L|X>-<8자리 16진>`** 그대로 감
|
||||
- **STmate 코드는 별칭표(5장)에 한 줄로 실을 것** — 양방향 조회용·교차 확인용
|
||||
- 까닭 — 894개는 **그 7개 프로젝트가 실제로 쓴 것만**임. 배포 전체 카탈로그
|
||||
(`JDCODE_M.BSC` 자재 57,580건 등)는 여전히 암호화라 못 읽음.
|
||||
남의 내부 번호를 정본으로 삼으면 나중에 빈 자리를 못 메움
|
||||
|
||||
### 쓰는 법
|
||||
|
||||
1. `size` 칸을 **반드시 같이 볼 것** — 3장 ③ 「규격이 없으면 매칭 성공이 아님」이 여기서 걸림
|
||||
2. 출력 XLSX 목록표 시트 6종에서 **317개가 따로 읽힘** — 교차 확인용
|
||||
3. 임도에서 실제 쓰는 자재·기계라면 못 맞춘 497줄 중 **상당수가 894개 안에 있을 것**으로 봄.
|
||||
맞춰 보고 **남는 것만** 새로 `AR-` 코드를 낼 것
|
||||
|
||||
---
|
||||
|
||||
## 10. 고칠 때
|
||||
|
||||
이 문서는 **브레인이 관리함.** 코드 창이 계약을 바꿔야 하면 **고치지 말고 브레인에게 알릴 것** —
|
||||
두 창이 각자 고치면 계약이 두 벌이 됨.
|
||||
Reference in New Issue
Block a user