- parseFgCode() 추가: FG 코드에서 모델/설치타입/마감타입 파싱 - calculateTenantBom() 폴백 순서: 입력값 > FG코드 파싱 > 기본값(KSS01/벽면형/SUS) - KQTS01 제품이 KSS01 가이드레일 규격(120*70)으로 잘못 산출되던 문제 해결 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
41 lines
1.5 KiB
PHP
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;
|
|
}
|