From f9bf0a9c347295c8f2dbaec47ff5dff15d618606 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Sun, 13 Sep 2026 14:25:50 +0900 Subject: [PATCH] =?UTF-8?q?knowledge(=EC=B6=95C):=20=EB=91=90=20=EC=B6=95?= =?UTF-8?q?=EA=B3=BC=20=EC=9D=BC=EC=9C=84=EB=8C=80=EA=B0=80=20=EA=B3=84?= =?UTF-8?q?=EC=95=BD=20=EB=AA=85=EC=84=B8=20=E2=80=94=20=EC=9E=90=EC=9B=90?= =?UTF-8?q?=EC=B6=95=20=EC=8B=A4=EC=B8=A1=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_0154EMdwPYNPuKc9eZv8SLEX --- docs/raw/verification/2026-09-13_축C_명세.md | 223 +++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 docs/raw/verification/2026-09-13_축C_명세.md diff --git a/docs/raw/verification/2026-09-13_축C_명세.md b/docs/raw/verification/2026-09-13_축C_명세.md new file mode 100644 index 00000000..16344740 --- /dev/null +++ b/docs/raw/verification/2026-09-13_축C_명세.md @@ -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. 고칠 때 + +이 문서는 **브레인이 관리함.** 코드 창이 계약을 바꿔야 하면 **고치지 말고 브레인에게 알릴 것** — +두 창이 각자 고치면 계약이 두 벌이 됨.