mirror of
https://github.com/marcogll/talia_bot.git
synced 2026-01-13 13:25:19 +00:00
This commit addresses critical issues in the Talia Bot system, including fixing missing admin flows, correcting agenda privacy logic, implementing voice message transcription, and enforcing RAG guardrails. Key changes include: - Modified the onboarding module to dynamically generate admin menus from available JSON flows, making all admin functions accessible. - Updated the agenda module to correctly use separate work and personal Google Calendar IDs, ensuring privacy and accurate availability. - Implemented audio transcription using the OpenAI Whisper API, replacing placeholder logic and enabling multimodal interaction. - Reworked the sales RAG module to prevent it from generating generic responses when it lacks sufficient context. Additionally, this commit introduces comprehensive documentation as requested: - `AGENTS.md`: Defines the roles and responsibilities of each system agent. - `Agent_skills.md`: Details the technical capabilities and business rules for each agent. - `plan_de_pruebas.md`: Provides a step-by-step test plan to verify the fixes. - `reparacion_vs_refactor.md`: Outlines the immediate repairs performed and proposes a strategic, incremental plan for long-term architectural improvements.
6.1 KiB
6.1 KiB
Plan de Pruebas: Estabilización de Talia Bot
Este documento describe el plan de pruebas paso a paso para verificar la correcta funcionalidad del sistema Talia Bot después de la fase de reparación.
1. Configuración y Entorno
- Qué se prueba: La correcta carga de las variables de entorno.
- Pasos a ejecutar:
- Asegurarse de que el archivo
.envexiste y contiene todas las variables definidas in.env.example. - Prestar especial atención a
WORK_GOOGLE_CALENDAR_IDyPERSONAL_GOOGLE_CALENDAR_ID. - Iniciar el bot.
- Asegurarse de que el archivo
- Resultado esperado: El bot debe iniciarse sin errores relacionados con variables de entorno faltantes. Los logs de inicio deben mostrar que la aplicación se ha iniciado correctamente.
- Qué indica fallo: Un crash al inicio, o errores en los logs indicando que una variable de entorno
Noneo vacía está siendo utilizada donde no debería.
2. Routing por Rol de Usuario
- Qué se prueba: Que cada rol de usuario (
admin,crew,client) vea el menú correcto y solo las opciones que le corresponden. - Pasos a ejecutar:
- Como Admin: Enviar el comando
/start. - Como Crew: Enviar el comando
/start. - Como Cliente: Enviar el comando
/start.
- Como Admin: Enviar el comando
- Resultado esperado:
- Admin: Debe ver el menú de administrador, que incluirá las opciones "Revisar Pendientes", "Agenda", y las nuevas opciones reparadas ("Imprimir Archivo", "Capturar Idea").
- Crew: Debe ver el menú de equipo con "Proponer actividad" y "Ver estatus de solicitudes".
- Cliente: Debe ver el menú de cliente con "Agendar una cita" y "Información de servicios".
- Qué indica fallo: Cualquier rol viendo un menú que no le corresponde, o la ausencia de las opciones esperadas.
3. Flujos de Administrador Faltantes
- Qué se prueba: La visibilidad y funcionalidad de los flujos de "Imprimir Archivo" y "Capturar Idea".
- Pasos a ejecutar:
- Como Admin: Presionar el botón "Imprimir Archivo" (o su equivalente) en el menú.
- Como Admin: Presionar el botón "Capturar Idea" en el menú.
- Resultado esperado:
- Al presionar "Imprimir Archivo", el bot debe iniciar el flujo de impresión, pidiendo al usuario que envíe un documento.
- Al presionar "Capturar Idea", el bot debe iniciar el flujo de captura de ideas, haciendo la primera pregunta definida en
admin_idea_capture.json.
- Qué indica fallo: Que los botones no existan en el menú, o que al presionarlos no se inicie el flujo de conversación correspondiente.
4. Lógica de Agenda y Calendario
- Qué se prueba: La correcta separación de agendas y el tratamiento del tiempo personal.
- Pasos a ejecutar:
- Preparación: Crear un evento en el
PERSONAL_GOOGLE_CALENDAR_IDque dure todo el día de hoy, llamado "Día Personal". Crear otro evento en elWORK_GOOGLE_CALENDAR_IDpara hoy a las 3 PM, llamado "Reunión de Equipo". - Como Admin: Presionar el botón "Agenda" en el menú.
- Preparación: Crear un evento en el
- Resultado esperado: El bot debe responder mostrando únicamente el evento "Reunión de Equipo" a las 3 PM. El "Día Personal" no debe ser visible, pero el tiempo que ocupa debe ser tratado como no disponible si se intentara agendar algo.
- Qué indica fallo: La agenda muestra el evento "Día Personal", o muestra eventos de otros calendarios que no son el de trabajo del admin.
5. Persistencia en Rechazo de Actividades
- Qué se prueba: Que una actividad propuesta por el equipo y rechazada por el admin no vuelva a aparecer como pendiente.
- Pasos a ejecutar:
- Como Crew: Iniciar el flujo "Proponer actividad" y proponer una actividad para mañana.
- Como Admin: Ir a "Revisar Pendientes". Ver la actividad propuesta.
- Como Admin: Presionar el botón para "Rechazar" la actividad.
- Como Admin: Volver a presionar "Revisar Pendientes".
- Resultado esperado: La segunda vez que se revisan los pendientes, la lista debe estar vacía o no debe incluir la actividad que fue rechazada.
- Qué indica fallo: La actividad rechazada sigue apareciendo en la lista de pendientes.
6. RAG (Retrieval-Augmented Generation) y Whisper
- Qué se prueba: La regla de negocio "sin contexto, no hay respuesta" del RAG y la nueva funcionalidad de transcripción de voz.
- Pasos a ejecutar:
- RAG:
a. Como Cliente: Iniciar el flujo de ventas.
b. Cuando se pregunte por la idea de proyecto, responder con un texto que no contenga ninguna palabra clave relevante de
services.json(ej: "quiero construir una casa para mi perro"). - Whisper: a. Como Cliente: Iniciar el flujo de ventas. b. Cuando se pregunte por el nombre, responder con un mensaje de voz diciendo tu nombre.
- RAG:
a. Como Cliente: Iniciar el flujo de ventas.
b. Cuando se pregunte por la idea de proyecto, responder con un texto que no contenga ninguna palabra clave relevante de
- Resultado esperado:
- RAG: El bot debe responder con un mensaje indicando que no puede generar una propuesta con esa información, en lugar de dar una respuesta genérica.
- Whisper: El bot debe procesar el mensaje de voz, transcribirlo, y continuar el flujo usando el nombre transcrito como si se hubiera escrito.
- Qué indica fallo:
- RAG: El bot da un pitch de ventas genérico o incorrecto.
- Whisper: El bot responde con el mensaje "Voice message received (transcription not implemented yet)" o un error.
7. Comandos Slash
- Qué se prueba: La funcionalidad de los comandos básicos, incluyendo el inexistente
/abracadabra. - Pasos a ejecutar:
- Enviar el comando
/start. - Iniciar una conversación y luego enviar
/reset. - Enviar un comando inexistente como
/abracadabra.
- Enviar el comando
- Resultado esperado:
/start: Muestra el menú de bienvenida correspondiente al rol./reset: El bot responde "Conversación reiniciada" y borra el estado actual del flujo./abracadabra: Telegram o el bot deben indicar que el comando no es reconocido.
- Qué indica fallo: Que los comandos
/starto/resetno funcionen como se espera. (No se espera que/abracadabrafuncione, por lo que un fallo sería que hiciera algo).