Saltar al contenido principal

RF12: Usuario consulta dashboard de datos financieros

Descripción

Como usuario autenticado, quiero ver mi dashboard financiero (saldos, ingresos, gastos, deuda y patrimonio consolidados) para entender de un vistazo el estado de mi dinero.

El dashboard agrega datos de cuentas, movimientos e inversiones del usuario. Los campos financieros se almacenan cifrados a nivel de columna (AES-256-GCM con clave por usuario) y se descifran en memoria al consultarlos, conforme a la Estrategia de Cifrado §4.2. Ningún dato financiero se cachea en disco del dispositivo.

CampoValor
MóduloFinance Data Collection (FDC) Module
ActorUsuario autenticado
EndpointGET /finance/dashboard
PrecondicionesSesión activa; el usuario tiene datos financieros registrados o conectados
PrioridadAlta (MVP)
EtapaMVP
Requisitos relacionadosRF14, RF16RF23, RF25

Reglas de negocio

  • RN-12.1 — El dashboard solo muestra datos del usuario autenticado (user_id del JWT); nunca de terceros (control de acceso por propiedad del recurso).
  • RN-12.2 — Los montos se devuelven ya descifrados y agregados por el backend; el cliente no descifra nada.
  • RN-12.3 — Si el usuario aún no tiene datos, se muestra un estado vacío con llamada a la acción (conectar cuenta / registrar movimiento).
  • RN-12.4 — Los datos financieros viven solo en memoria de la app durante la sesión; al cerrar/expirar se descartan (Cifrado §7).

Validaciones de entrada

CampoReglasMensaje de error
AuthorizationHeader Bearer válido."Sesión no válida." (401)
period (query, opcional)Valor de un enum (month, quarter, year)."Periodo no válido." (400)

Criterios de aceptación

Escenario 1: Consulta exitosa con datos

Dado que tengo cuentas y movimientos registrados, Cuando abro el dashboard, Entonces el sistema agrega y descifra mis datos, Y muestra saldo total, ingresos, gastos, deuda y patrimonio del periodo, Y responde 200 OK en menos de 2 s.

Escenario 2: Usuario sin datos

Dado que aún no registré ni conecté datos financieros, Cuando abro el dashboard, Entonces se muestra un estado vacío con acciones para empezar (conectar cuenta / registrar movimiento).

Escenario 3: Aislamiento de datos (seguridad)

Dado que un usuario manipula la petición para pedir datos de otro user_id, Cuando el backend procesa la solicitud, Entonces ignora cualquier user_id del cliente y usa el del JWT, Y nunca devuelve datos de otro usuario.

Escenario 4: Sin sesión válida

Dado que el access token es inválido o expiró, Cuando consulto el dashboard, Entonces el sistema responde 401 Unauthorized.

Criterios no funcionales

  • Respuesta < 2 s con agregaciones; usar la réplica de lectura cuando aplique.
  • Datos financieros no se persisten en disco del dispositivo.
  • Comunicación sobre TLS 1.2+.

Diagrama de secuencia