feat: 공정관리 API 구현 (L-1)

- processes, process_classification_rules 테이블 마이그레이션
- Process, ProcessClassificationRule 모델 (BelongsToTenant, SoftDeletes)
- ProcessService: CRUD + 통계/옵션/상태토글
- ProcessController + FormRequest 검증
- API 라우트 등록 (/v1/processes)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-26 18:56:24 +09:00
parent 5ae326521f
commit 3994e0faf1
8 changed files with 666 additions and 0 deletions

View File

@@ -103,6 +103,7 @@
use App\Http\Controllers\Api\V1\WorkOrderController;
use App\Http\Controllers\Api\V1\WorkResultController;
use App\Http\Controllers\Api\V1\WorkSettingController;
use App\Http\Controllers\V1\ProcessController;
use Illuminate\Support\Facades\Route;
// V1 초기 개발
@@ -1027,6 +1028,19 @@
Route::post('/preview/{model_set_id}', [EstimateController::class, 'previewCalculation'])->name('v1.estimates.preview'); // 견적 계산 미리보기
});
// 공정 관리 API (Process Management)
Route::prefix('processes')->group(function () {
Route::get('', [ProcessController::class, 'index'])->name('v1.processes.index');
Route::get('/options', [ProcessController::class, 'options'])->name('v1.processes.options');
Route::get('/stats', [ProcessController::class, 'stats'])->name('v1.processes.stats');
Route::post('', [ProcessController::class, 'store'])->name('v1.processes.store');
Route::delete('', [ProcessController::class, 'destroyMany'])->name('v1.processes.destroy-many');
Route::get('/{id}', [ProcessController::class, 'show'])->whereNumber('id')->name('v1.processes.show');
Route::put('/{id}', [ProcessController::class, 'update'])->whereNumber('id')->name('v1.processes.update');
Route::delete('/{id}', [ProcessController::class, 'destroy'])->whereNumber('id')->name('v1.processes.destroy');
Route::patch('/{id}/toggle', [ProcessController::class, 'toggleActive'])->whereNumber('id')->name('v1.processes.toggle');
});
// 작업지시 관리 API (Production)
Route::prefix('work-orders')->group(function () {
// 기본 CRUD