<?php
ob_start();
require_once __DIR__ . '/../config.php';

header('Content-Type: application/json');

try {
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        http_response_code(405);
        echo json_encode(['error' => 'Método no permitido. Solo se aceptan solicitudes POST.']);
        exit;
    }

    if (!defined('GEMINI_API_KEY') || empty(GEMINI_API_KEY)) {
        http_response_code(500);
        echo json_encode(['error' => 'La clave de API de Gemini no está configurada en el servidor.']);
        exit;
    }

    $apiKey = GEMINI_API_KEY;
    $json_data = file_get_contents('php://input');
    $data = json_decode($json_data, true);

    if (json_last_error() !== JSON_ERROR_NONE) {
        http_response_code(400);
        echo json_encode(['error' => 'Formato de datos JSON inválido.']);
        exit;
    }

    if (!isset($data['pending_tasks']) || !is_array($data['pending_tasks']) || empty($data['pending_tasks'])) {
        http_response_code(400);
        echo json_encode(['error' => 'No se recibieron tareas pendientes para generar la estrategia.']);
        exit;
    }

    $pending_tasks_string = implode("\n", $data['pending_tasks']);

    // PROMPT CORREGIDO CON REGLAS MÁS ESTRICTAS
    $prompt = "
    Actúa como un consultor experto en SEO Local para el mercado de Estados Unidos. Tu objetivo es proporcionar un plan de acción claro y un 'Paquete de Consistencia de Marca' basado en una lista de puntos débiles.

    ---
    CONTEXTO:
    Un dueño de negocio en USA ha realizado una auditoría y ha identificado los siguientes puntos débiles específicos:
    ```
    {$pending_tasks_string}
    ```
    ---
    TU MISIÓN Y REGLAS DE FORMATO ESTRICTAS:
    1.  **ENCABEZADO:** Empieza la respuesta con un TÍTULO PRINCIPAL y un PÁRRAFO INTRODUCTORIO. El título debe ser: ¡Tu Auditoría Detallada y Plan de Acción de SEO Local!
    2.  **PUNTOS DE ACCIÓN:** Después del encabezado, para cada punto débil en la lista, crea un bloque de texto que siga EXACTAMENTE este formato, usando el delimitador '---COMIENZO DEL PUNTO---' para separar cada uno:
        ---COMIENZO DEL PUNTO---
        TÍTULO: [Un título claro y accionable]
        PORQUÉ: [Una explicación breve y persuasiva de la importancia]
        PASOS:
        * [Paso 1 a seguir]
        * [Paso 2 a seguir]
        * [Paso 3 a seguir]
    3.  **PAQUETE DE MARCA:** Después de todos los puntos de acción, usa el delimitador '---PAQUETE DE MARCA---' y genera una sección final con este contenido exacto:
        ---PAQUETE DE MARCA---
        **Nombre Exacto del Negocio (Legal Name):** [Nombre del negocio]
        **Dirección Exacta (Street, City, State, ZIP):** [Dirección completa]
        **Teléfono Principal (Main Phone):** [Número de teléfono]
        **Descripción Estandarizada (150-200 palabras):** [Genera una descripción de negocio profesional y persuasiva, optimizada con palabras clave relevantes, que el usuario pueda copiar y pegar en todos los directorios.]
    4.  **REGLAS FINALES:** NO incluyas ninguna otra explicación o texto fuera de esta estructura. NO uses delimitadores como '---FIN DEL PUNTO---'. La respuesta debe ser únicamente texto plano.
    ";

    $apiUrl = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=' . $apiKey;

    $payload = [
        'contents' => [['parts' => [['text' => $prompt]]]],
        'generationConfig' => [
            'temperature' => 0.7,
            'top_k' => 40,
            'top_p' => 0.95,
        ]
    ];

    $ch = curl_init($apiUrl);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => json_encode($payload),
        CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
        CURLOPT_TIMEOUT => 90
    ]);
    
    $response_ai = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $curl_error = curl_error($ch);
    curl_close($ch);

    if ($response_ai === false || $http_code !== 200) {
        http_response_code(502);
        echo json_encode(['error' => 'No se pudo obtener una respuesta válida del servicio de IA. Inténtalo de nuevo.']);
        exit;
    }

    $result_array = json_decode($response_ai, true);
    
    if (!isset($result_array['candidates'][0]['content']['parts'][0]['text'])) {
        http_response_code(500);
        echo json_encode(['error' => 'La respuesta de la IA llegó con un formato inesperado.']);
        exit;
    }
    
    $response_text = $result_array['candidates'][0]['content']['parts'][0]['text'];

    if (empty(trim($response_text))) {
        http_response_code(500);
        echo json_encode(['error' => 'La respuesta de la IA llegó vacía.']);
        exit;
    }

    ob_end_clean();
    echo json_encode(['generated_content' => trim($response_text)]);
    exit;

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['error' => 'Error interno del servidor: ' . $e->getMessage()]);
    exit;
} finally {
    while (ob_get_level() > 0) {
        ob_end_flush();
    }
}
?>