feat: Phase 1.2 - 다건 BOM 기반 자동산출 API 구현

- QuoteBomBulkCalculateRequest 생성 (React camelCase → API 약어 변환)
- QuoteCalculationService.calculateBomBulk() 메서드 추가
- POST /api/v1/quotes/calculate/bom/bulk 엔드포인트 추가
- Swagger 스키마 및 문서 업데이트

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-02 13:13:50 +09:00
parent 660300cebf
commit 4e59bbf574
6 changed files with 499 additions and 0 deletions

View File

@@ -539,6 +539,7 @@
Route::prefix('receivables')->group(function () {
Route::get('', [ReceivablesController::class, 'index'])->name('v1.receivables.index');
Route::get('/summary', [ReceivablesController::class, 'summary'])->name('v1.receivables.summary');
Route::put('/overdue-status', [ReceivablesController::class, 'updateOverdueStatus'])->name('v1.receivables.update-overdue-status');
});
// Daily Report API (일일 보고서)
@@ -930,6 +931,7 @@
Route::get('/calculation/schema', [QuoteController::class, 'calculationSchema'])->name('v1.quotes.calculation-schema'); // 입력 스키마
Route::post('/calculate', [QuoteController::class, 'calculate'])->name('v1.quotes.calculate'); // 자동산출 실행
Route::post('/calculate/bom', [QuoteController::class, 'calculateBom'])->name('v1.quotes.calculate-bom'); // BOM 기반 자동산출
Route::post('/calculate/bom/bulk', [QuoteController::class, 'calculateBomBulk'])->name('v1.quotes.calculate-bom-bulk'); // 다건 BOM 자동산출
// 문서 관리
Route::post('/{id}/pdf', [QuoteController::class, 'generatePdf'])->whereNumber('id')->name('v1.quotes.pdf'); // PDF 생성