Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
6.0 KiB
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.ts140줄, 단추 하나가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.py78·662줄에z01_master_data_router등록(system_admin_only). M01 라우터와 나란히 살아 있음. - 시험 —
resources/tester/test_z01_*.py7개(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라 일반 사용자에겐 안 보임 — 보안 흠은 아님, 관리자 혼선만.