From 69f48e9a20be4ac8491a78e4946654667332dc4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Wed, 18 Mar 2026 20:46:33 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[stock]=20=EC=9E=AC=EA=B3=A0=EC=83=9D?= =?UTF-8?q?=EC=82=B0=20=EC=9E=90=EB=8F=99=20=ED=99=95=EC=A0=95+=EC=83=9D?= =?UTF-8?q?=EC=82=B0=EC=A7=80=EC=8B=9C=20=EB=B3=80=EA=B2=BD=20=EC=9D=B4?= =?UTF-8?q?=EB=A0=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INDEX.md | 1 + .../20260318_stock_production_auto_confirm.md | 106 ++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 changes/20260318_stock_production_auto_confirm.md diff --git a/INDEX.md b/INDEX.md index 0193be0..d7a3a7d 100644 --- a/INDEX.md +++ b/INDEX.md @@ -264,6 +264,7 @@ DB 도메인별: | [20260318_nginx_file_upload_413_fix.md](changes/20260318_nginx_file_upload_413_fix.md) | 서비스 파일 업로드 413 오류 수정 (Nginx client_max_body_size 설정) | | [20260318_receiving_inspection_attachment_bug.md](changes/20260318_receiving_inspection_attachment_bug.md) | 입고상세 수입검사 첨부파일 삭제 후 미갱신 버그 (React 수정 필요) | | [20260318_bending_lot_codemap_update.md](changes/20260318_bending_lot_codemap_update.md) | 절곡품 LOT 코드맵 최신화 + 품목 222건 등록 + 일련번호 제거 | +| [20260318_stock_production_auto_confirm.md](changes/20260318_stock_production_auto_confirm.md) | 재고생산 자동 확정+생산지시 (3단계→1단계, 확정 버튼 제거) | --- diff --git a/changes/20260318_stock_production_auto_confirm.md b/changes/20260318_stock_production_auto_confirm.md new file mode 100644 index 0000000..8663c99 --- /dev/null +++ b/changes/20260318_stock_production_auto_confirm.md @@ -0,0 +1,106 @@ +# 재고생산 자동 확정+생산지시 구조 변경 + +**날짜:** 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