From 727d110db41f881b35ab54d6397e74c5b080709c Mon Sep 17 00:00:00 2001 From: umsangdon Date: Tue, 22 Sep 2026 11:49:01 +0900 Subject: [PATCH] =?UTF-8?q?knowledge(M01):=20M01=20=EB=8C=80=20Z01=20?= =?UTF-8?q?=EB=B6=84=EC=84=9D=20=E2=80=94=20=EC=A7=80=EA=B8=88=20=EC=93=B0?= =?UTF-8?q?=EB=8A=94=20=EA=B2=83=EC=9D=80=20M01=20=C2=B7=20Z01=20=EC=9D=80?= =?UTF-8?q?=20=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20=EC=97=B0=EA=B2=B0=20?= =?UTF-8?q?=EB=81=8A=EA=B8=B4=20=EA=B3=A0=EC=95=84=20=ED=99=94=EB=A9=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT --- resources/master_data/ref/_분석_M01_Z01.md | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 resources/master_data/ref/_분석_M01_Z01.md diff --git a/resources/master_data/ref/_분석_M01_Z01.md b/resources/master_data/ref/_분석_M01_Z01.md new file mode 100644 index 00000000..f424fcba --- /dev/null +++ b/resources/master_data/ref/_분석_M01_Z01.md @@ -0,0 +1,48 @@ +# M01 대 Z01 — 지금 어느 쪽을 쓰는가 (읽기 전용 분석) + +분석만 — 코드·데이터 안 고침. 기준 = sub_laptop_3 · dev(git-sync 받은 판). + +## 한 줄 답 + +**지금 쓰는 것은 M01.** Z01 은 옛 마스터 데이터 화면 — 대시보드 단추가 없어 주소를 직접 쳐야만 열림. PLAN.md 46번째 줄에 이미 "old · ref 삭제 때 옛 Z01 · B08 · B09 코드 같이 걷기" 로 적혀 있어, 지울 것으로 미리 정해져 있음. + +## ① 두 화면이 읽는 자료 + +| | M01 | Z01 | +|---|---|---| +| 서버 길 머리 | `/api/m01/…` | `/api/master-data/…` | +| 읽는 자료 | `resources/master_data/*.json`(로직 · 재료 · 인력 · 기계 · 계수 · 소요량 · 조합 — 지금도 손보는 정본) | `resources/data_master_sources` · `resources/data_master_override`(고친 값 덮개) · `resources/data_master_labels`. 이름표(파일 목록·갈래·단위)는 `resources/master_data/old/*.json` 을 읽음 | +| 화면 성격 | 요소·로직·조합을 **고쳐 저장** — 진짜 편집기 | 기초단가 다섯(노임·기계·자재·유가·요율) + 공종 축(품셈 표)을 **보고 일부만 고침**(덮개 파일에) — 조회용에 가까움 | + +`resources/master_data/old`(37개 원본 JSON — 노임·유가·자재·제비율 공표 원문)는 **두 화면의 공통 조상**임: M01 의 빌드 스크립트(`scripts/build_*.py`)가 예전에 이 원본을 읽어 지금의 정본 JSON 을 만들었고, Z01 은 지금도 이 원본 폴더를 직접 읽어(이름표 자리) 제 표를 그림. 즉 **같은 값을 두 번 따로 계산해 보여주는 구조** — 서로 다른 시각의 결과가 같은 화면 이름(「마스터 데이터」)으로 둘 다 떠 있음. + +## ② 어느 쪽이 지금 쓰이는가 — 근거 + +- **대시보드 단추** — `B01_Dashboard_UI_Page.ts` 140줄, 단추 하나가 `ROUTES.M01_MASTER_DATA` 로만 감. Z01 로 가는 단추·메뉴 **없음**. +- **주소** — `config/config_frontend.ts` 에 `z01-master-data` · `m01-master-data` 둘 다 있고 라우터(`A00_Common/router.ts`)도 둘 다 엶 — 즉 **주소를 알면 Z01 도 열리지만, 화면 어디에도 그리로 가는 길이 없음**(고아 화면). +- **git 이력** — `resources/master_data/일위대가조합.json`(M01 정본) 마지막 고침 2026-09-22(오늘). `resources/master_data/old`(Z01 이 읽는 이름표 원본) 마지막 고침 2026-09-20 — M01 쪽만 계속 움직임. +- **PLAN.md** — 46번째 줄에 Z01 을 B08·B09 옛 코드와 함께 지울 대상으로 이미 적어 둠. + +결론 — 사용자가 실제로 관리자 화면으로 쓰는 것은 M01. Z01 은 만들어 둔 뒤 대시보드 연결이 끊긴 채 남은 옛 화면. + +## ③ Z01 을 아직 부르는 곳 + +- **화면** — `A00_Common/main.ts`(29줄, footer 숨김 목록에 이름만 나열) · `A00_Common/router.ts`(라우트 등록) · `config/config_frontend.ts`(경로 문자열). 실제로 그 경로로 **이동시키는 버튼·링크는 없음**. +- **서버** — `main.py` 78·662줄에 `z01_master_data_router` 등록(system_admin_only). M01 라우터와 나란히 살아 있음. +- **시험** — `resources/tester/test_z01_*.py` 7개(`base_prices` · `base_tables` · `master_cells` · `master_data` · `master_registration` · `work_items`) + `test_master_labels_base_prices.py`. 전부 Z01 코드만 겨냥 — **M01 시험과 안 겹침**. +- **B08·B09** — 이 두 화면이 Z01 라우터(`/api/master-data`)나 `Z01_MasterData_*` 모듈을 직접 부르는 곳은 **없음**. 다만 `Z01_MasterData_WorkItems.py` 머리글에 "원본 `work_item_code`(FP-)는 B08·B09 가 씀 — 안 건드림" 이라 적혀 있어, **B08·B09 는 Z01 의 원본 자료(파일)를 Z01 을 거치지 않고 제 코드로 직접 읽는 것으로 보임**(이번 분석 범위 밖이라 B08·B09 쪽 파일은 안 들어가 봄 — 확인 필요하면 별도 일감). + +## ④ Z01 을 걷으면 무엇이 깨지는가 · 차례 + +- **깨지는 화면 없음** — 대시보드·다른 화면 어디서도 Z01 경로로 넘어가지 않음. +- **깨지는 서버 없음** — `/api/master-data` 를 부르는 프런트가 없음(주소창 직접 입력 빼고). +- **없어지는 시험** — `test_z01_*` 7개 + `test_master_labels_base_prices.py` 는 Z01 코드가 없어지면 같이 지워야 함(대상이 사라지므로). +- **B08·B09 확인 필요** — 이 둘이 Z01 라우터가 아니라 원본 파일을 직접 읽는다면 Z01 폴더를 지워도 안 깨지나, **원본 파일 자체(`resources/data_master_sources` 등)는 Z01 폴더가 아니라 `resources/` 아래라 남음** — 다만 확실히 하려면 B08·B09 가 실제로 무엇을 읽는지 한 번 더 봐야 함(PLAN 46번째 줄도 "B08·B09 옛 코드"를 같이 걷는다 했으니 이미 아는 걸림일 수 있음). + +제안 차례 — ⓐ B08·B09 가 Z01 모듈을 안 쓰는지 마지막으로 한 번 더 확인 → ⓑ `test_z01_*` · `test_master_labels_base_prices.py` 지움 → ⓒ `Z01_MasterData/` 폴더 지움 → ⓓ `main.py` 라우터 등록 두 줄 지움 → ⓔ `A00_Common/main.ts` · `router.ts` · `config_frontend.ts` 의 `Z01_MASTER_DATA` 세 자리 지움 → ⓕ `npm run typecheck` + 남은 M01·B08·B09 시험. + +## ⑤ 두 길이 같이 있어 생기는 흠 + +- **헷갈림** — 화면 이름이 둘 다 "마스터 데이터"라 주소를 아는 사람(관리자)이 옛 Z01 을 열면 **다른 값**을 볼 수 있음(②의 날짜 차이 · 서로 다른 계산 경로). +- **값이 실제로 다른가** — 이번 분석에서 두 화면의 표를 나란히 계산해 보진 않음(사용자 지시가 "분석만"이라 값 비교 스크립트는 안 돌림). 다만 자료 원천이 다르므로(M01 = `resources/master_data/*.json` 정본, Z01 = `resources/data_master_sources`+`data_master_override`) **같은 항목이 다른 값으로 보일 가능성은 구조적으로 있음** — 실측이 필요하면 별도 일감으로. +- **권한 노출** — Z01 도 `system_admin_only` 라 일반 사용자에겐 안 보임 — 보안 흠은 아님, 관리자 혼선만.