<?php
// FILE: public/ai-asesmen.php

// 1. MATIKAN WARNING PHP
error_reporting(0);
ini_set('display_errors', 0);

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');

// 2. CONFIG GROQ
$apiKey = "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"; 
$model  = "llama-3.3-70b-versatile"; 
$url    = "https://api.groq.com/openai/v1/chat/completions";

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input = json_decode(file_get_contents('php://input'), true);

    // Ambil variabel
    $mapel    = $input['mapel'] ?? '-';
    $judul    = $input['judul'] ?? '-';
    $topik    = $input['topik'] ?? '-';
    $materi   = $input['materi'] ?? '-';
    $jenis    = $input['jenis'] ?? '-';
    $teknik   = $input['teknik'] ?? '-';
    $bentuk   = $input['bentuk'] ?? '-';
    $durasi   = $input['durasi'] ?? '-';
    $jumlah   = $input['jumlah'] ?? '-';
    $skor     = $input['skor'] ?? '-';
    
    $jumlahTambahan = ceil($jumlah / 2);

    // 3. PROMPT (TIDAK DIUBAH)
    $instruksiBentuk = "";
    if (stripos($bentuk, 'pilihan ganda') !== false) {
        $instruksiBentuk = "PENTING: Karena bentuk soal adalah 'Pilihan Ganda', Anda WAJIB menyertakan opsi jawaban A, B, C, D, E di bawah setiap pertanyaan. \nFormat:\n1. Pertanyaan...\n   A. Pilihan 1\n   B. Pilihan 2\n   C. Pilihan 3\n   D. Pilihan 4\n   E. Pilihan 5\n\n(Lanjut ke nomor 2)";
    } else {
        $instruksiBentuk = "Bentuk soal adalah $bentuk. Sesuaikan format penyajiannya.";
    }

    $systemPrompt = "Anda adalah asisten guru ahli. Tugas Anda membuat perangkat asesmen lengkap.";
    
    $includeImage = isset($input['include_image']) ? $input['include_image'] : false;

        $instruksiGambar = "";
        if ($includeImage) {
            $instruksiGambar = "
            INSTRUKSI GAMBAR:
            Sisipkan ilustrasi visual pada beberapa soal. Gunakan tag HTML berikut:
            <br><img src=\"https://image.pollinations.ai/prompt/english_description?width=400&height=300\" style=\"border-radius:8px;\"><br>
            Ganti 'english_description' dengan deskripsi gambar dalam Bahasa Inggris, gunakan underscore (_) sebagai pemisah kata (contoh: resistor_color_code).";
        }
    
    $userPrompt = "Buatkan soal ujian lengkap.
    Detail:
    - Mata Pelajaran: $mapel
    - Topik: $topik
    - Materi Spesifik: $materi
    - Bentuk Soal: $bentuk
    - Jumlah Soal: $jumlah butir
    
    $instruksiBentuk
    
    OUTPUT HARUS DALAM FORMAT JSON BERIKUT (JANGAN ADA TEKS LAIN):
    {
        \"soal\": \"(Gabungan seluruh $jumlah pertanyaan utama. Jika Pilihan Ganda, opsi A-E HARUS tertulis di sini)\",
        \"rubrik\": \"(Kunci Jawaban untuk $jumlah soal utama. Sertakan pembahasan singkat)\",
        \"remedial\": \"(Buatkan $jumlahTambahan soal remedial yang lebih mudah untuk perbaikan siswa)\",
        \"pengayaan\": \"(Buatkan $jumlahTambahan soal pengayaan/HOTS untuk tantangan siswa)\"
    }
    
    Pastikan semua value dalam JSON adalah STRING panjang yang menggunakan '\\n' untuk baris baru.";

    $data = [
        "messages" => [
            ["role" => "system", "content" => $systemPrompt],
            ["role" => "user", "content" => $userPrompt]
        ],
        "model" => "llama-3.3-70b-versatile", 
        "temperature" => 0.8,
        "response_format" => ["type" => "json_object"]
    ];

    // 4. EKSEKUSI CURL DENGAN FIX SSL
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $apiKey,
        "Content-Type: application/json"
    ]);

    // --- BAGIAN PENTING UNTUK INFINITYFREE ---
    // Paksa TLS 1.2
    curl_setopt($ch, CURLOPT_SSLVERSION, 6); 
    
    // Matikan Verifikasi SSL
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    
    // Set User Agent
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)');

    $response = curl_exec($ch);
    $err = curl_error($ch);
    
    curl_close($ch);
    
    if ($err) {
        echo json_encode(['error' => 'Curl error: ' . $err]);
    } else {
        $decoded = json_decode($response, true);
        if (isset($decoded['choices'][0]['message']['content'])) {
            echo $decoded['choices'][0]['message']['content']; 
        } else {
            echo json_encode(['error' => 'Gagal', 'raw' => $decoded]);
        }
    }
}
?>