<?php
declare(strict_types=1);
require __DIR__ . '/_bootstrap.php';

header('Content-Type: application/json; charset=utf-8');
header('Cache-Control: no-store, max-age=0');

if (!request_is_post()) {
    http_response_code(405);
    echo json_encode(['ok' => false, 'message' => 'Yalnız POST isteği kabul edilir.'], JSON_UNESCAPED_UNICODE);
    exit;
}

verify_csrf();

try {
    if (!rate_limit('admin_ai_article_' . (int) (admin_user()['id'] ?? 0), 8, 600)) {
        throw new RuntimeException('Çok kısa sürede fazla yapay zekâ isteği gönderildi. Birkaç dakika sonra tekrar deneyin.');
    }

    $mode = (string) ($_POST['mode'] ?? 'keyword');
    $mode = $mode === 'prompt' ? 'prompt' : 'keyword';
    $request = trim((string) ($_POST['request'] ?? ''));
    $model = trim((string) setting('gemini_model', 'gemini-2.5-flash-lite'));
    $article = gemini_generate_editor_article($request, $mode, $model);

    audit_log('ai_generate', 'posts', null, $mode === 'prompt' ? 'Özel prompt ile makale taslağı üretildi.' : 'Anahtar kelime ile makale taslağı üretildi.');
    echo json_encode([
        'ok' => true,
        'message' => 'Makale taslağı hazırlandı. Kontrol edip Kaydet butonuna basın.',
        'article' => $article,
    ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
} catch (Throwable $e) {
    http_response_code(422);
    echo json_encode(['ok' => false, 'message' => $e->getMessage()], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
}
