# DynamicItemForm 수정 내역 (2025-12-02)

## 완료된 작업

### 1. 디자인 수정 (2카드 → 1카드)
- **파일**: `src/components/items/DynamicItemForm/index.tsx`
- **내용**: 첫 번째 섹션을 "기본 정보" 카드에 통합
- **결과**: 목업과 동일한 단일 카드 레이아웃

### 2. 필드 순서 정렬
- **순서**: 품목유형 → 품목명 → 규격(사양) → 품목코드(자동생성) → 단위 → 비고
- **방법**: `item_name`, `specification` 필드 우선 렌더링 후 품목코드, 나머지 필드 순서

### 3. 단위 드롭다운 field_key 매칭 개선
- **파일**: `src/components/items/DynamicItemForm/fields/DropdownField.tsx`
- **수정**: 한글 '단위' 포함 매칭 추가
```typescript
const isUnitField =
  fieldKey.toLowerCase().includes('unit') ||
  fieldKey.includes('단위') ||
  field.field_name.includes('단위') ||
  field.field_name.toLowerCase().includes('unit');
```

### 4. aria-hidden 충돌 해결
- **파일**: `src/components/ui/sheet.tsx`, `src/components/ui/select.tsx`
- **수정**: `modal={false}` 추가
- **이유**: Sheet(사이드바)와 Select 드롭다운 간 aria-hidden 충돌 방지

### 5. 필드명 매핑 (프론트 → 백엔드)
- **파일**: `src/components/items/DynamicItemForm/index.tsx`
- **매핑 테이블**:
```typescript
const fieldKeyToBackendKey: Record<string, string> = {
  'item_name': 'name',
  'specification': 'spec',
  'unit': 'unit',
  'note': 'note',
  'description': 'description',
};
```
- **추가 매핑**:
  - `item_type` → `product_type`
  - `item_code` → `code`

---

## 발견된 백엔드 이슈 (미해결)

### 1. unitOptions 빈 배열
- **현상**: init API 응답에 `unitOptions: []` 빈 배열
- **영향**: 단위 드롭다운에 옵션이 없음
- **해결 필요**:
  - 품목기준관리 속성 탭의 단위 데이터를 DB에 저장
  - init API에서 `item_unit_options` 테이블 조회 후 반환

### 2. category_id 필수 필드
- **현상**: `Field 'category_id' doesn't have a default value` 에러
- **해결 필요**:
  - `products` 테이블의 `category_id` nullable 또는 기본값 설정
  - 또는 API에서 기본 category_id 처리

### 3. GET /items API 품목 조회 안됨
- **현상**: 품목 저장 후 목록에서 안 보임
- **응답**: `"data": [], "total": 0`
- **확인 필요**:
  - POST `/items` → `products` 테이블 저장
  - GET `/items` → 어떤 테이블 조회하는지?
  - tenant_id 조건 확인

---

## 수정된 파일 목록

```
src/components/items/DynamicItemForm/index.tsx
src/components/items/DynamicItemForm/fields/DropdownField.tsx
src/components/items/DynamicItemForm/hooks/useFormStructure.ts
src/components/ui/sheet.tsx
src/components/ui/select.tsx
```

---

## 다음 세션에서 할 일

1. [ ] 백엔드 이슈 해결 확인 (unitOptions, category_id, GET /items)
2. [ ] 단위 드롭다운 정상 동작 테스트
3. [ ] 품목 저장 후 목록에서 조회 테스트
4. [ ] 다른 품목 유형(FG, PT, SM, RM) 테스트
5. [ ] 디버그 console.log 제거

---

## 백엔드 요청 사항 정리

```markdown
### 1. unitOptions 반환
📍 API: GET /api/v1/item-master/init
📍 요청: unitOptions에 item_unit_options 테이블 데이터 포함

### 2. category_id 기본값
📍 테이블: products
📍 요청: category_id NULL 허용 또는 기본값 설정

### 3. GET /items 품목 조회
📍 API: GET /api/v1/items
📍 문제: 저장한 품목이 조회되지 않음
📍 확인: products 테이블 조회하는지, tenant_id 조건 확인
```