Files
motor-de-encuestas/docs/adr/ADR-003-consentimiento-versionado.md

55 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ADR-003 — Consentimiento granular, versionado e inmutable
- **Estado:** Aceptado
- **Fecha:** (completar con fecha de commit)
---
## Contexto
Bajo lógica RGPD / Ley 7593, el consentimiento para datos sensibles debe ser específico, informado y
**demostrable**: hay que poder probar qué consintió cada persona, cuándo, y contra qué texto. Además,
el director planteó dos caminos de consentimiento que pueden coexistir y divergir: documentos
firmados (empresa/encuestado) y checkboxes in-app.
## Decisión
### 1. El consentimiento es evidencia, no solo UI
Mostrar el checkbox no alcanza. Cada respuesta guarda un **registro de consentimiento** con: versión
del texto, scopes efectivamente aceptados, timestamp. Es **inmutable** (solo INSERT/SELECT; sin
UPDATE/DELETE).
### 2. Versionado del texto
El texto de consentimiento vive en `consent_versions`. Si cambia el wording en el futuro, las
respuestas viejas **conservan su versión vieja**. Nunca se reescribe retroactivamente lo que alguien
aceptó.
### 3. Granular por capas
Scopes separados por propósito, aceptables independientemente:
`operativo` (dashboard de su empresa), `macro_n1` (agregados anónimos del estudio país), y a futuro
`macro_n2` / `macro_n3`. **v1 ofrece solo `operativo` + `macro_n1`** (las encuestas son anónimas y
Modo A sin Nivel 3). Un titular puede aceptar operativo y rechazar macro.
### 4. La elección del titular gana sobre la firma de la empresa
Si la empresa firmó "todos los datos van al macro" pero el empleado destildó macro en la app, la
respuesta NO entra al macro. El registro in-app del titular es la fuente de verdad sobre su propio dato.
### 5. Honestidad sobre derechos en encuestas anónimas
En encuesta anónima:
- No se puede hacer firmar al encuestado nada identificable (destruiría el anonimato) → el registro
in-app es el **único** registro de consentimiento posible; no se complementa con firma del titular.
- No se puede **revocar** después (no se puede ubicar la respuesta). El texto debe declararlo
explícitamente **antes** de responder: "esta encuesta es anónima; no vas a poder revocar luego".
- El wizard, al togglear anonimato, cambia qué derechos se pueden ofrecer y ajusta el texto.
## Consecuencias
- (+) Demostrabilidad ante la ANPDP; trazabilidad por versión.
- (+) Respeta la autonomía del titular sobre su dato sensible.
- () Un mismo dato puede estar en el dashboard de la empresa pero excluido del macro (lógica de
reportes debe respetar `granted_scopes` por fila — no es opcional).
- () Encuestas anónimas pierden el derecho de revocación; debe comunicarse con transparencia.
## Relación con otros ADR
Implementa el componente de consentimiento de ADR-001. El esquema está en `DATA_MODEL.md`
(`consent_versions`, `consent_records`).