- Slack 알림 채널: product_infra → deploy_api - logging.php daily/api 채널 permission 0664 추가 - CLAUDE.md, INDEX.md, 변경이력 문서 갱신 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
변경 내용 요약
날짜: 2025-12-30 23:39 작업자: Claude Code Phase: 1.1 - QuoteCalculationService에 MNG FormulaEvaluatorService 로직 재구현
📋 변경 개요
MNG 시뮬레이터의 BOM 계산 로직을 API FormulaEvaluatorService에 동기화하여 React 프론트엔드에서 동일한 견적 계산 기능을 사용할 수 있도록 구현.
📁 수정된 파일
1. app/Models/CategoryGroup.php (신규)
- MNG CategoryGroup 모델을 API로 이식
- 카테고리별 단가 계산 방식 관리 (면적/중량/수량 기반)
2. app/Services/Quote/FormulaEvaluatorService.php (수정)
- 기존: 537줄 (기본 수식 평가만)
- 수정 후: 1176줄 (MNG 10단계 BOM 계산 로직 추가)
🔧 상세 변경 사항
1. CategoryGroup 모델 추가
새 파일: app/Models/CategoryGroup.php
주요 기능:
CODE_AREA_BASED('area_based'): 면적 기반 단가 (M 곱셈)CODE_WEIGHT_BASED('weight_based'): 중량 기반 단가 (K 곱셈)CODE_QUANTITY_BASED('quantity_based'): 수량 기반 단가findByItemCategory(): 품목분류로 그룹 조회calculatePrice(): 카테고리 기반 최종 가격 계산
2. FormulaEvaluatorService 로직 추가
추가된 메서드:
| 메서드 | 설명 |
|---|---|
calculateBomWithDebug() |
10단계 BOM 계산 (디버그 모드 지원) |
calculateCategoryPrice() |
카테고리 기반 단가 계산 |
groupItemsByProcess() |
공정별 품목 그룹화 |
getItemDetails() |
품목 상세 정보 조회 |
getBomTree() |
BOM 트리 구조 생성 (재귀) |
expandBomWithFormulas() |
수식 기반 BOM 확장 |
evaluateQuantityFormula() |
수량 수식 계산 |
getItemCategory() |
품목 카테고리 조회 |
10단계 BOM 계산 프로세스:
- 입력 변수 수집 (W0, H0, 설치타입, 전원 등)
- 완제품 선택 및 제품 카테고리 확인
- 변수 계산 (W1, H1, M, K 등)
- BOM 확장 (수식 기반)
- 가격 소스 결정 (표준가/특가)
- 수량 수식 평가
- 가격 계산 (카테고리별 곱셈 적용)
- 공정별 그룹화
- 소계 계산
- 총계 산출
변수 계산 규칙:
W1 = W0 + product_category.margin_widthH1 = H0 + product_category.margin_heightM = (W1 × H1) / 1,000,000(면적 ㎡)K= 제품 카테고리별 중량 계산
✅ 테스트 체크리스트
- API 엔드포인트
/api/v1/quotes/calculate테스트 - MNG 시뮬레이터 결과와 비교 검증
- 다양한 제품 카테고리별 계산 테스트
- 디버그 모드 출력 검증
⚠️ 배포 시 주의사항
category_groups테이블 마이그레이션 필요- 테넌트별 초기 데이터 설정 필요
🔗 관련 문서
docs/dev/dev_plans/quote-calculation-api-plan.mdmng/app/Services/Quote/FormulaEvaluatorService.php(원본)