<?php
require_once 'db.php';
session_start();

if (!isset($_SESSION['user_id'])) {
    echo json_encode(['status' => 'error', 'message' => 'Unauthorized']);
    exit;
}

$instansi_id = $_SESSION['instansi_id'];

// Get Instansi AI Config
$stmt = $pdo->prepare("SELECT api_key_ai, ai_agent, ai_model FROM instansi WHERE id = ?");
$stmt->execute([$instansi_id]);
$instansi = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$instansi || empty($instansi['api_key_ai'])) {
    echo json_encode(['status' => 'error', 'message' => 'API Key AI belum dikonfigurasi untuk instansi ini.']);
    exit;
}

$api_key = $instansi['api_key_ai'];
$ai_agent = $instansi['ai_agent'] ?? 'Groq';
$ai_model = $instansi['ai_model'] ?? 'llama3-70b-8192';

$input = json_decode(file_get_contents('php://input'), true);
if (empty($input['berita']) || !is_array($input['berita'])) {
    echo json_encode(['status' => 'error', 'message' => 'Data berita tidak valid.']);
    exit;
}

$berita_list = $input['berita'];
$berita_text = "";
foreach ($berita_list as $idx => $b) {
    $judul = isset($b['judul']) ? $b['judul'] : 'Tanpa Judul';
    $cuplikan = isset($b['cuplikan']) ? mb_strimwidth($b['cuplikan'], 0, 500, '...') : '';
    $berita_text .= ($idx + 1) . ". Judul: " . $judul . "\nCuplikan: " . $cuplikan . "\n\n";
}

$system_prompt = "Anda adalah Ahli Analis Isu Publik dan Konsultan Manajemen Krisis Komunikasi Pemerintah Daerah (Pemda / Humas).
Tugas Anda adalah membuat 'EXECUTIVE BRIEFING & REKOMENDASI AKSI' untuk Pimpinan Daerah (Bupati/Wali Kota/Kepala Dinas) berdasarkan kumpulan berita negatif yang diterima.

Kelompokkan berita yang relevan dan kelompokkan menjadi isu-isu utama. Analisa setiap kelompok isu dengan format terstruktur berikut:

### 📌 [JUDUL ISU UTAMA]
* **STATUS**: 🔴 **[PERLU DITANGGAPI SEGERA]** atau 🟡 **[CUKUP DIPANTAU / EVALUASI INTERNAL]** atau 🟢 **[TIDAK PERLU DITANGGAPI / ABAIKAN]**
* **RINGKASAN ISU**: Core masalah secara singkat, padat, dan faktual.
* **REKOMENDASI AKSI**:
  - 🛠️ **Tindakan Lapangan (Dinas/OPD)**: Langkah teknis/fisik di lapangan (jika perlu).
  - 📣 **Tindakan Komunikasi (Humas)**: Langkah Rilis Pers / Klarifikasi / Silent Monitoring.
  - 💡 **Pertimbangan/Alasan**: Alasan mengapa status tersebut dipilih (misal: mencegah Streisand Effect, atau karena berpotensi viral).

Gunakan bahasa Indonesia yang profesional, lugas, ramah dibaca pimpinan daerah, dan pisahkan antar-isu dengan jelas.";

$user_prompt = "Berikut adalah daftar berita negatif terkait daerah/instansi kami yang dipantau:\n\n" . $berita_text . "\nMohon buatkan Executive Briefing dan Rekomendasi Aksi strategis untuk Pimpinan Daerah.";

$data = [
    "model" => $ai_model,
    "messages" => [
        ["role" => "system", "content" => $system_prompt],
        ["role" => "user", "content" => $user_prompt]
    ],
    "temperature" => 0.4
];

$api_url = "https://api.groq.com/openai/v1/chat/completions";
if ($ai_agent === 'KoboiLLM') {
    $api_url = "https://api.koboillm.com/v1/chat/completions";
}

$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $api_key
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_TIMEOUT, 45);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($http_code != 200 || !$response) {
    $err_msg = 'Gagal menghubungi server AI (HTTP ' . $http_code . ')';
    if ($response) {
        $err_data = json_decode($response, true);
        if (isset($err_data['error']['message'])) {
            $err_msg .= ': ' . $err_data['error']['message'];
        }
    }
    echo json_encode(['status' => 'error', 'message' => $err_msg]);
    exit;
}

$res_json = json_decode($response, true);
$ai_reply = $res_json['choices'][0]['message']['content'] ?? '';

if (empty($ai_reply)) {
    echo json_encode(['status' => 'error', 'message' => 'AI memberikan respon kosong.']);
    exit;
}

echo json_encode(['status' => 'success', 'saran' => trim($ai_reply)]);
