55 lines
2.7 KiB
Markdown
55 lines
2.7 KiB
Markdown
# 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`).
|