Files
Aislo/resources/master_data/ref/_분석_M01_Z01.md
T

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.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 라 일반 사용자에겐 안 보임 — 보안 흠은 아님, 관리자 혼선만.