Saltar al contenido principal

RF21: Usuario registra patrimonio

Descripción

Como usuario autenticado, quiero registrar mis activos patrimoniales (propiedades, vehículos, ahorros, inversiones externas) para conocer mi patrimonio neto y recibir mejores recomendaciones.

El valor de cada activo se cifra a nivel de campo. El patrimonio neto se calcula como activos menos deudas (RF22).

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

Reglas de negocio

  • RN-21.1 — Un activo tiene tipo (catálogo: inmueble, vehículo, ahorro, inversión, otro), nombre, valor estimado y (opcional) fecha de valuación.
  • RN-21.2value se cifra a nivel de campo (AES-256-GCM, clave por usuario).
  • RN-21.3 — El patrimonio neto se recalcula al agregar/editar/eliminar activos o deudas.
  • RN-21.4 — El usuario puede editar o eliminar un activo.

Validaciones de entrada

CampoReglasMensaje de error
typeObligatorio. Valor de catálogo."Selecciona un tipo de activo válido."
nameObligatorio. 2–80 caracteres."Ingresa un nombre válido."
valueObligatorio. Numérico ≥ 0. Máx. 2 decimales."Ingresa un valor válido."

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

Criterios de aceptación

Escenario 1: Registro de activo exitoso

Dado que ingreso tipo, nombre y valor válidos, Cuando guardo el activo, Entonces el sistema lo persiste (valor cifrado) y responde 201 Created, Y el patrimonio neto se actualiza en el dashboard.

Escenario 2: Valor inválido

Dado que ingreso un valor negativo o no numérico, Cuando intento guardar, Entonces el sistema responde 400 con "Ingresa un valor válido".

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 activo válido".

Escenario 4: Entrada maliciosa (seguridad)

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

Criterios no funcionales

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

Diagrama de secuencia