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

// --- [PENTING UNTUK HOSTING] MATIKAN WARNING ---
// Agar respon JSON tidak tercampur dengan pesan warning server
error_reporting(0);
ini_set('display_errors', 0);

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

// --- 1. KONFIGURASI 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') {
    $inputJSON = file_get_contents('php://input');
    $input = json_decode($inputJSON, true);

    // Validasi input kosong
    if (!$input) {
        echo json_encode(['error' => 'Input data tidak terbaca.']);
        exit;
    }

    $mapel  = $input['mapel'] ?? '-';
    $judul  = $input['judul'] ?? '-';
    $topik  = $input['topik'] ?? '-';
    $materi = $input['materi'] ?? '-';
    $jenis  = $input['jenis'] ?? 'Eksperimen';
    $mode   = $input['mode'] ?? 'Kelompok';

    // --- 2. SUSUN PROMPT ---
    $systemPrompt = "Anda adalah Guru SMK Profesional. Tugas Anda menyusun konten LKPD yang terstruktur rapi.";
    
    $userPrompt = "Buatkan isi detail untuk LKPD.
    
    Data:
    - Mapel: $mapel
    - Topik: $topik ($materi)
    - Jenis: $jenis
    
    INSTRUKSI FORMAT OUTPUT (WAJIB JSON & LIST VERTIKAL):
    Berikan respons HANYA format JSON valid. Gunakan '\\n' untuk baris baru.
    
    Struktur JSON:
    {
        \"tujuan\": \"(Tuliskan 3-4 tujuan pembelajaran. Gunakan penomoran 1., 2., dst. Pisahkan antar poin dengan \\n)\",
        \"alat\": \"(WAJIB format list vertikal menggunakan tanda strip (-). Contoh: \\n- Multimeter\\n- Tang Kombinasi)\",
        \"langkah\": \"(Langkah kerja prosedural. Gunakan penomoran 1., 2., dst. Pisahkan dengan \\n)\",
        \"diskusi\": \"(Pertanyaan diskusi. Gunakan penomoran 1., 2., dst. Pisahkan dengan \\n)\"
    }
    
    Pastikan 'alat' TIDAK ditulis menyamping pakai koma, tapi berjejer ke bawah.";

    // --- 3. PAYLOAD ---
    $data = [
        "model" => $model,
        "messages" => [
            ["role" => "system", "content" => $systemPrompt],
            ["role" => "user", "content" => $userPrompt]
        ],
        "temperature" => 0.5,
        "response_format" => ["type" => "json_object"]
    ];

    // --- 4. EKSEKUSI CURL ---
    $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: BYPASS SSL HANDSHAKE FAILURE ---
    // 1. Paksa menggunakan TLS versi 1.2 (Standar minimal saat ini)
    curl_setopt($ch, CURLOPT_SSLVERSION, 6); // 6 = CURL_SSLVERSION_TLSv1_2

    // 2. Matikan verifikasi sertifikat (Tidak aman utk bank, tapi ok utk eksperimen ini)
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    // 3. User Agent Browser (Agar tidak dikira bot PHP)
    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) {
        // Tampilkan error asli cURL untuk debugging
        echo json_encode(['error' => 'Gagal Koneksi: ' . $err]);
    } else {
        $decoded = json_decode($response, true);
        if (isset($decoded['choices'][0]['message']['content'])) {
            echo $decoded['choices'][0]['message']['content']; 
        } else {
            // Jika Groq memblokir, biasanya responnya kosong atau error HTML
            echo json_encode(['error' => 'API menolak request (Block/Limit).', 'raw' => substr($response, 0, 100)]);
        }
    }
}
?>