Saltar al contenido principal

RF22: Usuario registra deuda

Descripción

Como usuario autenticado, quiero registrar mis deudas (créditos, tarjetas, préstamos) para que Finnova calcule mi patrimonio neto y proponga estrategias para reducirlas.

El saldo de la deuda se cifra a nivel de campo. Las deudas son insumo clave del análisis de IA (estrategias de pago y reducción de deuda).

CampoValor
MóduloFinance Data Collection (FDC) Module
ActorUsuario autenticado
EndpointPOST /finance/debts
PrecondicionesSesión activa
PrioridadMedia (MVP)
EtapaMVP
Requisitos relacionadosRF21, RF12, RF28

Reglas de negocio

  • RN-22.1 — Una deuda tiene tipo (catálogo), acreedor, saldo, tasa de interés (opcional) y pago mensual (opcional).
  • RN-22.2balance se cifra a nivel de campo (AES-256-GCM, clave por usuario).
  • RN-22.3 — Las deudas reducen el patrimonio neto y alimentan recomendaciones de reducción de deuda.
  • RN-22.4 — El usuario puede editar el saldo, registrar abonos o eliminar la deuda.

Validaciones de entrada

CampoReglasMensaje de error
typeObligatorio. Valor de catálogo (tarjeta, préstamo, hipoteca, otro)."Selecciona un tipo de deuda válido."
creditorObligatorio. 2–80 caracteres."Ingresa un acreedor válido."
balanceObligatorio. Numérico ≥ 0. Máx. 2 decimales."Ingresa un saldo válido."
interestRateOpcional. Numérico 0–100."Ingresa una tasa válida (0–100)."

Validación de tipos y rangos con consultas parametrizadas; no se aceptan inyecciones SQL.

Criterios de aceptación

Escenario 1: Registro de deuda exitoso

Dado que ingreso tipo, acreedor y saldo válidos, Cuando guardo la deuda, Entonces el sistema la persiste (saldo cifrado) y responde 201 Created, Y el patrimonio neto se ajusta y aparece como insumo de recomendaciones.

Escenario 2: Saldo o tasa inválidos

Dado que ingreso un saldo negativo o una tasa fuera de 0–100, Cuando intento guardar, Entonces el sistema responde 400 con el mensaje correspondiente.

Escenario 3: Tipo no válido

Dado que envío un tipo fuera del catálogo, Cuando el backend valida, Entonces responde 400 con "Selecciona un tipo de deuda válido".

Escenario 4: Entrada maliciosa (seguridad)

Dado que ingreso una inyección SQL en el acreedor, Cuando el backend procesa, Entonces la entrada se rechaza/sanitiza y no se ejecuta.

Criterios no funcionales

  • Saldo cifrado en reposo; respuesta < 1 s.
  • Comunicación TLS 1.2+.

Diagrama de secuencia