# 재고생산 자동 확정+생산지시 구조 변경

**날짜:** 2026-03-18
**작업자:** Claude Code

## 변경 개요

재고생산의 3단계 프로세스(저장 → 확정 → 생산지시 생성)를 1단계(저장 = 즉시 생산지시)로 단축했다. 재고생산은 수주와 달리 별도 확정 절차가 불필요하다.

---

## 변경 배경

| 항목 | 기존 | 변경 후 |
|------|------|---------|
| 저장 | DRAFT 상태로 생성 | CONFIRMED → IN_PROGRESS (자동) |
| 확정 | 사용자가 수동 클릭 | 불필요 (삭제) |
| 생산지시 생성 | 확정 후 사용자가 수동 클릭 | 저장 시 자동 생성 |
| 단계 수 | 3단계 | 1단계 |

```
기존:  저장(DRAFT) ──→ 확정(CONFIRMED) ──→ 생산지시 생성(IN_PROGRESS)
변경:  저장 ──→ 확정+재고예약+생산지시 자동 ──→ IN_PROGRESS
```

---

## 수정된 파일

| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/OrderService.php` | `store()` 메서드에 STOCK 자동 확정+생산지시 로직 추가 |

---

## 상세 변경 사항

### OrderService::store() — STOCK 타입 후처리 추가

`store()` 메서드 마지막, 주문 생성 완료 후 `isStock` 조건 블록 추가:

```php
if ($isStock) {
    // 1. 확정 처리 (DRAFT → CONFIRMED)
    $order->status_code = Order::STATUS_CONFIRMED;
    $order->save();

    // 2. 재고 예약
    $order->load('items');
    app(StockService::class)->reserveForOrder($order->items, $order->id);

    // 3. 생산지시 자동 생성
    $this->createProductionOrder($order->id, []);

    // 최종 상태 반영 (IN_PROGRESS)
    $order->refresh();
}
```

**동작 순서:**
1. 주문 생성 (기존 로직 그대로)
2. 상태를 CONFIRMED로 변경
3. `StockService::reserveForOrder()`로 재고 예약
4. `createProductionOrder()`로 절곡 공정 작업지시 자동 생성
5. 최종 상태 IN_PROGRESS (createProductionOrder 내부에서 변경)

### 기존 로직 재활용

- `createProductionOrder()`의 STOCK 분기: 모든 품목을 "절곡" 공정에 직접 배정 (BOM 매칭 스킵)
- `reserveForOrder()`: 기존 updateStatus()에서 사용하던 재고 예약 로직과 동일
- 새 코드는 기존 메서드를 호출하므로, 향후 확정/생산지시 로직 변경 시 자동 반영

---

## React 프론트엔드 변경 요청

| 항목 | 설명 |
|------|------|
| "확정" 버튼 제거 | `StockProductionDetail.tsx` — draft 상태에서 확정 버튼 제거 |
| "생산지시 생성" 버튼 제거 | `StockProductionDetail.tsx` — confirmed 상태에서 생산지시 버튼 제거 |
| 저장 후 리다이렉트 | 저장 완료 → 상세 페이지로 이동 시 이미 IN_PROGRESS 상태 표시 |
| 상태 표시 조정 | DRAFT 상태가 목록에 노출되지 않을 수 있음 (저장 즉시 IN_PROGRESS) |

---

## 테스트 체크리스트

- [x] 재고생산 저장 시 상태가 IN_PROGRESS로 표시
- [ ] 생산지시(작업지시)가 자동으로 생성되는지 확인
- [ ] 절곡 공정에 품목이 정상 배정되는지 확인
- [ ] 재고 예약이 정상 동작하는지 확인
- [ ] 일반 수주(TYPE_ORDER)는 기존 흐름(DRAFT → 확정 → 생산지시) 유지
- [ ] React 화면에서 확정/생산지시 버튼 제거 확인 (프론트엔드 작업 후)

---

## 관련 문서

| 문서 | 설명 |
|------|------|
| [stock-production-api.md](../frontend/api-specs/stock-production-api.md) | 재고생산 API 명세 |
| [20260316_stock_production_order.md](../dev/changes/20260316_stock_production_order.md) | 재고생산 기능 최초 추가 |

---

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