Este backend está desarrollado en Flask y proporciona un servicio REST para gestionar consultas y almacenamiento de conversaciones en una base de datos SQLite. Se conecta con un servicio de Denodo para obtener respuestas y almacena los mensajes en una tabla de historial.
- Python 3.x
- Virtualenv (opcional pero recomendado)
- Dependencias listadas en
requirements.txt - Instalacion de denodo y ai-sdk
# Clonar el repositorio
cd backend
# Crear un entorno virtual (opcional pero recomendado)
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
# Instalar dependencias
pip install -r requirements.txtpython app.pyEl servicio se ejecutará en http://0.0.0.0:80/.
Permite enviar una pregunta a Denodo y almacena la respuesta en la base de datos.
{
"chat_id": "123",
"message": "¿Quién ganó las Olimpiadas 2024?"
}{
"chat_id": "123",
"pregunta": "¿Quién ganó las Olimpiadas 2024?",
"respuesta": "El país ganador fue..."
}Recupera el historial de mensajes asociados a un chat_id específico.
curl -X GET http://localhost/history/123{
"chat_id": "123",
"mensajes": [
{
"msg_id": 1,
"pregunta": "¿Quién ganó las Olimpiadas 2024?",
"respuesta": "El país ganador fue...",
"timestamp": "2025-02-23 12:34:56"
}
]
}Obtiene una lista de todos los chat_id disponibles en la base de datos.
curl -X GET http://localhost/chats{
"chats": ["123", "456", "789"]
}El backend utiliza una base de datos SQLite para almacenar el historial de chats. La base de datos se encuentra en data/history.db.
CREATE TABLE chat_history (
chat_id TEXT NOT NULL,
msg_id INTEGER PRIMARY KEY AUTOINCREMENT,
pregunta TEXT NOT NULL,
respuesta TEXT NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);El backend realiza peticiones al servicio Denodo utilizando autenticación básica y parámetros específicos para la consulta.
response = requests.get(
DENODO_URL,
params=params,
auth=DENODO_AUTH,
headers={"Accept": "application/json"},
)Los parámetros enviados incluyen información sobre la consulta y la base de datos jjoo.
- Se valida que los parámetros sean correctos antes de procesar las solicitudes.
- Si una solicitud a Denodo falla, se captura el error y se devuelve un código de error
500. - Si la base de datos tiene un problema, se captura la excepción y se devuelve una respuesta con el error.