Skip to main content
Forma B — append-only. Esta es probablemente la decisión de modelado más importante del schema: un booleano accepts_marketing responde “¿puedo escribirle hoy?” pero no responde “¿puedo demostrar que aceptó, cuándo, desde dónde y sobre qué texto?”, que es lo que pregunta un regulador. El estado vigente se deriva tomando la fila más reciente por (contacto, canal, propósito). Nunca se actualiza una fila anterior.

Clave primaria

Atributos específicos

Claves foráneas

Atributos base

Restricciones e índices

RLS y particionamiento

RLS activa por tenant_id. Candidata a partición mensual si el volumen lo justifica; no designada en v1. El consentimiento es granular por canal y por propósito. “Acepto todo” no es consentimiento bajo la Ley 21.719, y por eso las tres columnas forman la clave lógica.

Registro de cambios