RF25: Usuario consulta dashboard de recomendaciones
Descripción
Como usuario autenticado, quiero ver mis recomendaciones financieras (con su estado y prioridad) para decidir qué acciones tomar para mejorar mi salud financiera.
Lista las recomendaciones generadas por la IA (RF28), con su estado (nueva, pendiente, completada, descartada). Solo muestra las del usuario autenticado.
| Campo | Valor |
|---|---|
| Módulo | Finance Data Collection (FDC) Module — Recomendaciones |
| Actor | Usuario autenticado |
| Endpoint | GET /recommendations |
| Precondiciones | Sesión activa |
| Prioridad | Alta (MVP) |
| Etapa | MVP |
| Requisitos relacionados | RF24, RF26, RF27, RF28 |
Reglas de negocio
- RN-25.1 — Solo se muestran las recomendaciones del
user_iddel JWT (aislamiento de datos). - RN-25.2 — Se pueden filtrar por estado y ordenar por prioridad/fecha.
- RN-25.3 — Cada recomendación incluye título, descripción, categoría, impacto estimado y estado.
- RN-25.4 — Si no hay recomendaciones, se muestra un estado vacío explicativo.
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
status (query, opcional) | Enum (new, pending, completed, dismissed). | "Estado no válido." (400) |
Authorization | Bearer válido. | "Sesión no válida." (401) |
Criterios de aceptación
Escenario 1: Consulta con recomendaciones
Dado que tengo recomendaciones generadas,
Cuando abro el dashboard de recomendaciones,
Entonces el sistema lista mis recomendaciones con estado y prioridad,
Y responde 200 OK.
Escenario 2: Filtrado por estado
Dado que selecciono el filtro "pendientes", Cuando se aplica, Entonces solo se muestran las recomendaciones en estado pendiente.
Escenario 3: Sin recomendaciones
Dado que aún no tengo recomendaciones, Cuando abro el dashboard, Entonces se muestra un estado vacío explicativo.
Escenario 4: Aislamiento de datos (seguridad)
Dado que se manipula la petición para ver recomendaciones de otro usuario,
Cuando el backend procesa,
Entonces usa el user_id del JWT y nunca devuelve datos de terceros.
Criterios no funcionales
- Respuesta < 1.5 s; paginación si hay muchas recomendaciones.
- Comunicación TLS 1.2+.