Files
sam-react-prod/claudedocs/item-master/[REF] items-route-consolidation.md
유병철 f3b07ac875 chore(WEB): claudedocs 디렉토리 도메인별 재구조화
- 루트 문서 30개를 도메인별 하위 폴더로 이동
- accounting/, architecture/, dev/, guides/, security/ 등 카테고리 분류
- archive/ 폴더에 QA 스크린샷 이동
- _index.md 문서 맵 업데이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 09:35:22 +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)