Phase 1.2: 다건 BOM 기반 자동산출 API
개요
- 작업일: 2026-01-02
- 커밋:
4e59bbf feat: Phase 1.2 - 다건 BOM 기반 자동산출 API 구현
- 목적: React 견적등록 화면에서 여러 품목의 자동산출 일괄 요청
API 엔드포인트
파일 목록
생성된 파일
| 파일 |
설명 |
app/Http/Requests/Quote/QuoteBomBulkCalculateRequest.php |
다건 BOM 산출 FormRequest |
api/docs/changes/20260102_1300_quote_bom_bulk_calculation.md |
변경 내용 문서 |
수정된 파일
| 파일 |
설명 |
app/Services/Quote/QuoteCalculationService.php |
calculateBomBulk() 메서드 추가 |
app/Http/Controllers/Api/V1/QuoteController.php |
calculateBomBulk 액션 추가 |
routes/api.php |
/calculate/bom/bulk 라우트 추가 |
app/Swagger/v1/QuoteApi.php |
스키마 3개 + 엔드포인트 추가 |
React → API 필드 매핑
| React 필드 (camelCase) |
API 변수 (약어) |
설명 |
| openWidth |
W0 |
개구부 폭 (mm) |
| openHeight |
H0 |
개구부 높이 (mm) |
| quantity |
QTY |
수량 |
| productCategory |
PC |
제품 카테고리 |
| guideRailType |
GT |
가이드레일 타입 |
| motorPower |
MP |
모터 출력 |
| controller |
CT |
제어반 |
| wingSize |
WS |
날개 크기 |
| inspectionFee |
INSP |
검사비 |
요청/응답 예시
요청
응답
핵심 로직
QuoteBomBulkCalculateRequest::getInputItems()
- React camelCase 필드명을 API 약어로 자동 변환
- 양쪽 필드명 모두 지원 (하위 호환성)
QuoteCalculationService::calculateBomBulk()
- 각 품목에 대해 calculateBom() 순회 호출
- 성공/실패 카운트 집계
- 개별 품목 실패가 전체에 영향 없음 (예외 처리)
관련 문서
- 계획 문서:
docs/plans/quote-calculation-api-plan.md
- Phase 1.1 문서:
docs/changes/20260102_quote_bom_calculation_api.md
- Phase 1.2 문서:
docs/changes/20260102_1300_quote_bom_bulk_calculation.md
다음 단계
- React 프론트엔드에서
/calculate/bom/bulk API 연동
- 실제 품목 데이터로 테스트
- 저장 플로우 연결 (
POST /quotes store API)