Saltar al contenido principal

RF70: Usuario gestiona sus consentimientos

Descripción

Como usuario autenticado, quiero otorgar, consultar y revocar de forma independiente mis consentimientos (privacidad, análisis con IA, conexión bancaria, marketing) para controlar cómo se tratan mis datos y ejercer mis derechos bajo la LFPDPPP/GDPR.

Hasta ahora el consentimiento se capturaba como un único booleano en el registro (RF01 privacyConsent), pero distintos tratamientos exigen consentimientos separados y específicos: el análisis con IA (RF28, RN-28.1) y la conexión bancaria (RF14, RN-14.3) son finalidades distintas. Este requisito modela los consentimientos como registros versionados, granulares y revocables, conforme a Compliance y Privacidad §6.

CampoValor
MóduloAuth Module (Consent Service)
ActorUsuario autenticado
EndpointGET /auth/consents · PUT /auth/consents/:type
PrecondicionesSesión activa
PrioridadAlta (MVP — requisito de cumplimiento)
EtapaMVP
Requisitos relacionadosRF01, RF14, RF28, Compliance §4 y §6

Reglas de negocio

  • RN-70.1 — Tipos de consentimiento gestionados: privacy (aviso de privacidad, obligatorio para usar la app), ai_analysis (análisis financiero con IA), bank_connection (conexión a cuentas bancarias), marketing (comunicaciones promocionales). La lista es extensible.
  • RN-70.2 — Cada consentimiento se persiste como un registro versionado: tipo, estado (granted/revoked), versión del texto/aviso aceptado, fecha y origen. No se sobrescribe el histórico (auditable — ver RNF-06).
  • RN-70.3 — El consentimiento privacy es obligatorio: sin él no se crea ni se mantiene la cuenta. Los demás son opcionales y su ausencia/revocación solo desactiva la funcionalidad asociada, no bloquea la app.
  • RN-70.4 — Revocar ai_analysis detiene el procesamiento de IA (RF28) en la siguiente ejecución; revocar bank_connection dispara la desconexión y revocación de tokens del agregador (RF14, RN-14.5).
  • RN-70.5 — Cualquier cambio de consentimiento se registra en la bitácora de auditoría/privacidad.
  • RN-70.6 — Si el aviso de privacidad cambia de versión, el usuario debe re-otorgar privacy antes de seguir usando funcionalidades que dependan de la nueva versión.

Validaciones de entrada

CampoReglasMensaje de error
typeObligatorio. Uno de los tipos soportados (RN-70.1)."Tipo de consentimiento no válido."
grantedObligatorio. Booleano."Indica si otorgas o revocas el consentimiento."
AuthorizationBearer válido."Sesión no válida." (401)

Criterios de aceptación

Escenario 1: Consultar mis consentimientos

Dado que tengo una sesión activa, Cuando consulto GET /auth/consents, Entonces el sistema devuelve el estado vigente de cada tipo de consentimiento con su versión y fecha.

Escenario 2: Otorgar un consentimiento opcional

Dado que no había otorgado ai_analysis, Cuando lo otorgo, Entonces el sistema crea un registro granted versionado, Y a partir de la siguiente ejecución el análisis con IA (RF28) puede procesar mis datos.

Escenario 3: Revocar el consentimiento de IA

Dado que tenía ai_analysis otorgado, Cuando lo revoco, Entonces el sistema registra el estado revoked, Y RF28 deja de procesar mis datos en la siguiente ejecución, Y las recomendaciones existentes se ocultan o eliminan según la política de retención.

Escenario 4: Revocar la conexión bancaria

Dado que tenía bank_connection otorgado y una cuenta conectada, Cuando revoco el consentimiento, Entonces se desconecta la cuenta y se revoca el token con el agregador (RF14), Y se detiene la sincronización.

Escenario 5: Intentar revocar el consentimiento obligatorio

Dado que intento revocar privacy, Cuando envío la solicitud, Entonces el sistema informa que ese consentimiento es obligatorio para usar la app, Y ofrece, en su lugar, la ruta de eliminación de cuenta (RF06).

Escenario 6: Nueva versión del aviso de privacidad

Dado que el aviso de privacidad se actualizó a una nueva versión, Cuando abro la app, Entonces se me solicita revisar y re-otorgar privacy antes de continuar.

Criterios no funcionales

  • Historial de consentimientos inmutable y auditable (RNF-06).
  • Cambios de consentimiento aplicados de forma consistente con los módulos dependientes (IA, banca).
  • Comunicación TLS 1.2+.

Diagrama de secuencia