<?php

namespace App\Services\Ai;

use Illuminate\Support\Facades\Http;
use RuntimeException;

class OpenAiCompatibleInsightClient
{
    public function generate(array $settings, array $messages): array
    {
        if (empty($settings['api_key'])) {
            throw new RuntimeException('AI API anahtarı girilmemiş.');
        }

        $response = Http::withToken($settings['api_key'])
            ->acceptJson()
            ->timeout((int) ($settings['timeout'] ?? 45))
            ->post($settings['endpoint'], [
                'model' => $settings['model'],
                'messages' => $messages,
                'temperature' => (float) ($settings['temperature'] ?? 0.2),
                'response_format' => ['type' => 'json_object'],
            ]);

        if (! $response->successful()) {
            throw new RuntimeException('AI API isteği başarısız: HTTP ' . $response->status() . ' - ' . $response->body());
        }

        $body = $response->json();
        $content = $body['choices'][0]['message']['content'] ?? null;

        if (! is_string($content) || trim($content) === '') {
            throw new RuntimeException('AI API yanıtında içerik bulunamadı.');
        }

        $decoded = json_decode($content, true);
        if (! is_array($decoded)) {
            throw new RuntimeException('AI API yanıtı geçerli JSON değil: ' . mb_substr($content, 0, 500));
        }

        $decoded['_raw'] = $content;

        return $decoded;
    }
}
