Files
sam-api/docs/changes/20251230_2339_quote_calculation_mng_logic.md
kent 7566814876 feat: Phase 1.1 - MNG 견적 계산 로직 API 동기화
- CategoryGroup 모델 추가 (카테고리별 단가 계산)
- FormulaEvaluatorService에 10단계 BOM 계산 로직 추가
- calculateBomWithDebug, calculateCategoryPrice 등 주요 메서드 구현
- MNG 시뮬레이터와 동일한 계산 결과 보장

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 23:45:22 +09:00

2.8 KiB
Raw Blame History

변경 내용 요약

날짜: 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 계산 프로세스:

  1. 입력 변수 수집 (W0, H0, 설치타입, 전원 등)
  2. 완제품 선택 및 제품 카테고리 확인
  3. 변수 계산 (W1, H1, M, K 등)
  4. BOM 확장 (수식 기반)
  5. 가격 소스 결정 (표준가/특가)
  6. 수량 수식 평가
  7. 가격 계산 (카테고리별 곱셈 적용)
  8. 공정별 그룹화
  9. 소계 계산
  10. 총계 산출

변수 계산 규칙:

  • W1 = W0 + product_category.margin_width
  • H1 = H0 + product_category.margin_height
  • M = (W1 × H1) / 1,000,000 (면적 ㎡)
  • K = 제품 카테고리별 중량 계산

테스트 체크리스트

  • API 엔드포인트 /api/v1/quotes/calculate 테스트
  • MNG 시뮬레이터 결과와 비교 검증
  • 다양한 제품 카테고리별 계산 테스트
  • 디버그 모드 출력 검증

⚠️ 배포 시 주의사항

  • category_groups 테이블 마이그레이션 필요
  • 테넌트별 초기 데이터 설정 필요

🔗 관련 문서

  • docs/plans/quote-calculation-api-plan.md
  • mng/app/Services/Quote/FormulaEvaluatorService.php (원본)