<?php

namespace App\Models\Tenants;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Cache;

class AiPricingConfig extends Model
{
    protected $table = 'ai_pricing_configs';

    protected $fillable = [
        'provider',
        'model_name',
        'input_price_per_million',
        'output_price_per_million',
        'unit_price',
        'unit_description',
        'exchange_rate',
        'is_active',
        'description',
    ];

    protected $casts = [
        'input_price_per_million' => 'decimal:4',
        'output_price_per_million' => 'decimal:4',
        'unit_price' => 'decimal:6',
        'exchange_rate' => 'decimal:2',
        'is_active' => 'boolean',
    ];

    /**
     * 활성 단가 설정 조회 (캐시 적용)
     */
    public static function getActivePricing(string $provider): ?self
    {
        return Cache::remember("ai_pricing_{$provider}", 3600, function () use ($provider) {
            return self::where('provider', $provider)
                ->where('is_active', true)
                ->first();
        });
    }

    /**
     * 환율 조회 (첫 번째 활성 레코드 기준)
     */
    public static function getExchangeRate(): float
    {
        return Cache::remember('ai_pricing_exchange_rate', 3600, function () {
            $config = self::where('is_active', true)->first();

            return $config ? (float) $config->exchange_rate : 1400.0;
        });
    }

    /**
     * 캐시 초기화
     */
    public static function clearCache(): void
    {
        $providers = ['gemini', 'claude', 'google-stt', 'google-gcs'];
        foreach ($providers as $provider) {
            Cache::forget("ai_pricing_{$provider}");
        }
        Cache::forget('ai_pricing_exchange_rate');
    }
}
