<?php

namespace App\Services\FishScore;

/**
 * Tek bir nokta için tür bazlı balık skor hesaplaması sonucu.
 */
class FishScoreResult
{
    public function __construct(
        public readonly int $finalScore,         // 0..100 — clamp(habitat × dynamic × prey)
        public readonly int $habitatScore,       // 0..100 — statik özellik ağırlıklı ortalama
        public readonly float $dynamicModifier,  // 0.4..1.6
        public readonly float $preyMultiplier,   // 0.8..1.3
        public readonly array $explanations,     // en etkili 3-5 özellik açıklaması
        public readonly array $subScores,        // debug: tüm alt skorlar
        public readonly array $features,         // debug: ham özellik değerleri
    ) {}

    public function toArray(): array
    {
        return [
            'final_score' => $this->finalScore,
            'habitat_score' => $this->habitatScore,
            'dynamic_modifier' => round($this->dynamicModifier, 2),
            'prey_multiplier' => round($this->preyMultiplier, 2),
            'explanations' => $this->explanations,
            'sub_scores' => $this->subScores,
        ];
    }

    public function label(): string
    {
        if ($this->finalScore >= 75) return 'cok_uygun';
        if ($this->finalScore >= 55) return 'uygun';
        if ($this->finalScore >= 35) return 'orta';
        return 'dusuk';
    }

    public function labelTr(): string
    {
        return match ($this->label()) {
            'cok_uygun' => 'Çok Uygun',
            'uygun' => 'Uygun',
            'orta' => 'Orta',
            'dusuk' => 'Düşük',
        };
    }
}
