<?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 ESPECIALIZADO PARA PERFILES DE INSTAGRAM
    $prompt = "
    Actúa como un estratega de redes sociales y experto en branding visual, especializado en optimizar perfiles de negocio en Instagram. Tu objetivo es transformar un perfil básico en un imán de seguidores de calidad y clientes potenciales.

    ---
    CONTEXTO:
    Un emprendedor ha realizado un autodiagnóstico de su perfil de Instagram y ha identificado los siguientes puntos débiles:
    ```
    {$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 visualmente enfocada que el usuario pueda implementar de inmediato.

    REGLAS DE FORMATO Y CONTENIDO (OBLIGATORIAS):
    - Empieza con un TÍTULO PRINCIPAL: ¡Tu Plan de Acción para Triunfar en Instagram!
    - En la siguiente línea, escribe un PÁRRAFO INTRODUCTORIO: un texto corto, inspirador y que resalte la importancia de una buena primera impresión en Instagram.
    - 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. OPTIMIZA TU BIOGRAFÍA
      PORQUÉ: Tu biografía son los 3 segundos que tienes para convencer a un nuevo visitante de que debe seguirte. Debe ser clara, concisa y magnética.
      PASOS:
      * Define claramente quién eres y qué haces.
      * Incluye una llamada a la acción clara que dirija al enlace de tu perfil.
      * Usa emojis para estructurar la información y hacerla más visual.
    - 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.
    ";

    $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);
        error_log("Error de IA en API (Instagram): 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);
    
    if (!isset($result_array['candidates'][0]['content']['parts'][0]['text'])) {
        http_response_code(500);
        error_log("La respuesta de la IA (Instagram) 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 (Instagram) 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 (Instagram): " . $e->getMessage());
    echo json_encode(['error' => 'Error interno del servidor: ' . $e->getMessage()]);
    exit;
} finally {
    while (ob_get_level() > 0) {
        ob_end_flush();
    }
}
?>