<?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 ADAPTADO DIRECTAMENTE DEL DE WHATSAPP QUE SÍ FUNCIONA.
    $prompt = "
    Actúa como un estratega experto en SEO local y marketing digital, especializado en optimizar perfiles de Google Business Profile para negocios locales. Tu objetivo es convertir un perfil básico en una poderosa herramienta de ventas y visibilidad en Google.

    ---
    CONTEXTO:
    Un dueño de negocio ha realizado un autodiagnóstico de su perfil de Google Business Profile y ha identificado los siguientes puntos débiles o áreas de mejora:
    ```
    {$pending_tasks_string}
    ```
    ---
    TU MISIÓN:
    Basado exclusivamente en esa lista de puntos débiles, crea un Plan de Acción Táctico y Personalizado. Tu respuesta debe ser una guía práctica y motivadora que el usuario pueda seguir paso a paso.

    REGLAS DE FORMATO Y CONTENIDO (OBLIGATORIAS):
    - Empieza con un TÍTULO PRINCIPAL: ¡Tu Plan de Acción para tu Perfil de Negocio en Google!
    - En la siguiente línea, escribe un PÁRRAFO INTRODUCTORIO: un texto corto y alentador.
    - Usa el delimitador '---COMIENZO DEL PUNTO---' para separar cada punto de acción.
    - Después del delimitador, para cada punto débil, crea un bloque que siga este formato exacto:
      TÍTULO: 1. MEJORA TUS FOTOS
      PORQUÉ: Las fotos de calidad generan confianza y muestran tu profesionalismo, atrayendo más clics.
      PASOS:
      * Sube tu logo en alta calidad.
      * Añade una foto de portada que represente bien tu negocio.
      * Publica fotos de tus productos, tu local o tu equipo trabajando.
    - Usa este formato de manera estricta para todos los puntos débiles. Los pasos deben empezar con un asterisco (*).
    - Asegúrate de que la respuesta final sea únicamente texto plano sin formato Markdown, HTML, ni ningún otro tipo de código.
    - NO incluyas `json` o cualquier otro código en tu respuesta final.
    ";

    $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); // Este es el error que estabas viendo.
        error_log("Error de IA en API (GBP): HTTP " . $http_code . ", cURL: " . $curl_error . ", Raw Response: " . $response_ai);
        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);
    
    // Verificación robusta de la respuesta
    if (!isset($result_array['candidates'][0]['content']['parts'][0]['text'])) {
        http_response_code(500);
        error_log("La respuesta de la IA (GBP) no tuvo el formato esperado. Raw: " . $response_ai);
        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);
        error_log("La respuesta de la IA (GBP) llegó vacía. Raw: " . $response_ai);
        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);
    error_log("Excepción en API (GBP): " . $e->getMessage());
    echo json_encode(['error' => 'Error interno del servidor: ' . $e->getMessage()]);
    exit;
} finally {
    while (ob_get_level() > 0) {
        ob_end_flush();
    }
}
?>