import json
import requests
import sys

from app.database import get_raw_conn
from app.generator import fetch_api_keys

conn = next(get_raw_conn())
keys = fetch_api_keys(conn)
if not keys:
    print("No keys")
    sys.exit(1)

groq_key = None
for k in keys:
    notes = json.loads(k['notes']) if k['notes'] else {}
    if str(notes.get('api_provider', '')).lower() == 'groq':
        groq_key = str(k['api_key']).strip()
        break

if not groq_key:
    print("No groq key")
    sys.exit(1)

endpoint = "https://api.groq.com/openai/v1/chat/completions"
headers = {"Content-Type": "application/json", "Authorization": f"Bearer {groq_key}"}

prompt = (
    "Anda adalah pakar penilai peperiksaan Kementerian Pendidikan Malaysia (KPM). "
    "Sila jana 2 soalan jenis Objektif bagi subjek Sains "
    "untuk Tahun 4 di bawah topik/tema 'Sifat Cahaya - Pembiasan Cahaya'. "
    "Jenis pentaksiran adalah untuk Pentaksiran Bilik Darjah (PBD). "
    "Pastikan soalan mengikut standard silibus DSKP terkini dan aras taksonomi Bloom (TP1 - TP6).\n\n"
    "Berikan output HANYA dalam format JSON array yang sah seperti struktur ini:\n"
    "[\n"
    "  {\n"
    "    \"teks_soalan\": \"...\",\n"
    "    \"tahap_penguasaan\": 3,\n"
    "    \"image_prompt_english\": \"(Optional) A short english prompt describing a practical diagram or image for this question. If none needed, leave empty.\",\n"
    "    \"pilihan_jawapan\": [\n"
    "      {\"teks_pilihan\": \"...\", \"is_correct\": true},\n"
    "      {\"teks_pilihan\": \"...\", \"is_correct\": false}\n"
    "    ]\n"
    "  }\n"
    "]\n"
    "PENTING: Jangan sertakan blok ```json atau penerangan tambahan. Hanya pulangkan array JSON."
)

payload = {
    "model": "llama-3.3-70b-versatile",
    "messages": [
        {"role": "system", "content": "You output JSON only."},
        {"role": "user", "content": prompt}
    ],
    "temperature": 0.7
}

res = requests.post(endpoint, json=payload, headers=headers)
print(res.status_code)
print(res.text)
