Merge remote-tracking branches 'origin/sub_laptop_1' and 'origin/sub_laptop_3' into sub_desktop_1
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
# 분석 — B08(수량)·B09(견적)을 초기화할 수 있나 (일감 36)
|
||||
|
||||
읽기만 함 · 코드·데이터 하나도 안 고침. 센 자리 = 이 창(sub_laptop_1 · dev 8dfd7105).
|
||||
|
||||
한 줄 답 — **B09 는 절반 넘게 마스터로 갈아끼울 수 있음(품셈·단가 11,872줄) · B08 은 거의 못 갈아끼움(수량 산출 규칙 7,805줄 + 구조물도 2,643줄은 마스터에 자리 자체가 없음)**. 그래서 「둘 다 갈아엎기」 보다 **B09 의 단가 길만 마스터로 옮기고 · B08 은 수량 규칙을 남긴 채 겉(인계·단가 붙이기)만 다시 짜는 것**이 손해가 적음.
|
||||
|
||||
## 1. 크기 — 파일과 줄
|
||||
|
||||
| 방 | 파이썬 | 화면(ts) | 합 | 파일 수 |
|
||||
|---|---|---|---|---|
|
||||
| B08_Quantity | 19,617 | 6,834 | **26,451** | 85(py 61 · ts 24) + 옛 구현 zip 1 |
|
||||
| B09_Estimation | 22,615 | 5,892 | **28,507** | 111(py 83 · ts 28) |
|
||||
| 합 | 42,232 | 12,726 | **54,958** | 196 |
|
||||
|
||||
딸린 것 — 서버 길 B08 25 · B09 31(`main.py:647~659` 에 라우터 13 등록) · 시험 191 파일 26,943줄(`test_b08_*` 91/14,752 · `test_b09_*` 69/7,740 · 그 밖 31).
|
||||
|
||||
### B08 을 하는 일로 가른 것
|
||||
|
||||
| 묶음 | 줄 | 무엇 |
|
||||
|---|---|---|
|
||||
| 수량 산출 규칙 | 7,805 | 토적표·사면 면적/길이·구조물 원단위 전개(돌쌓기·기슭막이·BOX·포장·녹화)·배수관·준비공·운반 가중평균·자재총괄 할증·암 가르기·거푸집 횟수 |
|
||||
| 화면 | 6,834 | 수량 페이지 한 장 + 토적표·자재·집계 그리드 · 구조물도 탭 · 산출조건 패널 |
|
||||
| 공종 마스터 만들기 | 2,818 | 산림 476표·건설 2,192표를 공종 축(`FW-`·`CW-`)으로 정규화하는 **한 번 돌리는 스크립트** |
|
||||
| 구조물도(표준도) | 2,643 | 양식 읽기·상단 그림·장 조판·제원 입력·라이브러리(개인/회사/프로그램) |
|
||||
| B09 인계 | 2,585 | 수량 줄 → 내역 줄로 넘기는 계약(두 벌: 작업공종·자재) |
|
||||
| 라우터 | 2,467 | 조회 15 · 저장 10 |
|
||||
| 단가 붙이기 | 736 | 구조물도 하단 일위대가 미리보기 · 밑수 단위 대조 |
|
||||
| 그 밖 | 563 | 근거 사전·화면 문구 |
|
||||
|
||||
### B09 를 하는 일로 가른 것
|
||||
|
||||
| 묶음 | 줄 | 무엇 |
|
||||
|---|---|---|
|
||||
| 품셈 읽기·단가 산출 | **11,872** | 자원 축(표 모양 11 갈래 읽개 3,550) · 단가산출/일위대가 조립 1,767 · 기계경비·운전경비·시공능력 2,288 · 품 할증·소모재료·작업조 · 공종별 특수 규칙 10(유로폼·치즐·화약·암손료·표토·파쇄·풀베기·종자·수송·철근) |
|
||||
| 서식·단계 | 8,929 | 예산내역서 조판 1,677 · 원가계산서 4형식 1,442 · 법정경비 546 · 목록표 16종 564 · 자재대·중기경비계산서·산출기초·설계서 구성표 · 계약/실행/기성 1,078 · 사용자 고친 값 338 · 저장 스냅샷 231 · 근거 사전 778 · 끝수 216 |
|
||||
| 라우터 | 1,814 | 조회 21 · 저장 10 |
|
||||
| 화면 | 5,892 | 탭 19 + 공용 표·틀 |
|
||||
|
||||
## 2. 어떻게 얽혀 있나
|
||||
|
||||
```
|
||||
B05(노선·구조물 정본) B06(횡단 설계)
|
||||
structures.json · pipe_points.json 설계선·벽·관
|
||||
│ │
|
||||
└──────────────┬───────────────┘
|
||||
▼
|
||||
B08 수량 산출
|
||||
(토적·사면·구조물 원단위·배수관·준비공·운반·자재총괄)
|
||||
│ GET /quantity/handoff ← 두 벌
|
||||
│ ① work_items(공종 축 · 내역 줄이 됨)
|
||||
│ ② materials(자재 축 · 공종코드 안 붙임 · 할증 전/후 둘 다)
|
||||
▼
|
||||
B09 원가계산
|
||||
(자원 축 → 단가산출 → 일위대가 → 내역서 → 원가계산서 → 단계 넷)
|
||||
```
|
||||
|
||||
- **B08 → B09** = 인계 한 길. 계약이 문서로 박혀 있음(`B08_Quantity_Engine_Handoff.py` 머리 40줄) — 두 벌로 냄 · 반영률은 B08 에서만 곱하고 `quantity`·`quantity_gross`·`application_ratio_pct` 셋을 함께 실음 · 내역에 안 서는 줄은 빼지 않고 `in_bill=false` 로 실음 · 못 이은 줄은 `unmatched_work_items` 로 실음 · 갈래 세트(`ground_class_set`)를 실어 인계본만으로 내역이 서게 함. **다시 짜도 이 계약은 그대로 쓸 값어치가 있음.**
|
||||
- **B09 → B08(거꾸로)** 도 있음 — 구조물도 하단 일위대가 미리보기가 B09 의 `PriceBook`·`UnitPrice`·`ResourceAxis`·`Rounding`·`Router._build_for` 를 부름(5 자리). 즉 **둘이 서로 부르는 고리**라 한쪽만 들어내면 다른 쪽이 멈춤.
|
||||
- **B08 ← B05·B06** — 횡단 설계(`get_cross_section_designs`) · 노선 문맥 · 구조물 정본 읽기/쓰기 · 관 벽 최소높이 · 지반 경사. B06 화면(`B06_Section_Structure_Layouts.ts`)과 `common_util_masonry_slope.ts` 는 **B08 파이썬과 짝**(한쪽만 고치면 횡단도와 수량이 갈림).
|
||||
- **저장되는 것** — B09 는 프로젝트 폴더 `<프로젝트>/B09_Estimation/v1/price_book.json`(+`_manifest.json`)에 **그때 쓴 단가를 사본으로** 박음(3년 뒤에도 같은 금액). B08 은 구조물도 양식·제원을 프로젝트 폴더에, 산출 조건은 DB 에, 확정은 워크플로 stage 5(B08)·6(B09) 로. 기준자료는 `resources/master_data/old/`(37 파일 20MB) · `resources/master_data/ref/` 데이터 7 개 · `data_aliases` · `data_masonry`.
|
||||
|
||||
## 3. 마스터로 대신할 수 있는 것 · 없는 것
|
||||
|
||||
지금 마스터(`resources/master_data/*.json`) — 로직 1,354(건설 1,103 · 산림 251) · 소요량 2,535 · 계수 498 · 인력 378 · 기계 654 · 재료 31,011 · 요율 19 · 환율 5 · 일위대가 조합 1.
|
||||
|
||||
### 대신할 수 있음
|
||||
|
||||
| 지금 코드 | 줄 | 마스터에서 |
|
||||
|---|---|---|
|
||||
| B09 자원 축 읽개 11 개 | 3,550 | 로직의 호표 줄이 이미 자원(인력·재료·기계)을 가리킴 — 표 모양을 읽을 까닭이 없어짐 |
|
||||
| B09 단가산출·일위대가 조립 | 1,767 | 로직 계산(`master_formula.run`)과 일위대가 조합(UA) |
|
||||
| B09 기계경비·운전경비·시공능력 | 2,638 | 계수·로직 건설품셈 08장 계열(후보 있음 · 시공능력 밑값은 확인 필요) |
|
||||
| B09 품 할증·소모재료·작업조·특수 공종 10 | 약 1,900 | 계수·소요량·로직 각 장 |
|
||||
| B09 요율 읽기 | 271 | `요율_조달청제비율.json` — **값뿐 아니라 처리규칙(끝수·안전관리비 A/B·관급 천원올림·이윤 밑수·규모 구간)까지 데이터에 있음** |
|
||||
| B09 자재 카탈로그·수동 단가 | 391 | `재료_자재품목`·`재료_품셈재료` |
|
||||
| B08 공종 마스터 만들기 | 2,818 | 원문 표는 이미 마스터가 정규화해 갖고 있음 — 다시 만들 까닭 없음 |
|
||||
| B08 단가 붙이기 | 736 | 로직·조합 계산 길 |
|
||||
|
||||
합쳐 **대략 15,400줄**(B09 11,900 · B08 3,550)이 「마스터를 부르는 얇은 층」으로 줄어들 자리 — 전체 54,958줄의 28 %.
|
||||
|
||||
### 대신할 수 없음 — **이 쪽이 중요**
|
||||
|
||||
1. **수량 산출 규칙 7,805줄** — 토적표·사면·구조물 전개·배수관·준비공·운반·자재총괄 할증. 마스터는 **단가 쪽**만 담고 있어 「치수 → 물량」 규칙을 둘 자리가 아예 없음. 남기든 다시 짜든 **이 지식은 코드나 새 「수량 로직」 그룹으로 반드시 살려야 함**.
|
||||
2. **구조물도(표준도) 2,643줄** — 양식·상단 그림·장 조판·라이브러리. B07 도면이 이것을 부름.
|
||||
3. **공종 축이 없음** — 지금 코드는 공종코드(`FW-`·`CW-`·`FP-`)로 잇고, 수량 줄 ↔ 공종 다리는 `ref/공종_수량연결_실무_*.json` 에 데이터로 있음. 마스터에는 **로직 키(GC/GF)와 조합 키(UA)만** 있고 「공종 = 어느 로직」 대응표가 없음. **갈아끼우기의 첫 막힘돌.**
|
||||
4. **원가계산서 서식 4형식 · 예산내역서 조판 · 목록표 16종 · 설계서 구성표** — 차례가 전부 코드 안에 있음(데이터 아님).
|
||||
5. **끝수·소수자리** — 줄 금액 원 단위 버림 · 관급자재대만 천원 올림 · 종목별 수량 소수자리(품셈 1-2-2). 요율 파일의 처리규칙에 일부만 있음.
|
||||
6. **제비율 적용 절차** — 요율 값은 마스터에 있으나, 대상액 규모 구간 판정 · 안전관리비 A/B 뒤집힘 · 관급 부가세 제수 같은 **적용 순서**는 코드(법정경비 546 · 원가 엔진 841).
|
||||
7. **단계 넷(계약·실행·기성·준공) · 사용자 고친 값 · 단가 사본 저장** 1,650줄 — 마스터와 무관.
|
||||
8. **근거 사전 1,251줄**(B08 473 · B09 778) — 「이 숫자가 어디서 왔나」. 마스터는 출처를 줄에 달지만 화면 설명 글은 따로.
|
||||
|
||||
## 4. 지우면 같이 깨지는 곳
|
||||
|
||||
- `main.py:63~76 · 647~659` — 라우터 13 개 등록(B08 5 · B09 8).
|
||||
- 화면 — `A00_Common/router.ts` 의 두 쪽(`B08_QUANTITY`·`B09_ESTIMATION`) · 워크플로 단계 막대 · B09 탭 19.
|
||||
- **B07 도면 3 자리** — 표준도 도면이 `B08_Quantity_Engine_StructureFigure`·`_StructureSheet` 를 부르고, 횡단 수량이 `Engine_SlopeArea`·`_SlopeLength` 를 부름.
|
||||
- **B06·B05 화면 3 자리** — 구조물 배치 ts 가 B08 셈법을 전제로 씀 · `common_util_masonry_slope.ts` 는 B08 파이썬과 짝 · B05 배수시설 칸이 `ref/수량_사방기슭막이치수` 를 바로 읽음.
|
||||
- `common_util` 3 개 — 노드 묶음(`old/` 통째를 씀) · 공종 열쇠 · 공종 연결.
|
||||
- `Z01_MasterData` 3 개 2,082줄 — 옛 마스터 화면이 `old/` 이름표·공종 마스터·기계를 읽음.
|
||||
- 시험 191 파일 26,943줄(그 가운데 31 개는 B05·B06·B07·Z01 이름으로 되어 있어 눈에 안 띔).
|
||||
- 이미 조사된 표가 있음 — `ref/_걷을_옛코드.md`(어느 파일이 `old/`·`ref/` 의 무엇을 읽고 누가 부르는지 · 새 마스터 후보가 있는지 · 걷는 순서 5 단계). **이번 분석과 어긋나는 데 없음 · 그 표를 그대로 씀.**
|
||||
|
||||
## 5. 압축해 `old` 로 옮길 때 남길 것
|
||||
|
||||
코드보다 **글과 데이터**가 값어치 있음. 지우면 다시 못 만드는 것 차례로 —
|
||||
|
||||
1. **인계 계약** — `Engine_Handoff.py` 머리 40줄(두 벌 · 반영률 한 곳 곱하기 · `in_bill` · 갈래 세트 · 못 이은 줄). 규칙 글로 뽑아 `ref/` 에.
|
||||
2. **서식 차례** — 원가계산서 4형식 · 예산내역서 줄 차례 · 목록표 16종 · 설계서 구성표(별표2 (5)(가)) · 중기경비계산서 · 산출기초. 지금은 코드 안 배열이라 **JSON 서식표로 뽑아 두면 그대로 다시 씀**.
|
||||
3. **끝수·소수자리 표**(줄 버림 · 관급 천원 올림 · 종목별 자리).
|
||||
4. **제비율 처리규칙** — 이미 `요율_조달청제비율.json` 에 있고 거울 시험(`test_b09_rate_rules_mirror.py`)이 지킴. **그 시험은 살려 둘 것.**
|
||||
5. **판정 까닭이 적힌 머리글** — B08·B09 파일 머리에 「왜 이렇게 정했나 · 브레인 판정 날짜」가 촘촘함(이중계상 경계 · 무대 · 암 구성비 · 임목폐기물 따위). 코드를 압축하면 **이 글이 같이 사라짐** — 공종별 규칙 글로 걷어 `ref/` 에 남길 것.
|
||||
6. **시험은 지우지 않음** — `test_b08_*` 91 개는 수량 규칙의 판정값 창고라 다시 짜도 그대로 맞대 볼 수 있음.
|
||||
7. **실무 산출물은 이미 있음** — `resources/knowledge/original/실무문서/` 의 내역+수량 xlsx 여섯 현장(울진·거창·장수·진안·봉화·영월). 다시 짤 때 **금액 맞대기 기준**.
|
||||
8. 데이터(`old/` 37 · `ref/` 7)는 코드와 따로 — 코드만 압축하고, 데이터는 `_걷을_옛코드.md` 의 이관 표를 따름.
|
||||
9. 앞선 전례 — `B08_Quantity/0_old_260726_codex.zip`(71KB)처럼 **폴더 안에 zip 하나로 두는 방식**이 이미 쓰인 적 있음.
|
||||
|
||||
## 6. 다시 짜는 큰 차례 (제안)
|
||||
|
||||
```
|
||||
① 공종 축부터 로직 키·조합 키를 「공종」으로 삼고,
|
||||
B08 수량 줄 → 로직/조합 키 연결표를 마스터 ref 에 데이터로
|
||||
(지금 공종_수량연결_실무 가 하던 구실 · 코드 아님)
|
||||
② 단가 길을 갈아끼움 B09 품셈·단가 11,872줄 → 마스터 호출 얇은 층으로
|
||||
(자원 축 읽개·기계경비·특수 공종이 통째로 없어짐)
|
||||
판정 = 실무 xlsx 여섯 현장과 금액 맞대기
|
||||
③ 수량은 남김 B08 Engine_* 7,805줄은 그대로 두고 겉(인계·단가 붙이기)만 새로
|
||||
나중에 「수량 로직」 그룹을 마스터에 둘지 따로 정함
|
||||
④ 서식을 데이터로 원가계산서 4형식·목록표 16종·내역서 차례를 JSON 서식표로
|
||||
⑤ 단계·저장은 얇게 계약·실행·기성·준공 · 사용자 고친 값 · 단가 사본
|
||||
⑥ 걷기는 마지막 _걷을_옛코드.md 의 5 단계 차례대로 · old/·ref/ 삭제는 맨 끝
|
||||
```
|
||||
|
||||
- ②를 먼저 끝내야 「마스터가 실무 금액을 낼 수 있나」가 증명됨 — 증명 전에 코드를 지우면 되돌릴 자리가 없음.
|
||||
- ①의 연결표가 없으면 ②가 못 섬(로직을 어느 내역 줄에 붙일지 모름). **가장 먼저 사용자와 정할 것 = 공종 이름을 로직 키로 부를지, 조합 키로 부를지.**
|
||||
- B08·B09 가 **서로 부르는 고리**라, 손대는 차례는 「B09 단가 → B08 단가 붙이기 → B08 인계」로 한 방향씩 끊는 것이 안전함.
|
||||
@@ -0,0 +1,94 @@
|
||||
# 로직 컨테이너 통합 분석 — 옛 「단가산출 로직」 삭제 · 「로직 개선 시험」 → 「단가산출 로직」
|
||||
|
||||
분석만 — 코드·데이터 안 고침. 기준 = sub_laptop_3 · dev 8dfd7105.
|
||||
|
||||
## 한눈에
|
||||
|
||||
- 옛 컨테이너 전용 파일 = **`UI_Logic_Page.ts` 하나**(430줄). 나머지 `UI_Logic_*` 는 새 컨테이너도 씀.
|
||||
- 새 컨테이너(`UI_LogicLab.ts`)는 옛 파일 `Logic_Api` · `Logic_Calc` · `Logic_List` · `Logic_Text` · `Logic_Edit` · `Logic_Pick` · `Logic_Note` · `Logic_Style.css` 를 그대로 가져다 씀 → 이 파일들은 **지우지 않음**.
|
||||
- 서버 길 · 시험 · 다른 화면(B08·B09 등) 걸림 **없음**.
|
||||
- 지우면 잃는 기능 **둘**(아래 ④) — 사용자 확인 필요.
|
||||
|
||||
## ① 파일 가르기
|
||||
|
||||
| 구분 | 파일 |
|
||||
|---|---|
|
||||
| 옛 전용 | `UI_Logic_Page.ts` |
|
||||
| 새 전용 | `UI_LogicLab.ts` · `_Copy` · `_Detail` · `_Formula(.ts/.css)` · `_Modal` · `_New(.ts/.css)` · `_New_Find` · `_New_Text` · `_New_Var` · `_Pill(.ts/.css)` · `_Text` · `_Style.css` |
|
||||
| 둘 다 씀 | `Logic_Api` · `Logic_Calc` · `Logic_List` · `Logic_Text` · `Logic_Edit`(새 쪽 자체 로직 편집기 · 숫자 서식) · `Logic_Pick`(요소 찾기 창) · `Logic_Note`(표 읽기 · 풀이 — 모달이 씀) · `Logic_Style.css`(둘 다 import) · `UI_Cells`(`Logic_List` 경유) |
|
||||
| 화면 뼈대 | `UI_Page.ts`(옛·새 둘 다 엶) · `UI_Side.ts`(패널에 옛·새 두 절) |
|
||||
|
||||
서버 길(`/api/m01/…`)
|
||||
|
||||
- 옛 컨테이너가 쓰는 길 = `/logics` · `/subs?group=로직` · `/logic` · `/groups/로직/files` · `/calc` · `/text` · `/save` · `/elements` · `/pick` · `/materials`.
|
||||
- 새 컨테이너 = 위에서 `/groups/로직/files` 만 빼고 전부 + `/logic/copy` · `/logic/formula` · `/logic/formula/save` · `/logic/formula/preview` · `/logic/draft`.
|
||||
- 옛 전용 길 = `/groups/로직/files`(옛 [새로 만들기]에서 「파일 고르기」용) 하나 — 이 길은 그룹 공용이라 시험(`test_m01_api.py` 154줄)도 씀 → **서버는 안 지움**.
|
||||
- 어느 화면도 안 부르는 서버 길(`/logic/new` · `/logic/edit` · `/logic/delete`)은 이번 삭제와 무관(이미 그랬음).
|
||||
|
||||
## ② 지워도 되는 것
|
||||
|
||||
옛 컨테이너만 쓰는 것
|
||||
|
||||
- `UI_Logic_Page.ts` 통째.
|
||||
- `UI_Logic_Api.ts` `fetchLogicFiles`(`Logic_Page` 만 부름) · 타입 `LogicFile`(같은 곳 · 다른 곳 쓰임 없으면 함께).
|
||||
- `UI_Logic_Text.ts` `Bar_New`(`Logic_Page` 만 씀).
|
||||
- `UI_Logic_Edit.ts` 의 `isNew` · `files` · `onFile`(옛 새 로직 「파일 고르기」 — 새 쪽은 `isNew:false · files:[] · onFile:()=>undefined` 를 넘김). 지우면 `head()` 의 `choice(...)` 가지도 같이 지워짐.
|
||||
- `UI_Logic_Style.css` 의 옛 옆칸 규칙 — `.m01-logic:has(> .m01-logic__calc:not([hidden]))`(19–21 · 26–29) · `.m01-logic__calc` 묶음(32 · 38 · 46–50 · 136–140). 새 컨테이너의 시험 계산은 상세 안 `m01lab__calc` 라 옆칸 `<aside>` 가 없음. (`.m01-logic__calc-out` 은 `Logic_Calc` 가 씀 — 남김)
|
||||
- `UI_Page.ts` 의 `logicHost` · `logicMounted` · `logicHandle` · `LogicHandle` import · `showMode("logic")` 가지 · `openLogicTab` 안 `mountM01Logic` 부름.
|
||||
- `UI_Side.ts` 의 옛 절(`logicHost` · `LOGIC_ID` · `onLogic`) — `SideHandle.logicHost` 는 이름을 새 컨테이너 것으로 넘김(③).
|
||||
- `ui_template/ui_template_locale_m1.ts` `M01_GroupLogic`(새 이름을 여기 두면 남김 — ③).
|
||||
- 옛 캐시 칸 `sessionStorage` `m01_logic_drafts` · `m01.filter.로직` — 코드에서 안 읽게 되면 죽은 칸(세션 안 저장이라 지울 것 없음).
|
||||
|
||||
옛 컨테이너와 무관하게 이미 죽은 것(같이 치워도 됨 · 별개로 둬도 됨)
|
||||
|
||||
- `UI_Logic_Pick.ts` `pickPanel` · `swappedRow` · `hasPickable` · `Swaps`(134–286줄 · 밖에서 부르는 곳 0).
|
||||
- `UI_Logic_Note.ts` `buildNote` · `NoteOptions`(206–286줄 · 밖에서 부르는 곳 0 — 같은 파일의 `loadTable` · `matchRow` · `explain` · `relatedFinds` 는 새 쪽이 씀).
|
||||
- `UI_Logic_Text.ts` 문구 23개(`List_*` · `Flow_*` · `Edit_On/Off/Add*` · `Stop_*` 등 · 직접 호출 0) — `plainReason` 이 `Stop_*` 를 글자로 부를 수 있어 지우기 전 확인.
|
||||
|
||||
시험
|
||||
|
||||
- 옛 컨테이너를 겨냥한 시험 **없음**(`resources/tester/test_m01_*.py` 는 서버만 · 화면 `.ts` 를 안 읽음). 화면 확인은 `npm run typecheck` + ORCA.
|
||||
|
||||
## ③ 둘 다 쓰는데 옛 이름인 것(이름만 바꿈)
|
||||
|
||||
| 자리 | 지금 | 바꿀 것 |
|
||||
|---|---|---|
|
||||
| 패널 절 제목 | `Logic_Text` `Lab_Title` = 「로직 개선 시험」 | 「단가산출 로직」(`M01_GroupLogic` 를 다시 쓰거나 `Lab_Title` 글을 바꿈 — 한 곳만 남김) |
|
||||
| 알약 돌아가기 | `LogicLab_Text` `Pill_Back` 「← 로직 개선 시험으로 돌아가기」 | 「← 단가산출 로직으로 돌아가기」 |
|
||||
| `SideHandle` | `labHost` · `onLab` · `LAB_ID "로직시험\|"` | `logicHost` · `onLogic` · `LOGIC_ID`(옛 이름이 비면 그 이름 재사용) |
|
||||
| 거름 기억 | `m01.filter.로직시험` · id `로직시험\|` | 그대로 둬도 동작(사용자에게 안 보임) — 이름 통일은 선택 |
|
||||
| 페이지 | `openLabTab` · `labHost` · `labMounted` · 주석 「정본 로직 화면의 복사본」 | `openLogicTab` 으로 합침 |
|
||||
| 머리 주석 | `LogicLab.ts` · `_Detail` · `_New` · `_Text` 의 「로직 개선 시험」 · `Page.ts` 머리(컨테이너 나열) · `Side.ts` 62 · 91줄 | 문구만 |
|
||||
| 파일 이름 | `UI_LogicLab*.ts` | 그대로 둬도 됨(파일 이름 바꿈은 선택 — 바꾸면 `Logic_Page.ts` 자리를 새 것이 이어받는 꼴) |
|
||||
| 문서 | `ref/_검증_*` · `PLAN.md` 의 「로직 개선 시험」 · 「정본 화면」 문장 | 이력이라 그대로 둠(PLAN 3-1 은 이관 대상) |
|
||||
|
||||
## ④ 옛에만 있고 새에 없는 기능(지우면 잃음)
|
||||
|
||||
1. **공용(정본) 로직 직접 고치기** — 옛 = 어느 로직(GC·GF …)이든 호표 · 입력 · 중간 · 덧줄 · 끝수 · 이름 · 결과 단위 · 출처를 고쳐 [저장] 으로 정본 파일에 씀. 새 = **자체 로직(키 GX)만** 고침(`isOwnLogic`) · 공용 로직은 읽기 전용(비고만 고침) · 고치려면 [본떠 만들기] 로 GX 를 만든 뒤. PLAN 3-1 「개선은 여기서만」 · 3-2 「정본은 복제 뒤」 와는 맞음 — 그러나 **지금 정본 로직 1,354 줄의 오타·수량 손질은 이 길이 없어짐**(서버 `/logic/edit` · `/save` 는 살아 있으니 화면만 없어짐).
|
||||
2. **[새로 만들기](빈 로직 + 파일 고르기)** — 옛 = 빈 줄을 만들어 로직 파일 하나를 골라 정본 파일에 더함. 새 = [식으로 새로 만들기](`/logic/draft` · GX · 파일 못 고름). 정본 파일에 새 GC/GF 줄을 더하는 길이 없어짐.
|
||||
|
||||
그 밖에는 새가 같거나 더 많음 — 목록 · 거름 · 열기 · 지우기(모든 로직에서 됨 · `/save` delete) · 초안 표시 · 시험 계산 · 호표 · 복제 · 식 새로 만들기 · 알약 → 마스터 화면 · 텍스트 수식.
|
||||
|
||||
## ⑤ 다른 화면이 옛 컨테이너를 부르는가
|
||||
|
||||
- **밖(B08·B09 등)에서 옛 컨테이너나 `/api/m01` 을 부르는 곳 없음**(`A00_Common/router.ts` 가 페이지만 엶 · `main.py` 는 라우터 등록만).
|
||||
- **안에서 옛 탭을 여는 곳(= 새 쪽으로 이어줘야 함)** — 전부 `Page.ts` 의 `openLogicTab(key?)` 하나로 모임:
|
||||
- 소요량·계수 표의 「쓰는 로직」 키 클릭 → `renderTables(…, openLogicTab)`.
|
||||
- 일위대가 조합의 로직 이름 클릭 → `mountM01Combo(…, (key) => openLogicTab(key))`.
|
||||
- 패널 절 제목 클릭 → `buildSide(…, () => openLogicTab(), …)`.
|
||||
- `setPendingLogicKey` · `takePendingLogicKey`(`Side.ts`) 로 키를 넘김 — 새 컨테이너는 `openKey` 를 이미 가짐(`mountM01LogicLab(host, side, openKey)` + 반환 `openKey`)이나 **`Page.ts` 가 안 넘김**(지금 `openLabTab` 은 키 없이 마운트) → 합칠 때 `openLogicTab` 이 마운트 인자 · 이미 열려 있으면 `handle.openKey(key)` 로 이어야 함.
|
||||
- 새 → 마스터 알약 뒤 「돌아가기」 = `openLabTab` → 합친 `openLogicTab`.
|
||||
|
||||
## ⑥ 지우는 차례 제안
|
||||
|
||||
각 걸음 끝 = `npm run typecheck` + `prettier` + 커밋·push. 서버 시험은 안 돌려도 됨(서버 안 만짐).
|
||||
|
||||
1. **이음 바꾸기** — `Page.ts` 의 `openLogicTab` 이 새 컨테이너(`mountM01LogicLab` + `openKey` 이음)를 열게. 패널에는 옛·새 두 절이 아직 있음. ORCA: ⓐ 소요량 표 「쓰는 로직」 키 클릭 → 새 컨테이너에서 그 로직 열림(처음 한 번 · 이미 열린 뒤 한 번) ⓑ 조합 화면 로직 이름 클릭 → 같음 ⓒ 알약 → 마스터 화면 → 돌아가기.
|
||||
2. **옛 절 걷기** — `Side.ts` 에서 옛 절 · `LOGIC_ID` 걷고 새 절 제목 「단가산출 로직」 · `logicHost` 이름 통일 · `Page.ts` 의 옛 마운트 · `showMode("logic")` 걷음. ORCA: 패널에 「단가산출 로직」 하나만 · 펼치면 목록 1,354 · 13-4-1 열림 · 시험 계산 203,281.2(PLAN 3-1 수치) · 390px 한 번.
|
||||
3. **옛 파일 지우기** — `UI_Logic_Page.ts` 삭제 · `fetchLogicFiles` · `LogicFile` · `Bar_New` · `isNew/files/onFile`(+ `choice` 가지) · 옛 옆칸 CSS · `M01_GroupLogic`(안 쓰면). typecheck 가 빠진 이음을 잡음. ORCA: 단가산출 로직 · 조합 · 표 → 로직 · 390px 다시 한 번.
|
||||
4. **죽은 것 치우기(선택)** — `pickPanel` 묶음 · `buildNote` · 안 쓰는 문구 23개. typecheck 로 확인.
|
||||
5. **이름 마무리** — `Pill_Back` · 머리 주석 · (선택) 파일 이름. 문서(`PLAN.md`)에 새 이름 반영 · 이관 대상 절 정리는 외부 AI 몫.
|
||||
|
||||
## 지우기 전에 사용자에게 필요한 답
|
||||
|
||||
- ④ 의 둘(정본 로직 직접 고치기 · 정본 파일에 새 줄 더하기)을 **버려도 되는가**. 버리면 위 순서 그대로. 두 길 가운데 하나라도 필요하면 새 컨테이너에 그 기능을 먼저 더한 뒤 3걸음을 함(별도 일감).
|
||||
Reference in New Issue
Block a user