knowledge(축C): 작업 폴더에 먼저 들어온 명세 정정 반영 — dev 와 같은 내용(받기 막힘 풂)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
This commit is contained in:
2026-09-14 00:58:34 +09:00
co-authored by Claude Opus 5
parent fc649316c6
commit 1733bb6aac
@@ -202,9 +202,37 @@ AR-<종류>-<8자리 16진> 카탈로그에 없는 자원
| **자원 종류** (`resource_kind`) | `labor` · `material` · `machine` | 품셈 줄이 무엇을 부르나 |
| **단가 층** (`PriceKind`) | `M·L·S·X·B·D·W` | 단가가 어느 겹에 사나 |
단가 층 넷의 차례 (STC `COSTN` 186행 실측) —
`S 중기취득가(천원) → X 시간당 중기사용료 → B 일위대가 → D 단가산출`,
`L 노임`·`M 자재`카탈로그 층(상세 없이 값이 바로 있음).
### ⚠⚠ 층 차례 — 2026-09-13 정정. 화살표 방향이 모호했음
**조립(참조) 차례는 아래가 맞음.** 앞서 적은 `… → B → D` **거꾸로 읽힐 수 있었음.**
```
L 노임 · M 자재 (카탈로그 — 상세 없이 값이 바로 있음)
S 중기취득가(천원) → X 시간당 중기사용료
D 단가산출 (Q 식으로 시간당 단가 ÷ Q)
B 일위대가 (D 와 카탈로그를 물어 조립)
```
**D 가 먼저 서고 B 가 D 를 참조함.** 우리 코드는 지금 **D 가 B 를 참조해 뒤집혀 있음**(랩탑 서브 실측).
⚠ 차례가 뒤집히면 **위상순서·재귀·이중계상 판정이 다 영향받음** — 값 정밀도 고치기와 **따로 뗄 것.**
### D 는 **Q 를 쓰는 자리에만** 섬 (2026-09-13 실측)
```
D 가 서는 자리 Q 식으로 시간당 단가를 나누는 기계 공종
(굴착기 · 도자 · 직접 작업량/다짐 · 암 잎)
D 가 없는 자리 사람 품만 있는 공종 · 자원축 표 시간(Q 아님) → B 가 X·카탈로그를 바로 물음
```
- `D-<공종>[#갈래]` · **D→X 수량 `1/Q × 몫`** · **B→D 수량 1**
- STmate 한 `D`**`Q` 가 여럿일 수 있음**(기계조합 호표)
-**「단산 N」 번호는 실제 `D` 가 든 줄에만.** 단가산출이 없는 줄에 번호를 붙이면 **없는 근거를 가리킴**
-**내역이 부르는 코드 축은 `B` 하나로 둠.** STmate 는 순수 기계 공종에서 내역이 `D` 를 바로 부르나
(봉화 「토사절취 … 산근 19호표」), 금액은 같고(`B→D` 수량 1) **축이 하나여야 인계·골든셋·이중계상이 단순함.**
**골든셋 대조에서 STmate 의 `D` 줄과 우리 `B` 줄을 짝으로 알아보게** 해 둘 것
---
@@ -305,11 +333,32 @@ B08 인계본 `ground_class_aliases` — **B09 가 안 읽음**)을 한 벌로
| **단가산출 성분단가** | 소수 1자리 절사 | 211건 중 137건 설명 |
| 내부 계산 | 은행가(최근접-짝수) | STmate 내부. ⚠ 뽑은 엑셀은 사사오입이라 20개 경계 중 10개가 갈림 |
### ⭐ 규정이 없는 자리 — 소수점 2자리가 기본값 (2026-09-13 사용자 확정)
**단수처리에 법적 근거가 없음이 확인됐음** — 기재부 **예정가격작성기준 전 조문에
원단위 절사·관급 올림 조문이 없고**, 국고금관리법 §47 과 **발주청 지침 영역**임(안티그래비티 조사).
```
규정이 있는 자리 그 규정을 따름 (품셈·발주청 지침·STmate 실증)
규정이 없는 자리 소수점 2자리 · 반올림 ← 기본값. 사용자가 칸으로 바꿈
```
⇒ STmate 관행(절사·은행가)을 따라도 되는 근거가 생겼음. **발주청 지침이 오면 그것으로 덮음.**
**붙박이로 박지 말 것** — 사용자가 바꿀 칸으로 둘 것.
**식을 접지 말 것 둘**
- **노임 시간당 환산** — 식 문자열을 **좌→우 순차 평가**.
계수로 미리 곱하면 `267,360 × 0.20833… = 55,699.99…`**55,699** 로 1원 틀림.
좌→우는 모든 단계가 정수라 **55,700**. 18건 중 계수 선계산은 14/18 만 맞음
좌→우는 모든 단계가 정수라 **55,700**.
⚠⚠ **2026-09-13 정정 — 「18/18 원 단위」는 틀렸음**(랩탑 서브 실측).
```
다섯 건 원 미만 절사
2025 울진소광 0.1 원 미만 절사 (57,077.2 · 49,479.1 · 35,608.3)
```
⇒ **자릿수가 프로젝트마다 다름.** 실무 설정값임.
**프로젝트 설정 칸으로 둘 것 · 기본 0**(원 단위). 붙박이로 박지 말 것
- **단가산출 Q 식** — `Q = 3600 × q × K × f × E / Cm`.
⚠ **Q 를 소수 2자리로 먼저 확정한 뒤 나눌 것**(`55,700/15.708 = 3,545.96` ≠ `55,700/15.71 = 3,545.5`)
@@ -590,7 +639,30 @@ IF 36(비교식 11) · VLOOKUP 13(**전부 근사**) · SUM 47.
| 공종 축 ↔ 자원 축 | **서로 다른 표를 잇는 것** | ⛔ 안 됨. 코드로만 |
| `#갈래` | **한 공종 안의 조건 딱지**(토질·암종·규격) | ⚠ 지금은 이름으로 맞추고 있어 약함 |
**⇒ 판정 — 마스터의 `variant_key` 를 정본으로 삼을 것.**
### ⚠⚠ 2026-09-13 정정 — 위 판정이 틀렸음
**`variant_key` 를 정본으로 못 씀.** 브레인이 「456표에 다 있다」만 보고 「쓸 수 있다」로 넘겼으나,
그 값은 **「표 첫 열 값 24개까지」**(`Build_WorkItemMaster.variant_axis`)임.
```
단가표 갈래 제목 294개 중 그 목록에 있는 것 86개 (약 1/3)
나머지 208 — 머리행에 갈래가 있는 표(벌목 「5m이상~8m미만」)
두 단 머리(「굴착기(무한궤도)0.2·밀」)
구간 이름 어긋남(표 「0.3~0.7m이하」 ↔ 목록 「0.3m미만」)
첫 열이 자원 이름인 표
```
⇒ 지금 정본으로 읽으면 **3분의 2가 폴백으로 떨어짐.**
**고쳐 세운 판정 둘**
1. **지금은 B09 단가표 제목을 정본으로 둘 것**(모양별 읽기가 이미 만든 것).
`find_variant_code` 의 **느슨한 맞춤**(수의 짝·구간 고르기)이 쓰일 때 **로그로 남길 것** —
**조용히 다른 갈래에 붙는 자리가 바로 거기임**
2. **마스터 생성기가 표 모양(첫 열 / 머리행 / 두 단)대로 `variant_key` 를 다시 뽑게** 할 것 —
**1장 마스터 일감**. 그것이 서면 그때 정본을 옮김
### (지난 판정) 마스터의 `variant_key` 를 정본으로 삼을 것 — ⛔ 위 정정으로 뒤집힘
- 마스터 **456표 전부에 `variant_key` 가 이미 있음**(브레인 확인). 그런데 **B09 가 안 읽고**
변형 문자열에서 매번 다시 만들어 씀