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

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    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.']);
        exit;
    }
    
    $data = json_decode(file_get_contents('php://input'), true);
    
$prompt = "
Actúa como un copywriter de elite y estratega de marca, experto en aplicar principios de persuasión y PNL para conectar con las necesidades emocionales profundas del consumidor. Tu especialidad es crear mensajes para negocios locales B2C.

**Contexto del Negocio que Pide la Propuesta:**
- **Nombre del Negocio:** {$data['businessName']}
- **Descripción (qué hacen):** {$data['businessDescription']}
- **Tipo de Clientes (a quién sirven):** {$data['clientTypes']}
- **Ciudades donde Operan: ** {$data['cities']}

**Tu Tarea:**
Basado en el contexto, genera DOS OPCIONES de Propuesta de Valor. Deben ser radicalmente distintas en su enfoque emocional. Cada opción debe tener una versión en español y su traducción al inglés.

**Principios Clave para una Propuesta de Valor Exitosa:**
- **Contexto Local Relevante:** El tono y lenguaje deben sentirse cercanos y apropiados para las ciudades mencionadas.
- **Conexión Emocional (No solo Lógica):** No te limites a describir el servicio. Conecta con el **dolor** que elimina y el **placer** que proporciona. ¿Qué frustración, miedo o estrés desaparece? ¿Qué alivio, orgullo o tranquilidad se obtiene?
- **Enfoque en la Transformación:** El beneficio principal debe ser el cambio en la vida del cliente. ¿Cómo es su vida 'antes' y cómo es 'después' de usar el servicio?
- **Diferenciador Específico:** Extrae de la descripción el 'porqué' son especiales (rapidez, calidad, garantía, resultados) y tradúcelo a un beneficio para el cliente (tranquilidad, confianza, valor, etc).

**Instrucciones Específicas para las Opciones:**

- **Opción 1 (Enfoque: Alivio y Transformación Rápida):**
  Construye la propuesta alrededor de la **eliminación de un problema urgente y la transformación emocional que esto genera.**
  **Fórmula a seguir:** 'Ayudamos a [Tipo de Clientes] en [Ciudades] a dejar atrás la [emoción negativa del problema] para disfrutar de la [emoción/resultado positivo].'
  **Ejemplo de estructura (NO de texto):** En lugar de 'Arreglamos aires acondicionados', piensa en 'Ayudamos a familias en Houston a dejar atrás el calor sofocante para disfrutar de un hogar fresco y confortable en horas.'

- **Opción 2 (Enfoque: Estatus y Resultado Ideal):**
  Construye la propuesta para el cliente que busca **lo mejor y quiere sentirse inteligente por su elección.** Se enfoca en el orgullo y la tranquilidad de obtener un resultado superior.
  **Fórmula a seguir:** 'Para [Tipo de Clientes] en [Ciudades] que buscan más que una solución básica, ofrecemos [diferenciador clave] para que obtengas [resultado aspiracional y sentimiento de orgullo/seguridad].'
  **Ejemplo de estructura (NO de texto):** En lugar de 'Pintamos casas', piensa en 'Para los propietarios en Dallas que ven su casa como una inversión, ofrecemos un acabado de pintura de alta gama que garantiza una apariencia de lujo y protección duradera.'

**Reglas Importantes (Qué NO hacer):**
- **NO uses jerga de negocios o marketing.**
- **NO uses un lenguaje corporativo o robótico.** El tono debe ser humano y conectar emocionalmente.
- **NO escribas frases genéricas** como 'soluciones integrales' o 'calidad y servicio'. Muestra, no digas.

**Formato de Salida Requerido:**
La respuesta DEBE ser un único objeto JSON válido con CUATRO claves: `option1_es`, `option1_en`, `option2_es`, `option2_en`. No incluyas texto explicativo, solo el JSON.
";

    $apiUrl = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=' . GEMINI_API_KEY;
    
    // Schema que espera las CUATRO propiedades
    $payload = [
        'contents' => [['parts' => [['text' => $prompt]]]],
        'generationConfig' => [
            'response_mime_type' => 'application/json',
            'response_schema' => [
                'type' => 'OBJECT',
                'properties' => [
                    'option1_es' => ['type' => 'STRING'],
                    'option1_en' => ['type' => 'STRING'],
                    'option2_es' => ['type' => 'STRING'],
                    'option2_en' => ['type' => 'STRING']
                ],
                'required' => ['option1_es', 'option1_en', 'option2_es', 'option2_en']
            ]
        ]
    ];
    
    $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_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.']);
        exit;
    }

    $result_array = json_decode($response_ai, true);
    
    // =========== CÓDIGO MEJORADO ===========
    // 1. Extraer el texto de la respuesta de la IA.
    $raw_response_text = $result_array['candidates'][0]['content']['parts'][0]['text'] ?? '';
    // 2. Decodificar el texto JSON a un array de PHP.
    $response_data = json_decode($raw_response_text, true);

    // 3. Verificar si la decodificación fue exitosa y si las claves requeridas existen.
    if ($response_data === null || !isset($response_data['option1_es']) || !isset($response_data['option2_es'])) {
        http_response_code(500);
        echo json_encode(['error' => 'La IA no devolvió una propuesta con las claves esperadas.']);
        exit;
    }

    // 4. Limpiar el búfer de salida y enviar una respuesta JSON limpia y validada.
    ob_end_clean();
    echo json_encode($response_data);
    exit;
}
?>