knowledge(요구): 요구서 내역 19 · 분석 둘 — 단가산출 기초 · M02 단가산출 항목 추가 · 단위 환산 · 실무문서 연결(PLAN 726~729)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-02 08:58:48 +09:00
co-authored by Claude Opus 5.5
parent 6df8f93d91
commit 638d3f446d
3 changed files with 381 additions and 0 deletions
@@ -0,0 +1,146 @@
# 분석 내역 19-A — M02 단가산출 [항목 추가] · 기초 옵션 목록 · 기본 로직 선택 · 이름 바꿈
조사 범위 = 내역 19 의 1~5 · 읽기 전용(코드 · storage · git 안 고침) · 셈 수치 = 서버 셈 함수를 메모리에서 직접 부름(`M02_Sangeun_Calc.run` · 저장 없음).
## 요약
- 기초를 [항목 추가]로 넣으면 지금은 **「하위 로직」 한 줄 · 수량 1 · 단위 빈칸**으로 들어감. 보통인부 · 굴착기 같은 세부 줄은 **바탕(기본 로직 선택)으로 넣었을 때만** 보임. 사용자 말 2 의 「1 로 전부 표현」이 바로 이것.
- 더한줄 기초의 금액은 **기초 기준단위 몫 그대로**(÷배 없음). 바탕 길은 ÷배를 함. 그래서 기준단위 앞 수가 1 이 아닌 기초 **83개**는 10~10,000 배가 어긋남(단목베기 100본당 → 1본에 153,889원).
- 고르기 창 기초 목록은 **같은 로직 하나를 옵션 축마다 한 줄씩 펼친 것**(1,461 로직 → 10,053 줄). 그런데 고르면 **그 줄의 옵션(`바꿈`)을 버리고** 로직 키만 넣음. 어느 줄을 고르든 같은 것이 들어감.
- 바탕을 쓰는 SK = 지금 storage 에 **0개**(SK 문서는 둘, 둘 다 바탕 없음 · 줄 없음). 마스터 층 SK 없음 · B09 공사 사본 SK 없음. 다만 바탕 꼴은 **단가산출로 저장 · 내 자료집 · 일위대가 줄 고침 · 공사 사본 굳힘**이 안에서 씀 → 꼴은 두고 단추만 걷어야 함.
- 「단가산출 로직」 화면 글 = **13 파일 20 곳**(+ 「바탕 M01 로직」 3 곳). 설명서(`A05_EduDetail/guide/`) = **0 곳**. 내부 열쇠 · API 길 · 저장 꼴은 그대로 두는 게 맞음.
---
## A. [항목 추가]로 기초를 넣을 때 — 저장 꼴 · 화면 · 셈
### A-1 흐름
| 걸음 | 자리 | 하는 일 |
| --- | --- | --- |
| 단추 | `M02_MasterTemplete_Sangeun_Detail.ts:97-109` | [항목 추가] → `openSangeunLinePicker` → 받은 줄을 `doc.더한줄` 끝에 붙임 |
| 고르기 | `M02_MasterTemplete_Sangeun_Pick.ts:85-87` | 기초 = `{종류:"로직", 로직:키, 입력값:{}, 수량:1}` · SK/일위대가 = `{참조, 수량:1}` · 인력/재료 = `{종류, 요소, 이름, 단위, 수량:1}` |
| 저장 검사 | `M02_Sangeun_Doc.py:165-173` | 기초 줄 = 이름만 기초 이름으로 채움 · **단위는 안 채움(빈 글)** |
| 셈 줄 | `M02_Sangeun_Doc.py:316-322` | 기초 → 엔진 호표 `{종류:로직, 요소:"로직(GF…, 입력…)", 수량:"1"}` — 수량을 그대로 씀(÷배 없음) |
| 입력 채움 | `M02_Sangeun_Calc.py:129-153` | 기초 입력 = 줄 값 › SK 공통 옵션 › 기초 기본값(725-1) |
| 1 단위 | `M02_Sangeun_Calc.py:107 · 213` | 배 = **바탕** 결과단위 앞 수 · 1단위 = 기준 ÷ 배 — 바탕 없으면 배 = SK 단위 앞 수(보통 1) |
| 화면 줄 | `logic/M02_Sangeun_Cover_Model.ts:171 · 373-380` | 더한줄 기초 = 「하위」 상자 한 줄 · 수량 = 문서 `수량`(1) · 단위 = 서버 줄 단위(빈 글) |
| 세부 보기 | `Sangeun_Detail.ts:390-395` · `M01_MasterData_UI_LogicLab_Ho.ts:492-536` | 시험 계산 · 텍스트 수식 · 하위 줄 펼침 = 바탕이 있을 때만(텍스트 답이 바탕에서만 옴) |
| 고침 | `Cover_Model.ts:228-237` | 더한줄 = 수량 · (인력 · 재료 · 기계만) 단가 · 기초 줄의 세부 품 · 단가는 못 고침 · 뺀줄 없음 |
### A-2 셈 실측(메모리 셈 · 공통 옵션 없음 = 기초 기본값 전국평균 · 해당 없음)
| 경우 | SK 단위 | 보이는 줄(이름 · 단위 · 수량 · 금액) | 배 | SK 1 단위 계 |
| --- | --- | --- | --- | --- |
| 바탕 GF000099 측구터파기 토사(원/㎥) | ㎥ | 보통인부 · 인 · 0.023 · 3,957.56 / 굴착기 0.7㎥ · 시간 · 0.01546 · 1,331.11 | 1 | 5,288.67 |
| 더한줄 GF000099 | ㎥ | 측구터파기 토사 · **(빈칸)** · **1** · 5,288.67 (하위 상자 한 줄) | 1 | 5,288.67 |
| 더한줄 GF000099 | m | 같음 — ㎥↔m 환산 없음(1 m 당 1 ㎥ 로 셈) | 1 | 5,288.67 |
| 바탕 GF000287 단목베기(원/100본) | 본 | 벌목부 0.2인 · 50,648.6 / 보통인부 0.6인 · 103,240.8 (= 100본 몫) | 100 | **1,538.89** |
| 더한줄 GF000287 | 본 | 단목베기 · (빈칸) · 1 · 153,889.4 | 1 | **153,889.4 (100 배)** |
| 바탕 GC000421 사석 수상고르기(원/10㎡) | ㎡ | 석공 0.7인 · 보통인부 0.42인 · 굴착기 1.72시간 … (= 10㎡ 몫) | 10 | **44,791.32** |
| 더한줄 GC000421 | ㎡ | 사석 수상고르기 · (빈칸) · 1 · 447,913.20 | 1 | **447,913.20 (10 배)** |
| 더한줄 GF000098 작업량(㎥/시간 · 돈 아닌 기초) | ㎥ | SK 통째 못 셈 · 까닭 = 「'decimal.Decimal' object is not subscriptable」(날 파이썬 오류 글) | — | — |
| 인력 LB000002 | ㎥ | 보통인부 · 인 · 1 · 172,068 | 1 | 172,068 |
| 참조 SK · 일위대가 | — | 그 문서 이름 · 1 · 그 문서 1 단위 값(`M02_Sangeun_Calc.py:221-246` 이 ÷배) | — | — |
- 배 ≠ 1 기초 = **83개**(원/10㎡ 13 · 원/100㎡ 12 · 원/10m 9 · 원/100본 8 · 원/1,000본 7 …) · 돈 아닌 기초 = **21개**(고르기 창에 그대로 나옴 · 넣으면 SK 통째 오류).
- 같은 기초인데 고르기 창 금액(5,286)과 넣은 뒤 금액(5,288.67)이 다름 — 목록은 B09 산근 끝수(줄마다 버림 · `M02_Logic_Standard.py:202-208`) · SK 셈은 끝수 없음.
### A-3 사용자 말과 지금 동작
| 사용자 말 | 지금 동작 | 어긋남 자리 |
| --- | --- | --- |
| 2 — 기초는 1 기준단위 당 세부 항목 값이 정해져 있음 · 1 로 전부 표현한 값 아님 | 더한줄 기초 = 한 줄 수량 1 · 단위 빈칸 · 세부 줄 안 보임 · 세부 품 고침 · 줄 빼기 · 시험 계산 · 텍스트 수식 없음. 세부 줄은 바탕일 때만 | `Sangeun_Pick.ts:85` · `M02_Sangeun_Doc.py:165-173 · 316-322` · `Sangeun_Detail.ts:390-395` |
| 2 — (기준단위 앞 수) 원문 기준단위(10㎡ · 100본) 당 값 | 바탕 = SK 단위에서 앞 수를 떼고(`Sangeun_Detail.ts:65 · 123` 「원/10㎡」→「㎡」) ÷배로 1 단위 값 · 머리 띠 「1 ㎡ 당」(`M02_Sangeun_Calc.py:249-250`)인데 줄 · 계는 10㎡ 몫(계 칸 「원/10㎡」) — 한 화면에 1 단위와 기준단위가 섞임. 더한줄 = ÷배 없음 → 83 기초 금액 틀림 | `M02_Sangeun_Calc.py:107 · 213` · locale `M02_SangeunUnit` 「단위(1 단위 값)」 |
| 4 — 기초 아닌 항목은 기준단위 값 1 그대로 | 인력 · 재료 · SK · 일위대가 = 수량 1 · 맞음 | `Sangeun_Pick.ts:86-87` |
해석 메모 — 말 2 는 「기초를 넣으면 지금 바탕처럼 세부 줄이 1 기준단위 당 값으로 들어와야 함」으로 읽힘(말 5 「항목 추가로 될 테니 기본 로직 선택은 의미 없음」과 맞음). 기준단위 앞 수(배) 어긋남은 같은 뿌리의 덧 흠.
---
## B. 고르기 창 「M01 전체」에서 기초가 옵션별 여러 줄인 까닭
- 원천 = 서버 기준 목록 `/m02/logic-lib/standard`(`M02_MasterTemplete_Router_Combos.py:119-122` → `M02_Logic_Standard.listing`) · 파생 저장본 `storage/_derived/m02_logic_standard/*.json`.
- 펼침 규칙(`M02_Logic_Standard.py:134-162 · 176-210`) = 바탕 한 줄(기본값) + **옵션 축마다 값 하나씩 바꾼 줄**(곱하지 않음 · 0 원 줄 뺌 · 지역 축 뺌). 축 = 고르기 입력 + 표 찾기 수 입력.
- 줄 열쇠 = 같은 로직 키 + `바꿈`{바꾼 입력} — **미리 굳은 별도 로직 아님 · 같은 로직의 옵션 조합**.
- 수: 로직 1,461(GF 326 · GC 1,135) → 줄 10,053 · 한 줄인 로직 464 · 여러 줄 997 · 가장 많음 GC000269 시간당 기계경비 131 줄 · GC000273 129 · GC000241 빔 가설 56.
- GF000099 = 3 줄: 기본(해당 없음) 5,286 · 보정작업 암석작업 5,344 · 보정작업 전석섞인토사 5,315. GF000101 구조물터파기 = 3 줄.
- **흠**: 줄 누름 → 계산서는 그 옵션으로 보여 주나, [담기]는 `opt.logic(logic)`로 로직 요약만 넘김(`Find_Pick.ts:151 · 160-165` · `Labor_Sheet.ts:16` 의 `put: () => void`) → `바꿈` 버림 → `입력값:{}`. 암석작업 줄을 골라도 기본값으로 셈. 옛 창 `Labor_Pick.ts:201-207`(B09 단가연결 · 불러오기)도 같은 흠.
- 한 줄로 묶는 자리: `M02_MasterTemplete_Find_Pick.ts` `logicLines`(147-168) 에서 `바꿈` 빈 줄만 남김(로직마다 바탕 줄이 늘 첫째로 있음 · `_rows_of` 의 `changes=[{}]`). 서버 목록은 그대로 → `Labor_Pick`(B09 · 불러오기) 영향 없음. 덧 고려: 바탕 줄 규격 글이 기본 옵션 하나만 보여 줌(GC000269 「기계 플레이트 콤팩터 1.5ton」) → 기초 줄 규격 칸은 비우거나 「옵션 n」으로. 옵션 글로 찾던 길(「덤프트럭」 → GC000269)은 사라짐. 일위대가 [로직 추가]도 같은 창이라 같이 바뀜.
---
## C. 「기본 로직 선택」(바탕)
- 하는 일(`Sangeun_Detail.ts:111-129`): 기초만 고르는 창(`logicOnly`) → `doc.바탕={로직:키}` · `바탕판` 지움 · 단위가 비거나 「식」이면 기초 결과단위에서 앞 수 뗀 단위 → 바탕 셈. 보임 = 편집 중 · 바탕 없음 · 뺀줄 · 덮개 없을 때(226). 바탕을 바꾸거나 지우는 길은 없음.
- 저장 꼴(`M02_Sangeun_Doc.py:3-20 · 106-116`): `바탕: {로직: GF…} | {참조: {층, 주인, 키: SK-…}} | null`.
- 바탕에 기대는 것: 덮개 열쇠 `kind:키#n`(바탕 줄 정체) · 뺀줄 · 고름 · 자재표시 · M01 개정 지문 `바탕판`(`Sangeun_Detail.ts:146-148`) · 배(1 단위) · 공통 옵션 칸 = 바탕 입력 · 시험 계산 · 텍스트 수식 · 하위 줄 펼침.
- 지금 SK 중 바탕 쓰는 것: storage 전체 SK 문서 2 개(`storage/1/3/templates/sangeun/SK-000001 · 000002`) · 둘 다 바탕 null · 더한줄 없음. 마스터 층(`resources/master_template/`) SK 폴더 없음 · 회사 층 없음 · 공사 사본(굳힌 SK) 없음 → **옮길 자료 0**.
- 바탕 꼴을 만드는 다른 길(단추와 무관 · 그대로 둬야 함):
- 단가산출로 저장 `M02_Labor_Patch.py:117-123`(→ `as_doc` 77-86)
- 일위대가 줄 고침 = 이름 없는 SK `Cover_Model.ts:481-500 lineDoc` · `M02_Labor_Patch.as_doc`
- B09 내 자료집 `B09_Estimation_Daega_Personal.py:194`
- 공사 사본 굳힘 `M02_Item_Sangeun.py:72`(바탕 없는 SK 도 굳힌 GX 키를 바탕으로) → B09 `Labor_Source.py:181-185 · 293-297` · `Linked.py:89` · `B09_Estimation_Sangeun.py:139` 가 그 바탕을 읽음
- 목록 열 「바탕」 `Library_List.ts:89` · `M02_Labor_Ref.py:318-327`
- 단추만 걷고 대신할 길이 없으면 깨지는 것: 기초 세부 줄 보기 · 세부 품 · 단가 고침(덮개) · 줄 빼기(뺀줄) · M01 개정 알림 · 시험 계산 · 텍스트 수식 · 배(1 단위) 맞춤이 화면에서 사라짐(데이터는 안 깨짐). 걸리는 시험 = `test_721_find_pick.py` 721-1(단추 자리 · locale 글) · 721-2(`logicOnly: true,`).
- 바탕을 「더한줄 기초 한 줄」로 옮기는 길: 지금 꼴이면 위 기능이 다 빠짐(더한줄은 수량만 고침 · 개정 지문 없음). 세부 줄을 더한줄 안에서 펼치려면 기초의 입력 · 중간값(인력비율 · 작업량 …)을 SK 줄로 끌어와야 해서 이름 겹침(지역 · 작업량)을 풀어야 함 → 서버 꼴(`M02_Sangeun_Doc.patched` · cid 규칙 `add:#k`) · `Cover_Model.ts` · B09 굳힘 `정체` 까지 바뀌는 큰 일.
- 작은 길: 바탕 꼴은 두고 **[항목 추가]로 기초를 넣을 때 바탕이 비었으면 바탕으로**(지금 단추가 하던 일 그대로 · 단위 · 배 · 공통 옵션 포함) · 바탕이 있으면 더한줄. 저장 꼴 · 서버 · B09 손 안 댐.
덧 — SK 화면에서 고른 옵션은 저장 안 됨(시험값 · `Sangeun_Detail.ts:383-388` · 헤더 8 줄). 일위대가가 SK 를 참조로 부르면 `M02_Labor_Expand.py:65-66` → `calc.unit(given=None)` = SK 입력값(화면에서 못 넣음) › 기초 기본값(전국평균 · 해당 없음). 「옵션은 항목 추가 뒤 조작」을 저장까지 이으려면 SK `입력값`에 적는 길이 필요.
---
## D. 「단가산출 로직」 → 「단가산출 기초」
화면 글(값만 바꿈 · 열쇠 이름 그대로) — 13 파일 20 곳:
| 파일 | 곳 | 자리 |
| --- | --- | --- |
| `ui_template/ui_template_locale_m1.ts` | 2 | 78 `M01_GroupLogic`(M01 왼쪽 상자) · 174 `B01_Dashboard_CardLogic`(대시보드 카드) |
| `ui_template/ui_template_locale_m2.ts` | 2 | 179 `M02_PracticeNoLogic` · 252 `M02_FindLogic`(고르기 창 구분 칸) |
| `M01_MasterData/M01_MasterData_UI_Logic_Text.ts` | 2 | 9 `Title` · 100 `Lab_Title`(M01 화면 제목) |
| `M01_MasterData/M01_MasterData_UI_LogicLab_Text.ts` | 1 | 70 `Pill_Back` 「← 단가산출 로직으로 돌아가기」 |
| `M02_MasterTemplete/M02_MasterTemplete_Labor_Text.ts` | 4 | 27 · 50 · 54 · 121 |
| `M02_MasterTemplete/M02_MasterTemplete_Labor_Diagram.ts` | 2 | 31 · 33 |
| `M02_MasterTemplete/M02_MasterTemplete_ItemList.ts` | 1 | 100 표 머리 「단가산출 로직 수」 |
| `M02_MasterTemplete/M02_MasterTemplete_ItemPick.ts` | 1 | 65 표 머리 |
| `M02_MasterTemplete/M02_MasterTemplete_Structure.ts` | 1 | 58 |
| `M02_MasterTemplete/M02_MasterTemplete_CardHelp.ts` | 1 | 55 |
| `M02_MasterTemplete/M02_Labor_Values.ts` | 1 | 136 |
| `ui_template/ui_template_item_picker_edit.ts` | 1 | 42 |
| `M02_MasterTemplete/M02_Labor_Doc.py` | 1 | 106 서버 까닭 글 「단가산출 로직 {n}째」 |
- 같이 볼 글: `ui_template_locale_m2.ts` 218 · 231 · 236 「바탕 M01 로직」 3 곳 · `M02_SangeunPickBase` 「기본 로직 선택」(걷을 대상) · 목록 열 「바탕」. 「로직」 홀로 쓴 화면 글(신규 로직 · 로직 추가 · 로직 칸 등)은 약 50 곳 — 이번 범위 밖으로 둠이 맞아 보임(사용자 확인).
- 주석 · 문서 머리에 든 「단가산출 로직」 약 30 곳 · `resources/master_data/ref` · `docs/raw` 기록은 그대로.
- 내부 열쇠 · 저장 꼴 · API 길(`/m02/logic-lib/…` · `/m01/logic/…` · `?open=로직` · `종류:"로직"` · `바탕.로직` · `담은로직` · locale 열쇠 이름)은 **그대로가 맞음** — 바꾸면 storage 문서 · B09 굳힌 사본 · 시험이 다 옮겨야 하고 사용자 눈엔 차이 없음.
- 설명서 `A05_EduDetail/guide/` = 「단가산출 로직」 **0 곳**(나오는 「단가산출」은 B09 단가산출근거 탭 글).
- 낡을 시험: `test_m02_item_list.py:48`(「단가산출 로직 수」 글 대조). 나머지 시험의 해당 글은 주석뿐.
---
## E. 권함
### 고칠 걸음(파일 경계로 일감 둘)
1. **일감 가 — SK 기초 넣기(말 2 · 3 · 4 · 5)** · 파일 `M02_MasterTemplete_Find_Pick.ts` · `M02_MasterTemplete_Sangeun_Pick.ts` · `M02_MasterTemplete_Sangeun_Detail.ts` · `M02_Sangeun_Doc.py` · `M02_Sangeun_Calc.py` · `ui_template_locale_m2.ts`(SK 열쇠만)
- 고르기 창 기초 = 로직마다 한 줄(`바꿈` 빈 줄만 · 규격 칸 정리) · 옵션은 넣은 뒤 공통 옵션 칸에서
- [항목 추가] 기초 → 바탕 비었으면 바탕(옛 단추 동작 · 단위 · 배) · 아니면 더한줄 · [기본 로직 선택] 단추 · `logicOnly` 부름 걷음
- 더한줄 기초 줄: 단위 = 기초 단위 · 배 맞춤(서버가 ÷배 하거나 수량 처음값 1/배 — 갈래 2) · 돈 아닌 기초 21 개는 고르기 창에서 빼거나 막음
- 낡을 시험: `test_721_find_pick.py`(721-1 단추 자리 · locale · 721-2 `logicOnly`) · `test_717_4_sangeun_pick.py:42`(기초 줄 글) · 새 시험 = 기초 한 줄 목록 · 바탕 자동 · 배 맞춤(GF000287 100본) · 단위
2. **일감 나 — 이름 바꿈(말 1)** · D 표 13 파일(locale_m2 는 179 · 252 · 218 · 231 · 236 줄만 — 일감 가와 줄이 안 겹침)
- 낡을 시험: `test_m02_item_list.py:48`
- 차례: 가 · 나 병행 가능(같은 파일 locale_m2 는 서로 다른 줄). 나는 작고 독립이라 먼저 끝냄. 가는 사용자 갈래 답 뒤 착수.
- 범위 밖으로 남길 흠(보고만): 옛 창 `Labor_Pick.ts:201-207`(B09 단가연결 · 불러오기)도 옵션 줄 고르면 옵션 버림 · 목록 금액(끝수 버림)과 SK 셈 금액이 원 단위로 다름.
### 사용자에게 물을 갈래
1. **기초를 넣으면 어떤 꼴로?**
- (가) 첫 기초 = 세부 줄로 펼침(옛 「기본 로직 선택」과 같음 · 세부 품 고침 · 줄 빼기 · M01 개정 알림 그대로) · 둘째 기초부터 = 한 줄 — 작은 일 · 권함
- (나) 기초마다 세부 줄로 펼침 — 서버 꼴 · 화면 · B09 굳힘까지 바뀌는 큰 일
- (다) 모두 한 줄 + 누르면 세부 보기(고침은 수량만)
2. **SK 기준단위는?**
- (가) 기초의 기준단위 그대로(100본 · 10㎡ — 세부 값 원문 그대로 · 머리 띠 「100본 당」) · 기초 없이 만든 SK 는 1
- (나) 지금처럼 1 단위로 나눔(머리 띠 「1 본 당」 · 둘째 기초 한 줄 수량 처음값 = 0.01)
3. **넣은 뒤 고른 옵션은?**
- (가) SK 에 저장(그 SK 를 부르는 일위대가 · B09 도 그 옵션으로 셈)
- (나) 지금처럼 시험값만 — 부르는 곳은 기본값(전국평균 · 해당 없음)으로 셈
@@ -0,0 +1,185 @@
# 내역 19-B — 실무문서 불러오기 · 단가산출 기초 연결 · 일위대가 연결 누락 (조사 · 읽기만)
조사 = 코드 따라감 + 실물 엑셀 여덟 파일을 임시 층(시험 틀 `test_m02_hopyo_excel.client` 본뜸)에 올려 맞춤 → 서버 체크 제안 그대로 만들기 → [단가산출 만들기] 까지 돌림. 공유 storage · 코드 · git 안 고침. 도구 `tmp/brain_565/test_probe_565.py` · 원자료 `out/*.json` · `out2/북부청임도.json` · 모음 `agg.py` · `summ.py`.
## 0. 요약
1. 실무 단가산출(산근 블록)을 「단가산출」로 들이는 길([단가산출 만들기])은 **제목 매칭 · 별칭 · 기초 연결이 하나도 없음** — 블록마다 바탕 없는 SK + 엑셀 1 단위 단가 고정 한 줄(이음 모두 null). 여덟 파일 SK 206 개 모두 바탕 없음.
2. 맞춤(이름 · 근거 · 숫자 지문)은 **일위대가 줄 단위에서만** 돎 — 산근을 부르는 일위대가 줄을 M01 로직(기초)에 견줌 · 확인한 줄만 별칭 장부(만든 층 `실무자료/맞춤.json`)에 남음 · 장부 짝은 M01 로직 · M01 자재만(SK 못 가리킴).
3. 판정이 「맞음」(옵션 수준 ≤ 1)일 때만 체크 제안 → 단가산출 줄 735 중 체크 257(35 %) · 다른 점 158 · 후보 306 은 체크 안 됨 → 엑셀 숫자 고정 줄(연결 0).
4. 항목 추가된 실무 단가산출(엑셀에만 있는 장비 · 품 다름) = 「다른 점」 → 지금은 ① 고정 줄(값 남음 · 연결 잃음) 또는 ② 손으로 체크하면 가장 가까운 기초 로직 줄(차이 버림) 둘뿐 — **차이를 M02 SK(바탕 + 덮개 · 더한줄 · 뺀줄)로 만드는 길 없음**. SK 자료 꼴은 이미 그 표현을 받음.
5. 일위대가 연결(제안 그대로 만들 때): SC 줄 1,213 중 이어짐 376(31.0 %) · **안 이어진 고정 줄 823(67.8 %)** — 단가산출 줄 478 · 자재 128 · 노임 93 · 별도계상 79.
6. 고정 줄 이음 칸은 노임 · 자재 · 기계뿐 — 기초(로직) · SK 를 가리킬 칸 자체가 없음 · 노임 · 자재 이음은 단가까지 같을 때만(해 다른 문서 노임 93 줄 못 이음) · 기계 이음 없음.
7. 저장 · 셈 · 화면 · [끝내기] 어디에도 안 이어진 줄 막음 · 경고 없음(꼬리표 「고정」 · 비고 「손 단가」 뿐) · [끝내기] 뒤 HP · 블록 글이 지워져 다시 맞춤 못 함.
8. 공유 storage 의 불러온 일위대가 = 9 개뿐(1/3 셋 모두 이어짐 · 1/10 다섯 = 705-3 이전 판이라 엑셀 34 줄 중 26 줄 빠짐) · 불러온 SK 0 · 마스터 별칭 장부 0 줄.
9. 권함 = 일감 셋(SK 자동 만들기 서버 · 일위대가 연결 서버 · 화면 경고) + 물을 갈래 넷(D 절).
---
## A. 지금 흐름
### A-1. 단계
| 단계 | 하는 일 | 근거 |
| --- | --- | --- |
| 올림 | 마법사 ① 결과 층(기본 개인) · 결과 체크 = 일위대가(늘) · 「단가산출(산근 블록 · 바탕 없음)」 | `M02_MasterTemplete_Hopyo_Wizard.ts:104-119` |
| 읽기 | 일위대가 시트 → 호표 · 줄 · 갈래(단가산출 = 비고 「단산N참조」 · 자재 · 노임 · 기계 · 호표 · % · 별도계상) · 산근 블록 `글` | `M02_Hopyo_Excel.py:145-164` · `M02_Hopyo_Basis.py` 머리 |
| 이름 · 근거 차례 | 정리 이름 같음 · 씨앗 = 1위(엑셀 인용 조항이 다른 로직을 가리키면 후보) · 이름 점수 = 글자 두 개 묶음 Dice + 이름 같음 1 + 단위 0.15 + 산림 0.05 + 규격 글 0.5 · 뜻 낱말 안 겹치면 뺌 · 근거 후보(조항 같음 1.0 · 윗마디 0.9 · 앞 마디 0.5 · 직종 0.5) 합침 | `M02_Hopyo_Match.py:294-329` · `:391-431` · `M02_Hopyo_Basis.py` 머리 |
| 숫자 지문 · 판정 | 엑셀 블록 → 직종 품 · 장비 시간 · 자재 · 율 · 조항 지문 · 무게(인력 3 · 장비 2 · 조항 1.5 · 자재 1 · 이름 0.6 …) · 옵션 거꾸로 찾기 → 판정 맞음(수준 ≤ 1 = 0.5 % + 반올림 폭) · 다른 점(수준 2 = 3 % · 또는 직종 같음 + 조항 같음) · 후보 | `M02_Hopyo_Fit.py:35-55` · `M02_Hopyo_Verdict.py:80-88` · `M02_Hopyo_Option.py` 머리 |
| 체크 제안 | 판정 맞음 + 환산 배 확실(추정 아님)일 때만 | `M02_Hopyo_Line.py:134-146` |
| 만들기 | 체크한 줄 = 로직 줄 `{로직, 입력값, 별칭 = 엑셀 품명 40 자, 메모}` · 체크 안 한 줄 = 고정 줄(엑셀 숫자 · 빠짐 0) · 하위 호표 = SC 참조 · [모두 고정으로 들여오기] = 모든 줄 고정 | `M02_Hopyo_Build.py:243-297` · `:314-320` · `:489-` |
| 별칭 등록 | 확인한 줄만 → **만든 층**(마법사 고른 층) `실무자료/맞춤.json` · 열쇠 품명\|규격\|단위 → 짝 `[{로직\|자재, 입력값, 배, 몫}]` · 짝 = 돈 로직 · M01 자재만(SK 안 받음) · 읽는 차례 개인 → 회사 → 마스터 | `M02_Hopyo_Build.py:327-333` · `M02_Hopyo_Ledger.py:1-12` · `:154-175` |
| 시스템 별칭 | M01 별칭 장부 = 회사 · 개인 장부 모아 후보 · 시스템 관리자 승인 → 마스터 층 · 지금 마스터 `resources/master_template/실무자료/` 없음(0 줄) | `M01_MasterData_Alias.py:1-8` |
| 단가산출 만들기 | 산근 블록마다 SK 하나 · 바탕 null · 더한줄 = 블록을 부르는 **첫** 엑셀 줄의 1 단위 단가 고정 한 줄(이음 노임 · 자재 · 기계 모두 null) · 이름 = 블록 이름 · 구분 「실무자료」 · 맞춤 · 별칭 · 기초 연결 없음 | `M02_Hopyo_Sangeun.py:45-79` · `:82-103` · 시험 `test_718_1_hopyo_import.py` 끝 시험 |
| 끝내기 | HP · 격자 · 맞춤 캐시 지움 · SC · SK · 장부만 남음 → 블록 글 · 판정 근거 사라짐 | `M02_Hopyo_Store.py:140` · `Wizard.ts:218-233` |
- 「제목 매칭」 = 지금은 이름만이 아님 — 이름 · 근거 조항 · 숫자 지문 셋을 섞음. 1위 정확도 기록 = 처음 보는 파일 50 줄 86.0 % · 전부 177 줄 91.5 %(`docs/raw/plans/2026-11-01_plan_709-719.md:129`) · 골든 사람 126 줄 1위 ≥ 116(`resources/tester/test_m02_hopyo_golden.py`).
- 같은 산근 블록이 두 벌로 갈림 — 일위대가 SC 안 고정 줄과 [단가산출 만들기] SK 가 서로 참조하지 않음(`M02_Hopyo_Build.py` 안 sangeun · SK 글 0).
- [단가산출 만들기]는 일위대가 줄이 부르는 블록만 — 여덟 파일 블록 459 중 SK 206.
### A-2. 실측 — 여덟 파일 · 빈 층 첫 불러오기 · 서버 체크 제안 그대로
| 파일 | 호표 | 엑셀 줄 | 만든 SC 줄 | 로직(M01) | 참조(SC) | 고정·이음 | 고정·이음없음 | 고정 % | 자재칸(MT) | 전국자재(키 없음) | 단가산출 줄 맞음/다른 점/후보 · 체크 | SK 바탕없음/전체 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 북부청임도 | 68 | 415 | 328 | 110 | 7 | 0 | 210 | 1 | 44 | 50 | 122/86/60 · 110 | 49/49 |
| 북부청사방 | 27 | 201 | 195 | 55 | 2 | 2 | 135 | 1 | 4 | 3 | 56/26/57 · 55 | 45/45 |
| 거창 | 14 | 68 | 62 | 10 | 8 | 10 | 32 | 2 | 4 | 2 | 10/8/3 · 10 | 13/13 |
| 봉화 | 45 | 209 | 187 | 47 | 12 | 0 | 121 | 7 | 21 | 3 | 40/12/51 · 40 | 31/31 |
| 동부청영월(STmate) | 23 | 138 | 136 | 27 | 3 | 0 | 106 | 0 | 2 | 0 | 27/12/51 · 26 | 35/35 |
| 울진대흥 | 34 | 171 | 167 | 20 | 28 | 0 | 119 | 0 | 4 | 0 | 9/11/49 · 9 | 14/14 |
| 영덕계류 | 9 | 31 | 27 | 5 | 0 | 0 | 22 | 0 | 4 | 0 | 0/0/2 · 0 | 2/2 |
| 울진소광 | 25 | 117 | 111 | 12 | 18 | 0 | 78 | 3 | 6 | 0 | 7/3/33 · 7 | 17/17 |
| **합** | 245 | 1,350 | 1,213 | 286 | 78 | 12 | **823** | 14 | 89 | 58 | 271/158/306 · **257** | **206/206** |
- 단가산출 줄 고유(이름\|규격\|단위) 208 = 맞음 77 · 다른 점 45 · 후보 86 · 체크 72(35 %).
- 못 맞춘 것 처리 = 버리지 않음(705-3 빠짐 0) · 빈 연결도 아님 · **엑셀 숫자 고정 줄**로 들어감 · 사용자가 확인 창에서 손으로 고르면 로직 줄.
- 같은 이름이 별칭 장부에 쌓이면 두 번째부터 「별칭」 상태로 체크됨(`Line.py:338-353`) · 지금 마스터 장부 0 이라 첫 사용자는 위 수치 그대로.
## B. 「항목 추가된」 실무 단가산출 — 지금 무슨 일이 생기나
### B-1. 길 셋
| 길 | 결과 | 차이 |
| --- | --- | --- |
| [단가산출 만들기] | 바탕 null SK · 엑셀 1 단위 단가 고정 한 줄 | 값은 남음 · 기초 연결 0 · 세부 줄 구조 0 |
| 일위대가 줄 맞춤 → 판정 다른 점 · 후보 → 체크 안 됨 | SC 안 고정 줄(엑셀 노 · 재 · 경 그대로 · 이음 null) | 값은 남음 · 연결 0 |
| 사용자가 다른 점 줄을 손으로 체크 | 가장 가까운 기초 로직 줄 + 입력값(별칭 = 엑셀 품명) | 연결은 생김 · **엑셀에만 있는 줄 · 품 차이 버림**(메모 글 · `본뜬.실무수량` 만 남음 · `Build.py:28-29`) |
→ 「가장 가까운 기초에 이어 붙이고 차이 잃음」 또는 「자유 줄(고정)로 남음」 둘 중 하나 · 차이를 SK 로 만드는 길은 없음.
### B-2. 표본 — 북부청임도
**기초잡석채집,운반,다짐(발파암활용,덤프15톤,L=500m)** — 제1호표 3째 줄 · 산근 단산33
- 엑셀 블록 = 「산림사업표준품셈 12-12 준용」 · 1. 기초잡석 발파암 채집(굴착기 0.7 ㎥ · Q 26.95 × 0.9) · 2. 적사(굴착기 0.7 ㎥) · 3. 운반(덤프트럭 15 t · L 0.5 km) · 다짐(특별 · 보통인부).
- 우리 1위 = GC000110 기초지정(특별인부 · 보통인부 · 굴착기 0.2 ㎥ · 콤팩터/롤러) · 판정 「다른 점 — 엑셀만 장비 덤프트럭」 · 꼬리표 「기계 몫 GC000268 — 시간 = 엑셀 값」 · 인부 품 0.011 → 0.0111 같음.
- 결과 = 체크 안 함 → SC-000001 고정 줄(노 17,877 · 재 4,509 · 경 4,570 · 이음 null) + SK-000018(바탕 null · 같은 숫자 고정 한 줄) — 둘 서로 안 이어짐.
- 바라는 꼴(SK) = 바탕 GC000110 + 더한줄(굴착기 채집 · 적사 시간 · 덤프트럭 운반) + 덮개(인부 품) — 지금 없음.
**그 밖 「다른 점」 표본**(고유 15 중)
| 엑셀 줄 | 1위 기초 | 차이(엑셀 → 우리) |
| --- | --- | --- |
| 철근가공조립(현장) Type-Ⅰ(소량) | GC000207 + GC000206 | 철근공 4.2 → 4 · 보통인부 1.4 → 1.333 |
| 철근가공조립(현장) Type-ll | GC000207 + GC000206 | 철근공 2.67 → 3.529 · 보통인부 1.02 → 1.176 |
| 구조물되메우기(인력100%) | GF000113 되메우기 | 보통인부 0.1 → 0.01 |
| 큰돌채집운반(발생석 50 %) | GF000213 | 작업반장 0.039 → 0.0325 · 율 × 0.75 · 엑셀만 장비 집게 |
| 뒷채움돌채집운반뒷채움(발파) | GC000106 | 보통인부 0.039 → 0.0091 · 엑셀만 장비 덤프트럭 |
| 비탈면 보호공(평떼) | GC000143 잔디붙임 | 보통인부 0.0575 → 0.0267 |
| 콘크리트포장(인력) | GC000297 | 포장공 0.048 → 0.0533 · 보통인부 0.024 → 0.0267 |
| 도장(철재면2회) | GC000705 외 | 도장공 0.061 → 0.006(율 회) |
- 여덟 파일 다른 점 158 줄(고유 45) 모두 체크 안 됨 → 고정 줄.
- 금액 대조는 안 씀 — 판정 맞음 줄도 노임 해 차이로 약 10 % 갈림(숫자 판정은 품으로).
### B-3. SK 로 만들 재료 — 이미 있음
- 판정 응답 = 1위 로직 · 옵션 거꾸로 찾은 입력값 · 품(엑셀 · 우리 · 같음) · 꼬리표(엑셀만 · 우리만 장비 · 직종 품 다름 · 율) · 조합(덧 로직 · 기계 몫 GC000268) (`Verdict.py:61-77` · `Line.py:148-181` · `Combine.py` 머리).
- 엑셀 지문 = 절마다 노임 · 장비 벡터(`Finger.py` 머리 · `Shares`).
- SK 꼴 = 바탕 `{로직}` · 입력값 · 덮개 `{cid: {qty|배율, labor, material, expense}}` · 더한줄 `{종류 인력|재료|기계, 요소}` · `{종류 로직, 로직, 입력값}` · `{고정}` · 뺀줄 `[cid]` · cid = `kind:키#n`(`M02_Sangeun_Doc.py:5-18` · 이음 `docs/raw/plans/2026-11-01_plan_709-719.md:73`).
- 빠진 것 = 판정 차이 → cid 덮개 · 더한줄 · 뺀줄로 옮기는 함수 하나 · 일위대가 만들기가 SK 참조를 대상으로 받는 길.
## C. 일위대가 불러오기 연결
### C-1. 안 이어진 고정 줄 823 — 갈래 · 까닭
| 엑셀 갈래 · 상태 | 줄 | 많은 이름 | 까닭 |
| --- | --- | --- | --- |
| 단가산출 · 후보 | 306 | 고임돌채집 30 · 구조물터파기(토사) 27 · 잔토처리 27 · 고임돌채집및운반 26 · 막자갈채집 17 | 숫자 판정 안 맞음 → 체크 없음 |
| 단가산출 · 다른 점 | 158 | 철근가공조립(현장) 33 · 기초잡석채집,운반,다짐 18 · 뒷채움돌 11 · 큰돌채집운반 9 | 항목 추가 · 품 다름(B 절) |
| 자재 · 후보 | 123 | 드라이모르터 14 · P.V.C PIPE 10 · 면목 9 · PE필름 8 · 사각돌망태 8 | 이름 · 규격 한 품목으로 안 좁혀짐 |
| 노임 | 93 | 보통인부 45 · 석공 24 · 배관공 5 | 이음 = 단가까지 같을 때만(`M02_Hopyo_Fixed.py:71-87`) · 문서 해 노임 ≠ 지금 노임 |
| 별도계상 · 후보 | 46 | 레미콘 15 · 이형철근 13 · 파쇄암 6 | 지역 · 규격 변형 여럿 |
| 별도계상 · 없음 | 33 | 큰돌 21 · 조약돌 5 · 깬돌 4 | 우리 자재에 없음 |
| 호표 | 22 | 강관동바리 · 깬잡석메붙임 · 앵커볼트설치 | 하위 호표 단위 다름 → 참조 못 함 |
| % | 16 | 공구손료 · 켜쌓기적용 · 부자재 | 밑수가 다른 줄 금액 합이 아님 |
| 단가산출 · 맞음(체크 안 됨) | 14 | 강관동바리 8 · 돌망태형 옹벽설치 4 | 환산 배 추정 · 없음 |
| 기계 · 맞음 | 7 | 대형브레이카 · 굴삭기(타이어형) | 환산 배 |
| 자재 · 없음 | 5 | 못 · 도금비 · 떼 | 우리 자재에 없음 |
- 이어진 376 = 로직 286 · SC 참조 78 · 고정 이음 12(거창 노임 10 · 사방 노임 2 — 단가 같았던 것만) · 자재칸 89 별도 · 전국자재 58 = 이름 · 수량만(키 · 단가 없음).
- [모두 고정으로 들여오기] = 로직 0 · 이어짐은 이음(단가 같은 노임 · 자재)만.
### C-2. 공유 storage 의 불러온 일위대가(읽기만)
| 층 | 문서 | 엑셀 줄 | 이어짐 | 빠짐 · 고정 |
| --- | --- | --- | --- | --- |
| 1/3 개인(확인) | SC-000001 · 002 · 004 (+ 줄 감쌈 003) | 17 | 로직 12 · 참조 1 · 자재 2 · 전국 2(이름만) | 0 |
| 1/10 개인 | SC-000004 ~ 008 | 34 | 로직 6 · 자재 1 · 전국 1 | **26 빠짐**(705-3 빠짐 0 이전 판 · SC-000004 · 005 = 줄 0) |
| 마스터 · 회사 | 불러온 것 0 | — | — | — |
- 불러온 SK 0(1/3 SK 둘 = 손으로 만든 빈 시험 문서) · 고정 줄 0 · 지금 storage 는 표본이 작고 옛 판 → 판단 근거는 A-2 실측.
### C-3. 막음 · 경고 — 없음
| 자리 | 지금 | 근거 |
| --- | --- | --- |
| 저장 | 고정 줄 받음 · 이음 null 통과(키 머리 · M01 있음만 검사) | `M02_Labor_Doc.py:109-116` · `M02_Labor_Fixed.py:58-89` |
| 셈 | 고정 줄 = 손 단가로 셈 · 까닭 · 경고 없음 | `M02_Labor_Doc.py:519-521` |
| 화면 | 꼬리표 「고정」 · 비고 「손 단가(붙인 값)」 · 띠 · 세기 없음 | `M02_MasterTemplete_Labor_Grid.ts:57-69` |
| 목록 | 안 이어진 줄 수 없음 · SK 목록 「바탕 없음」 글만 | `M02_Labor_Ref.py:304-330` · `M02_MasterTemplete_Library_List.ts:5` |
| [끝내기] | 안 이어진 줄 물음 없음 · 끝낸 뒤 HP 지움 → 다시 맞춤 못 함 | `Wizard.ts:218-233` |
| 그릇 | 고정 이음 칸 = 노임 · 자재 · 기계뿐 — 기초(로직) · SK 를 가리킬 칸 없음 | `M02_Labor_Fixed.py:30` |
| 이음 규칙 | 노임 · 자재 = 단가까지 같을 때만 · 기계 이음 없음(ponytail 주석) | `M02_Hopyo_Fixed.py:71-87` |
| 다시 잇기 | 705-2 = 노임 · 자재만 · 단가산출 줄 없음 | `M02_Hopyo_Relink.py` 머리 · `KINDS` |
→ 「다른 파일에서 가져왔다고 내부 연결을 누락」 = 지금 기본 동작(제안 그대로 만들면 SC 줄 셋 중 둘이 연결 없음).
## D. 권함
### D-1. 항목 추가된 실무 단가산출 → M02 SK 자동
- 산근 블록마다 맞춤셈 캐시(`M02_Hopyo_Fit.result`)의 판정 · 옵션 · 품 · 꼬리표 · 조합을 읽어 SK 를 지음:
- 바탕 = 1위 기초(GF · GC) · 입력값 = 옵션 거꾸로 찾은 값.
- 덮개 = 직종 품 다름 → 그 인력 cid qty · 장비 시간 다름 → 그 기계경비 로직 cid qty · 율 다름 → 덧줄 율.
- 더한줄 = 엑셀만 장비 → 기계경비 로직 줄(GC000267 · GC000268 · 시간 = 엑셀) · 엑셀만 직종 → 인력 줄 · 못 푼 절 → 고정 줄(엑셀 숫자 · 노임 이음).
- 뺀줄 = 우리만 줄(우리만 장비 꼬리표).
- 판정별 = 맞음 → SK 없이 로직 줄(지금 그대로) · 다른 점 → 바탕 + 차이 SK · 후보 → 1위 후보를 바탕 제안으로 확인 창 · 고르지 않으면 바탕 없는 SK(지금 꼴) + 「연결 없음」 표시.
- 검산 = 지은 SK 품(직종 · 장비 시간) = 엑셀 품(판정 품 비교 같음) · 금액은 노임 해 차이로 판정에 안 씀.
- 일위대가 줄 = 그 SK 참조(고정 대신) → 산근 한 벌 · 두 벌 갈림 없어짐.
### D-2. 일위대가 연결 누락 막기
- 불러오기 단계: 체크 안 한 단가산출 줄 = 고정 대신 D-1 SK 참조 · 노임 고정 줄 = 이름으로 이음(값은 단가 책 새 판) · 기계 = EQ 이음 · [끝내기] 앞 「안 이어진 줄 N(갈래별)」 확인 창.
- 저장 단계: SC 정리에서 안 이어진 고정 줄 수 → 저장 응답 · 목록 summary 「연결」 칸 · 층별 막음 여부는 갈래(Q4).
- 화면: 일위대가표 띠 「M01 연결 없음 N 줄」 + 줄 [연결](721 새 고르기 창 재사용 · 출처 보존) · 목록 열 · SK 목록 「바탕 없음」을 경고색.
- 끝낸 뒤: SC · SK `본뜬` 에 블록 글 · 엑셀 지문을 남겨 HP 지운 뒤에도 다시 맞춤 가능.
### D-3. 일감(파일 경계)
| 일감 | 파일 | 시험 | 앞뒤 |
| --- | --- | --- | --- |
| ① 실무 단가산출 → SK 자동(서버) | `M02_Hopyo_Sangeun.py`(고침) · 새 `M02_Hopyo_SkPatch.py`(판정 → 바탕 · 덮개 · 더한줄 · 뺀줄 · cid 짝) · 읽기 `M02_Hopyo_Fit` · `M02_Sangeun_Doc.clean` | 새 시험(북부청 기초잡석 · 철근 Type-Ⅰ · 되메우기 = SK 품 = 엑셀 품) · `test_718_1_hopyo_import` · `test_715_sangeun_doc` | 먼저 |
| ② 일위대가 연결(서버) | `M02_Hopyo_Build.py`(빠짐 0 고정 → SK 참조 · 대상에 SK) · `M02_Hopyo_Fixed.py`(노임 이름 이음 · 기계 EQ) · `M02_Hopyo_Ledger.py`(짝 갈래 · Q3) · `M02_Labor_Ref.py` summary 「안 이어진 줄」 | `test_m02_hopyo_build` · `test_m02_hopyo_flow` · `test_705_3_hopyo_fixed` · `test_m02_hopyo_ledger` · `test_m02_labor_ref` | ① 뒤 |
| ③ 화면 경고 | `M02_MasterTemplete_Labor_Grid.ts`(띠 · [연결]) · `M02_MasterTemplete_Hopyo_Wizard.ts`([끝내기] 물음) · `M02_MasterTemplete_Library_List.ts`(열) | `test_m02_hopyo_screen` · ORCA 사진 | ② 뒤 |
### D-4. 사용자에게 물을 갈래
1. 「다른 점」 실무 단가산출(항목 추가 · 품 다름) — (가) SK 자동(바탕 기초 + 차이 = 엑셀 품 그대로) (나) 기초 그대로(품셈 값으로 바꿈 · 차이 버림) (다) 줄마다 확인 창에서 고름. 권함 = 가 + 확인 창에서 끌 수 있게.
2. 맞는 기초가 없는 단가산출(후보 · 고유 86) — (가) 바탕 없는 SK(엑셀 값) + 「연결 없음」 경고 · 나중에 [기본 로직 선택] (나) 기초를 고를 때까지 [끝내기] 막음. 권함 = 가.
3. 시스템 별칭 장부 짝이 담는 것 — (가) 기초 + 차이 묶음 통째(승인하면 모두에게 같은 SK 꼴) (나) 기초까지만(차이 SK 는 그 층에만). 권함 = 나(개인 SK 를 시스템 장부가 가리킬 수 없음 · 승인 단순).
4. 노임 고정 줄 이음 · 저장 막음 — (가) 이름 같으면 이음(값 = 단가 책 새 판) · 마스터 · 회사 층만 안 이어진 줄 저장 막음 (나) 지금처럼 단가 같을 때만 · 경고만. 권함 = 가.
---
남은 것: `tmp/brain_565/pt` · `pt2`(pytest 임시 층 · 약 48 MB)는 지우기 명령이 막혀 남음 · 브레인이 지움.
@@ -0,0 +1,50 @@
# 요구서 — 내역 19 · 20 · 단가산출 기초 · M02 단가산출 항목 추가 · 단위 환산 · 실무문서 연결
원문 = `사용자요구_내역서.md` 내역 19 · 20 · 근거 = 같은 폴더 `_분석_내역19-A_SK항목추가_기초.md` · `_분석_내역19-B_실무문서_연결.md` · 앞 일 = `요구서_내역12_단가산출로직_M02단가산출.md` · `요구서_내역16_M02정리_일위대가표_M01상세.md` · `docs/raw/plans/2026-11-01_plan_709-719.md` · `2026-11-02_plan_640-644_720-725.md`.
## 1. 요구 · 지금 · 고칠 것
| # | 요구 | 지금(조사) | 고칠 것 | PLAN |
| --- | --- | --- | --- | --- |
| 1 | M01 단가산출 로직 → 「단가산출 기초」 | 화면 글 13 파일 20 곳 + 「바탕 M01 로직」 3 곳 · 설명서 0 곳 | 화면 글만 바꿈 · 내부 열쇠 · 저장 꼴 · API 길 그대로 | 726 |
| 2 | 기초 = 1 기준단위 당 세부 항목 값이 정해짐(1 로 전부 표현한 값 아님) · 넣으면 옛 「기본 로직 선택」처럼 보임 | [항목 추가] 기초 = 「하위 로직」 한 줄 · 수량 1 · 단위 빈칸 · 세부 줄 · 품 고침 · 줄 빼기 · M01 개정 알림 없음(바탕일 때만) | 기초 = 세부 줄 펼침(바탕 꼴) · 여러 기초 = 인력 · 재료 · 경비 상자에 함께 + 짧은 출처 꼬리표(프레임 안 바뀌게) · 일위대가 · M02 단가산출 넣기 = 한 줄 | 727 |
| 3 | 고르기 창 기초가 옵션별 여러 줄 · 옵션은 넣은 뒤 조작 | 같은 로직을 옵션 축마다 펼침(1,461 → 10,053 줄 · GF000099 3 줄) · 고른 줄 옵션을 버리고 기본값으로 넣는 흠 | 기초마다 한 줄 · 넣은 뒤 공통 옵션 칸에서 고름 · 고른 옵션 저장 | 727 |
| 4 | 기초 밖 항목 = 기본 기준단위 값 1 그대로 | 인력 · 재료 · SK · 일위대가 = 수량 1(맞음) | 그대로 | 727 |
| 5 | [기본 로직 선택] 단추 의미 없음 | 단추로 바탕 쓴 SK 0 개 · 바탕 꼴은 단가산출로 저장 · 일위대가 줄 고침 · B09 굳힘이 씀 | 단추 걷음 · 바탕 꼴은 둠(항목 추가 기초가 대신) | 727 |
| 6 | 단위 환산(내역 12 「단위 변환 로직」 미반영) · 단위를 바꾸면 그 단위로 바꾸는 로직 · 맞춰 제안하되 바꿀 수 있게 | 단위 모듈 한 벌(712-2)은 있으나 SK 단위를 바꿔도 값 환산 없음 · 더한줄 기초는 ÷배 없음 → 기준단위 앞 수 ≠ 1 기초 83 개 10~10,000 배 어긋남 · 돈 아닌 기초 21 개 넣으면 SK 통째 오류 | SK 단위 처음 값 = 기초 원문 기준단위(예 100본) 제안 · 바꾸면 환산(같은 성격 = 배 · 다른 성격 = 환산 계수 · 단위중량 표) · 세부 값 · 계가 그 단위 · 배 흠 고침 · 돈 아닌 기초는 고르기 창에서 뺌 | 728 |
| 7 | 실무문서 단가산출 = 제목 · 로직 · 이름 매칭 → 기초 연결 · 별칭(승인 뒤 자동) · 대부분 유사하지만 추가 · 변경된 외부 단가산출 조심 | 단가산출 불러오기에 매칭 · 별칭 · 기초 연결 없음 — 산근마다 바탕 없는 SK + 엑셀 고정 한 줄(206 개 모두 바탕 없음) · 맞춤은 일위대가 줄에서만(체크 35 %) · 「다른 점」 158 줄 = 고정 줄(연결 없음) 또는 가까운 기초에 잇고 차이 버림 | 매칭 → 비교 → 같으면 기초(별칭 제안 · 승인 → 다음 자동) · 다르면 SK = 기초 + 덮개 · 더한줄 · 뺀줄(엑셀 품 보존) · 맞는 기초 없으면 사용자가 고름 | 729 |
| 8 | 일위대가 = 기초 · M01 요소 조합 · 가져와도 내부 연결 누락 금지 · 안 이은 줄은 사용자가 고름 · 연결 안 되면 못 만듦 | 만든 일위대가 줄 1,213 중 이어짐 31 % · 고정 줄 68 %(단가산출 478 · 자재 128 · 노임 93 · 별도계상 79) · 노임 = 단가까지 같아야 이음 · 기계 이음 없음 · 막음 · 경고 없음 | 모든 줄 = 기초 · M01 요소 · SK 연결 · 노임 이름 이음 · 기계 이음 · 남은 줄 = 마법사에서 사용자가 고름 · 남으면 [끝내기] 막음 | 729 |
## 2. 사용자 확정 (내역 20)
1. 기초 넣는 꼴 = 삭제한 [기본 로직 선택]처럼(세부 줄) · 여러 기초 = 인력 / 자재 / 경비로 나눠 함께 · 출처 꼬리표는 좋으나 길어져 프레임을 바꾸지 않게 · 단가산출에 일위대가를 넣으면 한 줄.
2. 단위 환산 = 단위를 바꾸면 그 단위로 바꾸는 로직 · 맞춰 제안하되 바꿀 수 있게.
3. 다른 단가산출 = 자동이 기본 · 로직 · 이름 등으로 매칭 · 옛 요소 값 비교 · 사용자가 맞는 기초를 이으면 별칭 · 승인 뒤 다음부터 자동 · 추가 · 변경된 외부 단가산출을 조심(차이를 잃지 않음).
4. 연결 누락 = 안 이은 줄은 사용자가 고름 · 연결 안 되면 못 만듦.
## 3. 정함(브레인) — 사용자가 바꿀 수 있음
1. 이름 바꿈 범위 = 「단가산출 로직」 20 곳 + 「바탕 M01 로직」 3 곳 · 「로직」 홀로 쓴 글(약 50 곳)은 그대로 · 서버 까닭 글 하나 포함.
2. 넣은 뒤 고른 옵션 = SK `입력값` 저장(내역 17-2 M02 변경 항목) · 그 SK 를 부르는 일위대가 · B09 도 그 옵션으로 셈.
3. 저장 꼴 = 첫 기초는 지금 바탕 꼴 · 둘째 기초부터 더한줄 기초를 세부 줄로 펼침(줄 열쇠 cid 규칙 확장) · 기존 문서 · B09 굳힘 그대로 읽힘.
4. 출처 꼬리표 = 기초 둘 이상일 때만 · 짧은 이름(원문 번호 「9-12-1」 꼴) · 칸 폭 고정 · 넘치면 말줄임 + 풍선.
5. 단위 환산 = 같은 성격(개수 · 길이 · 넓이 · 부피 · 무게)은 배로 자동 · 다른 성격은 환산 계수 칸(부피 ↔ 무게 = 단위중량 표 CC000337) · 712-2 단위 모듈 한 벌만 씀.
6. 별칭 장부 짝 = 기초까지만(차이 SK 는 그 층 문서) · 승인 길은 M01 별칭 장부(716) 그대로.
7. 노임 이음 = 이름 같으면 이음(값 = 지금 단가 책) · 기계 = M01 기계(EQ)로 이음 · 자재 후보 여럿 = 마법사에서 고름.
8. 고르기 창 옛 창(B09 단가연결 · 불러오기 `Labor_Pick.ts`)의 옵션 버림 흠도 같이 고침(같은 까닭).
## 4. 단계 · 창 (PLAN 726~729)
| 절 | 무엇 | 창 · 모델 |
| --- | --- | --- |
| 726 | 「단가산출 기초」 이름 바꿈 | sub6 · Sonnet |
| 727 | 고르기 창 기초 한 줄 · 기초 세부 펼침 · 여러 기초 · 출처 꼬리표 · 옵션 저장 · [기본 로직 선택] 걷음 | sub7 · Opus |
| 728 | 단위 환산 · 배 흠 · 돈 아닌 기초 뺌 | sub3 · Opus(728-1 순수 함수 먼저 · 728-2 는 727-2 뒤) |
| 729 | 실무 단가산출 → 기초 · SK 자동 · 일위대가 연결 · 안 이은 줄 고름 · [끝내기] 막음 | sub1 · Opus(729-1 · 729-2 서버) → sub5 · Opus(729-3 화면 · 729-2 뒤) |
## 5. 검증 기준
- 고친 대상 시험 · typecheck 0 · 짝 거울 시험 · 기존 SK · 일위대가 · 구조물 조합 · 공사 금액 전후 같음(바꾸는 지시 밖).
- 표본: GF000099(㎥ · 옵션 셋) · GF000287 단목베기(원/100본 → 본 환산 1,538.89) · GC000421(원/10㎡) · 기초 둘 넣은 SK · 일위대가 넣은 SK.
- 실무 표본 = 북부청 기초잡석채집 · 운반 · 다짐(엑셀만 덤프트럭) · 철근가공조립 · 되메우기 — SK 품 = 엑셀 품 · 일위대가 안 이은 줄 0 아니면 [끝내기] 막힘.
- ORCA(자기 포트 · 자기 개인 층 · 임시 이름 · 끝나면 지움) · 밝음 · 어두움 · 1366 폭 꼬리표 넘침.