diff --git a/INDEX.md b/INDEX.md index 385dc9f..b782c2f 100644 --- a/INDEX.md +++ b/INDEX.md @@ -286,6 +286,7 @@ DB 도메인별: | [bending-lot-react-request.md](plans/bending-lot-react-request.md) | 절곡품 LOT 재고생산 React 구현 요청서 (캐스케이딩 드롭다운, LOT 자동생성, 취소 복원) | | [barobill-react-improvement-request.md](plans/barobill-react-improvement-request.md) | 바로빌 React 개선 요청서 (동기화 버튼, 인증서/잔액 표시, 계좌/카드 목록, Server Action 6개) | | [receiving-lot-auto-generate-request.md](plans/receiving-lot-auto-generate-request.md) | 입고등록 원자재로트번호 자동채번 적용 요청 (읽기전용 변경, API 자동생성) | +| [stock-detail-inventory-adjustment-request.md](plans/stock-detail-inventory-adjustment-request.md) | 재고 조정 위치 이동 요청 (입고관리 → 재고 상세 화면) | ### frontend/integration/ — 프론트엔드 개발 가이드 diff --git a/plans/stock-detail-inventory-adjustment-request.md b/plans/stock-detail-inventory-adjustment-request.md new file mode 100644 index 0000000..c886d82 --- /dev/null +++ b/plans/stock-detail-inventory-adjustment-request.md @@ -0,0 +1,130 @@ +# 재고 조정 위치 이동 요청 — 입고관리 → 재고 상세 + +**날짜:** 2026-03-17 +**요청자:** R&D실 (백엔드) +**대상:** React 프론트엔드 + +--- + +## 변경 요약 + +**재고 조정** 기능을 입고관리 화면에서 분리하여 **재고현황 > 재고 상세** 화면으로 이동한다. + +--- + +## 현재 구조 (AS-IS) + +``` +입고관리 (/material/receiving-management) +└─ 입고 상세 (ReceivingDetail.tsx) + ├─ 기본 정보 + ├─ 수입검사 정보 + └─ 재고 조정 섹션 ← 여기에 있음 (InventoryAdjustmentDialog.tsx) +``` + +**문제**: 재고 조정은 특정 입고 건과 무관하게 품목 재고를 직접 증감하는 기능이므로, 입고관리보다 재고현황에 위치하는 것이 적합하다. + +--- + +## 변경 구조 (TO-BE) + +``` +재고현황 (/material/stock-status) +└─ 재고 상세 (/material/stock-status/{id}) + ├─ 기본 정보 (기존) + │ ├─ 자재번호, 품목코드, 품목유형, 품목명 + │ ├─ 규격, 단위, 재고량, 안전재고 + │ └─ 재공품, 상태 + │ + └─ 재고 조정 섹션 ← 기본 정보 바로 아래에 추가 + ├─ 이력 테이블 (No, 조정일시, 증감 수량, 검수자) + └─ + 추가 버튼 +``` + +--- + +## 대상 컴포넌트 + +### 제거 (입고관리) + +| 파일 | 변경 | +|------|------| +| `ReceivingManagement/ReceivingDetail.tsx` | 재고 조정 섹션 렌더링 제거 | +| `ReceivingManagement/types.ts` | `InventoryAdjustmentRecord` 타입은 유지 (공유) 또는 이동 | + +### 추가 (재고 상세) + +| 파일 | 변경 | +|------|------| +| `StockStatus/StockStatusDetail.tsx` | 기본 정보 카드 아래에 재고 조정 섹션 추가 | + +### 재사용 + +| 파일 | 설명 | +|------|------| +| `ReceivingManagement/InventoryAdjustmentDialog.tsx` | 재고 조정 다이얼로그 (이동 또는 공통 위치로 추출) | + +--- + +## 재고 조정 섹션 UI 명세 + +### 이력 테이블 + +``` +┌──────────────────────────────────────────────────────────┐ +│ 재고 조정 [+ 추가] │ +├──────────────────────────────────────────────────────────┤ +│ No │ 조정일시 │ 증감 수량 │ 검수자 │ +├──────┼─────────────────────┼────────────┼───────────────┤ +│ 1 │ 2026-03-17 14:30 │ +100 │ 김보곤 │ +│ 2 │ 2026-03-16 10:15 │ -50 │ 홍길동 │ +├──────────────────────────────────────────────────────────┤ +│ 재고 조정 이력이 없습니다. │ +└──────────────────────────────────────────────────────────┘ +``` + +### 컬럼 정의 + +| 컬럼 | 필드 | 설명 | +|------|------|------| +| No | (순번) | 행 번호 | +| 조정일시 | `adjusted_at` | 조정 시각 (YYYY-MM-DD HH:mm) | +| 증감 수량 | `quantity` | 양수(+): 증가, 음수(-): 감소 | +| 검수자 | `inspector` | 조정 승인자 이름 | + +### + 추가 버튼 동작 + +1. 클릭 시 `InventoryAdjustmentDialog` 모달 오픈 +2. 증감 수량 및 사유 입력 +3. 저장 시 API 호출 → 이력 테이블에 신규 행 추가 +4. 재고량 자동 갱신 (기본 정보의 재고량 반영) + +--- + +## API 엔드포인트 + +> 현재 재고 조정 API가 미구현 상태. 백엔드에서 구현 예정. + +### 예상 엔드포인트 + +``` +GET /api/v1/stocks/{id}/adjustments + → 해당 재고의 조정 이력 조회 + → 응답: { data: InventoryAdjustmentRecord[] } + +POST /api/v1/stocks/{id}/adjustments + → 재고 조정 등록 + → 요청: { quantity: number, remark?: string } + → 응답: { data: { id, adjusted_at, quantity, inspector, ... } } +``` + +> API 구현 완료 후 별도 안내 예정. 우선 UI 배치 작업을 진행해주세요. + +--- + +## 참고 + +- 재고 상세 화면: `/material/stock-status/{id}` +- 기존 재고 조정 컴포넌트: `ReceivingManagement/InventoryAdjustmentDialog.tsx` +- 재고 상세 컴포넌트: `StockStatus/StockStatusDetail.tsx` +- 채번규칙 문서: `docs/rules/numbering-rules.md`