feat: 수주관리(Order Management) API Phase 1.1 구현

- OrderService 구현 (index, stats, show, store, update, destroy, updateStatus)
- OrderController 구현 (7개 API 엔드포인트)
- FormRequest 클래스 3개 생성 (Store, Update, UpdateStatus)
- 상태 전환 규칙 검증 (DRAFT → CONFIRMED → IN_PROGRESS → COMPLETED/CANCELLED)
- 수주번호 자동 생성 (ORD{YYYYMMDD}{0001} 형식)
- Swagger API 문서 작성 (OrderApi.php)
- i18n 메시지 키 추가 (ko/en)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-08 11:11:54 +09:00
parent 62203a19bd
commit de19ac97aa
12 changed files with 1041 additions and 0 deletions

View File

@@ -103,6 +103,7 @@
use App\Http\Controllers\Api\V1\UserInvitationController;
use App\Http\Controllers\Api\V1\UserRoleController;
use App\Http\Controllers\Api\V1\WithdrawalController;
use App\Http\Controllers\Api\V1\OrderController;
use App\Http\Controllers\Api\V1\WorkOrderController;
use App\Http\Controllers\Api\V1\WorkResultController;
use App\Http\Controllers\Api\V1\WorkSettingController;
@@ -1070,6 +1071,20 @@
Route::patch('/{id}/toggle', [ProcessController::class, 'toggleActive'])->whereNumber('id')->name('v1.processes.toggle');
});
// 수주관리 API (Sales)
Route::prefix('orders')->group(function () {
// 기본 CRUD
Route::get('', [OrderController::class, 'index'])->name('v1.orders.index'); // 목록
Route::get('/stats', [OrderController::class, 'stats'])->name('v1.orders.stats'); // 통계
Route::post('', [OrderController::class, 'store'])->name('v1.orders.store'); // 생성
Route::get('/{id}', [OrderController::class, 'show'])->whereNumber('id')->name('v1.orders.show'); // 상세
Route::put('/{id}', [OrderController::class, 'update'])->whereNumber('id')->name('v1.orders.update'); // 수정
Route::delete('/{id}', [OrderController::class, 'destroy'])->whereNumber('id')->name('v1.orders.destroy'); // 삭제
// 상태 관리
Route::patch('/{id}/status', [OrderController::class, 'updateStatus'])->whereNumber('id')->name('v1.orders.status'); // 상태 변경
});
// 작업지시 관리 API (Production)
Route::prefix('work-orders')->group(function () {
// 기본 CRUD