Files
talia_bot/plan_de_pruebas.md
google-labs-jules[bot] 238baa7211 hotfix: Resolve startup error due to missing config variables
This commit fixes a critical `ImportError` that prevented the bot from starting. The error was caused by the `agenda.py` module attempting to import calendar ID variables that were not being loaded into the application's configuration.

The fix involves:
- Updating `talia_bot/config.py` to correctly load the `WORK_GOOGLE_CALENDAR_ID` and `PERSONAL_GOOGLE_CALENDAR_ID` from the environment.
- Removing the obsolete `CALENDAR_ID` variable from the configuration.
- Updating `talia_bot/modules/calendar.py` to import and use the new, more specific `WORK_GOOGLE_CALENDAR_ID` as its default, ensuring consistency with the rest of the application.
2025-12-21 21:23:22 +00:00

102 lines
6.1 KiB
Markdown

# 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**:
1. Asegurarse de que el archivo `.env` existe y contiene todas las variables definidas in `.env.example`.
2. Prestar especial atención a `WORK_GOOGLE_CALENDAR_ID` y `PERSONAL_GOOGLE_CALENDAR_ID`.
3. Iniciar el bot.
- **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 `None` o 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**:
1. **Como Admin**: Enviar el comando `/start`.
2. **Como Crew**: Enviar el comando `/start`.
3. **Como Cliente**: Enviar el comando `/start`.
- **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**:
1. **Como Admin**: Presionar el botón "Imprimir Archivo" (o su equivalente) en el menú.
2. **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**:
1. **Preparación**: Crear un evento en el `PERSONAL_GOOGLE_CALENDAR_ID` que dure todo el día de hoy, llamado "Día Personal". Crear otro evento en el `WORK_GOOGLE_CALENDAR_ID` para hoy a las 3 PM, llamado "Reunión de Equipo".
2. **Como Admin**: Presionar el botón "Agenda" en el menú.
- **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**:
1. **Como Crew**: Iniciar el flujo "Proponer actividad" y proponer una actividad para mañana.
2. **Como Admin**: Ir a "Revisar Pendientes". Ver la actividad propuesta.
3. **Como Admin**: Presionar el botón para "Rechazar" la actividad.
4. **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**:
1. **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").
2. **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.
- **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**:
1. Enviar el comando `/start`.
2. Iniciar una conversación y luego enviar `/reset`.
3. Enviar un comando inexistente como `/abracadabra`.
- **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 `/start` o `/reset` no funcionen como se espera. (No se espera que `/abracadabra` funcione, por lo que un fallo sería que *hiciera* algo).