import os
import sys
import requests
import logging
from datetime import datetime
from dotenv import load_dotenv



# Configurar path para importar el módulo storage
current_dir = os.path.dirname(os.path.abspath(__file__))  # /landing/propuestas
parent_dir = os.path.dirname(current_dir)                 # /landing
sys.path.append(parent_dir)


# ========== CONFIGURACIÓN DE RUTAS PARA VARIABLES DE ENTORNO ==========

# Obtener el directorio donde se encuentra este script (landing/propuestas/)
script_dir = os.path.dirname(os.path.abspath(__file__))  # /var/www/dev.api.imparables.cic-ware.com/landing/propuestas

# Devolverme al directorio landing
tasa_dir = os.path.dirname(script_dir)  # /var/www/dev.api.imparables.cic-ware.com/landing

# Devolverme al directorio raíz del proyecto
root_dir = os.path.dirname(tasa_dir)  # /var/www/dev.api.imparables.cic-ware.com

# Construir la ruta hacia el archivo .env en crm/configuraciones/
env_path = os.path.join(root_dir, "crm", "configuraciones", ".env")

# Cargar variables de entorno
if os.path.exists(env_path):
    load_dotenv(env_path)
    logging.info(f"✅ Variables de entorno cargadas desde: {env_path}")
else:
    logging.warning(f"⚠ No se encontró el archivo .env en: {env_path}")




def enviar_chat_claudia(datos: dict) -> dict:
    try:
        sessionId = datos.get("sessionId", "").strip()
        pregunta = datos.get("pregunta", "").strip()
        webhook_url = os.getenv('WEB_HOOK_URI')

        if not sessionId or not pregunta:
            return {
                "success": False,
                "message": "Faltan campos requeridos: nombre y pregunta"
            }

        payload = {
            "sessionId": sessionId,
            "pregunta": pregunta,
            "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        }

        response = requests.post(
            webhook_url,
            json=payload,
            headers={
                "Content-Type": "application/json",
                "Accept": "application/json"
            },
            timeout=30
        )

        if response.status_code != 200:
            return {
                "success": False,
                "message": f"Error HTTP: {response.status_code} - Respuesta: {response.text}"
            }

        try:
            response_data = response.json()
        except Exception as e:
            return {
                "success": False,
                "message": f"Respuesta inválida de n8n: {str(e)}"
            }

        return {
            "success": True,
            "message": response_data.get("message", "Respuesta procesada correctamente"),
            "data": response_data
        }

    except requests.RequestException as e:
        logging.error(f"Error de conexión con n8n: {str(e)}")
        return {
            "success": False,
            "message": f"Error de conexión con n8n: {str(e)}"
        }

    except Exception as e:
        logging.exception("Error inesperado en enviar_chat_n8n")
        return {
            "success": False,
            "message": f"Error al procesar el mensaje de chat: {str(e)}"
        }
