feat: BOM 기반 견적 계산 API 엔드포인트 추가

- QuoteBomCalculateRequest.php 생성 (BOM 계산용 FormRequest)
- QuoteCalculationService.calculateBom() 메서드 추가
- QuoteController.calculateBom() 액션 추가
- POST /api/v1/quotes/calculate/bom 라우트 등록
- Swagger 문서 업데이트 (스키마 + 엔드포인트)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-02 11:24:22 +09:00
parent 561a4745e0
commit 660300cebf
6 changed files with 250 additions and 0 deletions

View File

@@ -4,6 +4,7 @@
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Http\Requests\Quote\QuoteBomCalculateRequest;
use App\Http\Requests\Quote\QuoteBulkDeleteRequest;
use App\Http\Requests\Quote\QuoteCalculateRequest;
use App\Http\Requests\Quote\QuoteIndexRequest;
@@ -144,6 +145,23 @@ public function calculate(QuoteCalculateRequest $request)
}, __('message.quote.calculated'));
}
/**
* BOM 기반 자동산출 (10단계 디버깅 포함)
*
* React 견적등록 화면에서 완제품 코드와 입력 변수를 받아
* BOM 기반으로 품목/단가/금액을 계산합니다.
*/
public function calculateBom(QuoteBomCalculateRequest $request)
{
return ApiResponse::handle(function () use ($request) {
return $this->calculationService->calculateBom(
$request->finished_goods_code,
$request->getInputVariables(),
$request->boolean('debug', false)
);
}, __('message.quote.calculated'));
}
/**
* 자동산출 입력 스키마 조회
*/