# 입고등록 품목 검색 버그 수정 (2026-03-18)

**날짜:** 2026-03-18
**작업자:** R&D실 (백엔드)
**대상:** React 프론트엔드
**API 상태:** 수정 완료, develop 배포 대기

---

## 문제 현상

입고등록 화면에서 품목코드 검색 시 두 가지 문제 발생:

1. **전체 품목 표시**: FG(완제품), PT(부품) 등 입고 대상이 아닌 품목까지 검색됨
2. **20건 제한**: `per_page=50`을 전송해도 항상 20건만 반환

---

## 원인

API와 React 간 **파라미터 이름 불일치**:

```
React (fetchItems)                    API (ItemsController)
─────────────────                     ────────────────────
per_page=50          ──→  ❌ 무시     size 파라미터만 읽음 (기본 20)
itemType=RM,SM,CS    ──→  ❌ 무시     type / item_type만 읽음
```

---

## 수정 완료 항목

### 1. API — `ItemsController.php` (백엔드 수정 완료)

`GET /api/v1/items` 엔드포인트가 이제 다음 파라미터도 수용:

| 파라미터 | 설명 | 비고 |
|---------|------|------|
| `per_page` | 페이지당 건수 | 기존 `size`와 동일하게 동작 |
| `itemType` | 품목 유형 (camelCase) | 기존 `type`, `item_type`과 동일하게 동작 |

> 기존 `size`, `type`, `item_type` 파라미터는 변경 없이 그대로 동작한다 (하위호환).

### 2. React — `ReceivingDetail.tsx` (프론트엔드 수정 완료)

```typescript
// 변경 전
<ItemSearchModal
  open={isItemSearchOpen}
  onOpenChange={setIsItemSearchOpen}
  onSelectItem={handleSelectItem}
/>

// 변경 후 — 원자재/부자재/소모품만 검색
<ItemSearchModal
  open={isItemSearchOpen}
  onOpenChange={setIsItemSearchOpen}
  onSelectItem={handleSelectItem}
  itemType="RM,SM,CS"
/>
```

### 3. React — `actions.ts` dead code 제거

`searchItems()` 함수, `ItemOption` 인터페이스, `MOCK_ITEMS` 상수를 제거했다.
실제 품목검색은 `ItemSearchModal` → `fetchItems()` (`lib/api/items.ts`)를 통해 이루어지며,
`actions.ts`의 `searchItems()`는 어디서도 import하지 않는 미사용 코드였다.

---

## 품목 유형 필터 기준

입고등록에서 검색되는 품목:

| item_type | 한글 | 검색 여부 |
|-----------|------|:---------:|
| `RM` | 원자재 | ✅ |
| `SM` | 부자재 | ✅ |
| `CS` | 소모품 | ✅ |
| `FG` | 완제품 | ❌ |
| `PT` | 부품 | ❌ |
| `SF` | 반제품 | ❌ |
| `BN` | 절곡품 | ❌ |

---

## 프론트엔드 작업 사항

> **코드 수정은 이미 완료됨.** 아래는 `git pull` 후 확인할 내용.

### 확인 체크리스트

```
git pull origin develop
```

- [ ] 입고등록(`/material/receiving-management?mode=new`) 진입
- [ ] 품목코드 검색 모달 열기
- [ ] 아무 글자 입력 후 검색
- [ ] 검색 결과에 RM/SM/CS만 표시되는지 확인
- [ ] FG/PT 품목이 없는지 확인
- [ ] 품목이 20건 이상일 때 모두 표시되는지 확인

### 수정된 파일 (React)

| 파일 | 변경 내용 |
|------|----------|
| `src/components/material/ReceivingManagement/ReceivingDetail.tsx` | `ItemSearchModal`에 `itemType="RM,SM,CS"` prop 추가 |
| `src/components/material/ReceivingManagement/actions.ts` | 미사용 `searchItems()` 함수 제거 (52줄) |

---

## API 호출 예시 (참고용)

```
GET /api/v1/items?search=철판&itemType=RM,SM,CS&per_page=50

응답:
{
  "success": true,
  "data": {
    "data": [...],       // RM/SM/CS 품목만
    "per_page": 50,      // 50건 기준 페이징
    "total": 34
  }
}
```

---

## 관련 문서

- [stock-receiving-changes-20260317.md](stock-receiving-changes-20260317.md) — 입고관리 전체 변경사항 (섹션 4 업데이트됨)

---

**최종 업데이트**: 2026-03-18
