Files
sam-api/app/Services/Quote/Contracts/TenantFormulaHandler.php
권혁성 b0547c425f fix:FG 수식 산출 시 제품모델/설치타입/마감타입 올바르게 적용
- parseFgCode() 추가: FG 코드에서 모델/설치타입/마감타입 파싱
- calculateTenantBom() 폴백 순서: 입력값 > FG코드 파싱 > 기본값(KSS01/벽면형/SUS)
- KQTS01 제품이 KSS01 가이드레일 규격(120*70)으로 잘못 산출되던 문제 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 15:41:21 +09:00

41 lines
1.5 KiB
PHP

<?php
namespace App\Services\Quote\Contracts;
/**
* 테넌트별 수식 핸들러 인터페이스
*
* FormulaEvaluatorService에서 테넌트 전용 계산 로직을 위임받는 핸들러 계약.
* 각 테넌트 핸들러는 Handlers/Tenant{id}/FormulaHandler.php에 위치하며,
* FormulaHandlerFactory가 class_exists()로 자동 발견한다.
*/
interface TenantFormulaHandler
{
/**
* 모터 용량 결정
*
* @param string $productType 제품 타입 (screen/steel/slat)
* @param float $weight 중량 (kg)
* @param string $bracketInch 브라켓 인치
* @return string 모터 용량 코드 (예: '300K', '800K')
*/
public function calculateMotorCapacity(string $productType, float $weight, string $bracketInch): string;
/**
* 브라켓 크기 결정
*
* @param float $weight 중량 (kg)
* @param string|null $bracketInch 브라켓 인치
* @return string 브라켓 크기 (예: '530*320', '690*390')
*/
public function calculateBracketSize(float $weight, ?string $bracketInch = null): string;
/**
* 동적 BOM 항목 계산 (주자재, 모터, 제어기, 절곡품, 부자재)
*
* @param array $inputs 계산 변수 (W0, H0, QTY, product_type, product_model 등)
* @return array BOM 항목 배열 [{item_id, item_code, item_name, category, quantity, unit_price, total_price, ...}]
*/
public function calculateDynamicItems(array $inputs): array;
}