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

> 작성일: 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` 파일 이동 및 통합**

```bash
# 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) | ✅ | ✅ | ✅ | ✅ |
