knowledge(축C): 두 축과 일위대가 계약 명세 — 자원축 실측 반영
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0154EMdwPYNPuKc9eZv8SLEX
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
# 축 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` 는 부모이고 잎이 답구간·답외구간임.
|
||||
**부모 코드에 수량을 붙이지 말 것**
|
||||
|
||||
### 자체 확장 코드 — 접두를 갈라 둘 것
|
||||
|
||||
품셈에 없는 공종의 자리. **품셈 코드와 한 눈에 갈려야** 함.
|
||||
|
||||
```
|
||||
AX-<갈래>-<번호>
|
||||
AX-ST-* 구조물 일위대가 (라이브러리가 낳는 것)
|
||||
AX-GS-* 관급자재
|
||||
AX-ET-* 품셈에 없는 공종 (첫 사례: 지장목제거)
|
||||
```
|
||||
|
||||
⚠ **접두를 정하는 것은 랩탑 메인 몫이나, 정하면 이 문서에 적고 브레인에게 알릴 것.**
|
||||
두 창이 다른 접두를 쓰면 나중에 통째로 뜯어야 함.
|
||||
|
||||
---
|
||||
|
||||
## 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 추적 대상)
|
||||
- **시험 코드는 코드 창이 짜고 판정은 브레인이 함**
|
||||
|
||||
⚠ 골든셋은 **계산 엔진**을 재는 것이지 **기준자료**를 재는 것이 아님.
|
||||
기초단가 원천(자재 57,580 · 노임 460 · 중기 833 · 표준시장단가 4,921건)은 전부 암호화라
|
||||
영영 못 가져옴 — 그 자리는 **사용자 수동입력 + 빨간 테두리**로 둠.
|
||||
|
||||
---
|
||||
|
||||
## 9. 아직 안 정한 것
|
||||
|
||||
- 자체 확장 코드 **접두** — 랩탑 메인이 정해 이 문서에 적을 것
|
||||
- 일위대가 **재귀 깊이 한도** — 사용자 답 대기
|
||||
- **옆도랑파기 갈래 수**(우리 둘 ↔ 실무 셋) · **노면고르기 ↔ 노면다짐** — 사용자 답 대기
|
||||
- **`undetermined` 75표** 판정 — 사람이 봐야 함. 값을 쓰면 뒤집힌 채 들어감
|
||||
- **기계·자재 카탈로그 확보** — 못 맞춘 497줄의 주된 사유. 단가보다 먼저 **이름·코드 목록**이 필요함
|
||||
|
||||
---
|
||||
|
||||
## 10. 고칠 때
|
||||
|
||||
이 문서는 **브레인이 관리함.** 코드 창이 계약을 바꿔야 하면 **고치지 말고 브레인에게 알릴 것** —
|
||||
두 창이 각자 고치면 계약이 두 벌이 됨.
|
||||
Reference in New Issue
Block a user