Files
sam-api/app/Services/Quote/Contracts/TenantFormulaHandler.php

41 lines
1.5 KiB
PHP
Raw Permalink Normal View History

<?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;
}