Files
sam-react-prod/claudedocs/[REF] items-route-consolidation.md
유병철 61e3a0ed60 feat(WEB): Phase 6 IntegratedDetailTemplate 마이그레이션 완료
Phase 6 마이그레이션 (41개 컴포넌트 완료):
- 건설/시공: 협력업체, 시공관리, 기성관리, 발주관리, 계약관리 등
- 영업: 견적관리(V2), 고객관리(V2), 수주관리
- 회계: 청구관리, 매입관리, 매출관리, 거래처관리, 악성채권 등
- 생산: 작업지시, 검수관리
- 출고: 출하관리
- 자재: 입고관리, 재고현황
- 고객센터: 문의관리, 이벤트관리, 공지관리
- 인사: 직원관리
- 설정: 권한관리

주요 변경사항:
- 34개 xxxConfig.ts 파일 생성 (설정 기반 페이지 구성)
- PageLayout/PageHeader → IntegratedDetailTemplate 통합
- 일관된 타이틀/버튼 영역 (목록, 상세, 수정, 삭제)
- 1112줄 코드 감소 (중복 제거)

프로젝트 공통화 현황 분석 문서 추가:
- 상세 페이지 62%, 목록 페이지 82% 공통화 달성
- 추가 공통화 기회 및 로드맵 정리

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 15:51:02 +09:00

4.6 KiB

품목관리 경로 통합 이슈 정리

작성일: 2026-01-20 브랜치: feature/universal-detail-component 커밋: 6f457b2


문제 발견

증상

  • /production/screen-production 경로에서 품목 등록 실패
  • /production/screen-production 경로에서 품목 수정 시 기존 값 미표시

원인 분석

중복 경로 존재:

/items                        → 신버전 (DynamicItemForm)
/production/screen-production → 구버전 (ItemForm)

백엔드 메뉴 설정:

  • 사이드바 "생산관리 > 품목관리" 클릭 시 → /production/screen-production으로 연결
  • 메뉴 URL이 API에서 동적으로 관리되어 프론트에서 직접 변경 불가

결과:

  • 사용자는 항상 /production/screen-production (구버전 폼)으로 접속
  • 구버전 ItemForm은 API 필드 매핑이 맞지 않아 등록/수정 오류 발생
  • 신버전 DynamicItemForm (/items)은 정상 작동하지만 접근 경로 없음

파일 비교

등록 페이지 (create/page.tsx)

항목 /items/create /production/screen-production/create
폼 컴포넌트 DynamicItemForm ItemForm
폼 타입 동적 (품목기준관리 API) 정적 (하드코딩)
API 매핑 정상 불일치
상태 정상 작동 등록 오류

목록/상세 페이지

항목 /items /production/screen-production
목록 ItemListClient ItemListClient
상세 ItemDetailView ItemDetailView
수정 ItemDetailEdit ItemDetailEdit
상태 동일 컴포넌트 공유 동일 컴포넌트 공유

결론: 목록/상세/수정은 같은 컴포넌트를 공유하지만, 등록만 다른 폼이 연결되어 있었음


해결 방법

선택지

  1. 백엔드 메뉴 URL 변경: /production/screen-production/items

    • 백엔드 DB 수정 필요
    • 프론트 단독 작업 불가
  2. 프론트 경로 통합: /items 파일들을 /production/screen-production으로 이동

    • 백엔드 수정 불필요
    • 프론트 단독으로 해결 가능

적용한 해결책

/items/production/screen-production 파일 이동 및 통합

# 1. 기존 screen-production 삭제
rm -rf src/app/[locale]/(protected)/production/screen-production

# 2. items 파일들을 screen-production으로 복사
cp -r src/app/[locale]/(protected)/items/* \
      src/app/[locale]/(protected)/production/screen-production/

# 3. items 폴더 삭제
rm -rf src/app/[locale]/(protected)/items

수정된 파일

라우트 파일 (삭제)

  • src/app/[locale]/(protected)/items/page.tsx
  • src/app/[locale]/(protected)/items/create/page.tsx
  • src/app/[locale]/(protected)/items/[id]/page.tsx
  • src/app/[locale]/(protected)/items/[id]/edit/page.tsx

라우트 파일 (신버전으로 교체)

  • src/app/[locale]/(protected)/production/screen-production/page.tsx
  • src/app/[locale]/(protected)/production/screen-production/create/page.tsx
  • src/app/[locale]/(protected)/production/screen-production/[id]/page.tsx
  • src/app/[locale]/(protected)/production/screen-production/[id]/edit/page.tsx

컴포넌트 경로 참조 수정 (/items/production/screen-production)

파일 수정 개수
ItemListClient.tsx 3개
ItemForm/index.tsx 1개
ItemDetailClient.tsx 1개
ItemDetailEdit.tsx 2개
DynamicItemForm/index.tsx 2개
합계 9개

교훈

문제 원인

  • 템플릿/테스트용 페이지에 메뉴를 연결한 채로 방치
  • 신버전 개발 시 구버전 경로 정리 누락
  • 두 경로가 같은 컴포넌트 일부를 공유해서 문제 파악 지연

예방책

  1. 신버전 개발 완료 시 구버전 경로 즉시 삭제 또는 리다이렉트 처리
  2. 메뉴 URL과 실제 라우트 파일 매핑 정기 점검
  3. 중복 경로 생성 시 명확한 용도 구분 및 문서화

최종 상태

/production/screen-production     → DynamicItemForm (신버전)
/items                            → 삭제됨

품목관리 CRUD 테스트 결과:

품목 유형 Create Read Update Delete
소모품(CS)
원자재(RM)
부자재(SM)
부품-구매(PT)
부품-절곡(PT)
부품-조립(PT)
제품(FG)