Gerenciamento de concordâncias
1) Termos e limites de responsabilidade
Consentimento (consent): vontade voluntária, informada, específica e inequívoca; pode ser retirado.
Base legal: consentimento é apenas uma opção (contrato, fundamento legítimo, interesse legítimo etc.). O modelo deve guardar a base e o alvo.
Alvo de processamento (purpose): razão atômica: analytics, personalização, ads, email _ marketing, data _ sharing _ vendor _ X.
Granularidade: consentimento armazenado por objetivos, canais, vendedores, regiões, categorias de dados.
Perfil do sujeito: pessoa, dispositivo, família, conta da criança (regras especiais para menores).
2) Ciclo de vida do consentimento
1. Coleta: banner/SMR, configurações de perfil, API/SDK, off-line (centro de contato).
2. Validação: idade, região, disponibilidade de alternativas (sem «patterns escuros»).
3. Registro: crie um evento de consentimento e a imagem de estado atual para fins.
4. Distribuição: publicar em um pneu de evento, atualizar o dinheiro em edge, sincronizar com os vendedores.
5. Execução: aplicação em real-time (gateway/pixels/SDK), em batch (ETL/analista), em ML-pipline.
6. Alteração/revogação: proibição imediata de nova coleta/ativação, posterior «limpeza» dos dados históricos da política.
7. Auditoria/relatórios: comprovável consentimento no momento do processamento (quem, quando, qual versão do texto).
3) Componentes arquitetônicos
CMP (Consent Management Platford): UI/SDK + API que formatam as opções de concordância para UX/jurisdição; fonte de verdade por texto e versão.
Registro do Consent: Armazenamento confiável de estados e eventos de concordância (registro append-only + projeção atual).
Consent PDP/PEP: Policy Decision/Enforcement Point. O PDP decide "pode? ", o PEP aplica a solução em uma entrada de API, ETL, SDK e etc.
Consoante Edge em dinheiro: baixa latência para verificação no perímetro.
Parceiro/GPP/IAB: transmissão de alvos locais para sinais parceiros e voltados.
Data Lineage & Tagging: marca os dados com bandeiras de consentimento/base em toda a cadeia.
4) Modelo de dados (esquemas)
Imagem das concordâncias do usuário (simplificado):json
{
"subject_id": "usr_123",
"subject_scope": "user",
"region": "EU",
"legal_basis": {
"analytics": "consent",
"personalization": "consent",
"security": "legitimate_interest",
"contract_core": "contract"
},
"purposes": {
"analytics": {"status": "granted", "version": "v5", "updated_at": "2025-10-31T13:20:10Z"},
"personalization": {"status": "denied", "version": "v5", "updated_at": "2025-10-31T13:21:31Z"},
"ads": {"status": "denied", "version": "v5", "updated_at": "2025-10-31T13:21:31Z"},
"email_marketing": {"status": "granted", "channel":"email","updated_at":"2025-10-31T13:22:05Z"}
},
"text_bundle": {"locale":"uk-UA","policy_version":"2025-09"},
"evidence": {"capture_ip":"203. 0. 113. 5","capture_ua":"Chrome/142"}
}
Evento de consentimento (append-only):
json
{
"event_id": "cse_987",
"subject_id": "usr_123",
"purpose": "personalization",
"previous": "denied",
"current": "granted",
"legal_basis": "consent",
"policy_version": "2025-09",
"captured_at": "2025-10-31T13:21:31Z",
"channel": "web",
"evidence": {
"banner_id": "cmp_v3",
"text_hash": "sha256:...",
"ip": "203. 0. 113. 5",
"ua": "Chrome/142",
"locale": "uk-UA"
}
}
5) Protocolos de sinal e disseminação
Web/App/SDK: armazenamento de um marcador de concordâncias (cookie/local armazenamento/secure armazenamento) + assinatura/verificação de integridade; Receituário automático ao login.
Server-side: headers 'X-Consent-Tocen '/' X-Purposes', troca bidirecional em SSR/edge-rendering.
Parceiros/vendedores: transmissão para seus formatos (por exemplo, vetor de alvos, sinal geral «GPP/TCC»); falha: sinal zero/modo limitado.
Off-Line: gravação do consentimento de áudio/checkbox por parte da operadora, com posterior verificação e referência a 'subject _ id'.
6) Execução: onde e como «cortar» o tráfego
Na entrada de API (PEP):- Bloquear endpoint/campos sem consentimento (/profile/enrich ,/ads/,/events/track).
- Mutar resposta/consulta: cortar rastreadores, campos de personalização, identificadores.
- Atribuir contexto de concordância a uma solicitação de backend (marcas JWT ou títulos individuais).
- O transformador de eventos remove/disfarça os campos através das bandeiras de consentimento.
- Marcação de datasets: 'datse. consent_scope=analytics:granted; ads:denied`.
- O ML-pipline exclui os registros sem consentimentos adequados; desativar o treinamento/ativação para fins proibidos.
7) Pseudocode: solução na entrada
python def enforce_consent(request, consent_snapshot):
purpose = map_endpoint_to_purpose(request. path) # /ads/ -> "ads"
basis = consent_snapshot. legal_basis. get(purpose)
status = consent_snapshot. purposes. get(purpose, {}). get("status", "denied")
if basis! = "consent": # e.g. security/contract - allowed without return ALLOW banner
if status!= "granted":
return DENY # or ALLOW with redaction if degradation is allowed
return ALLOW
8) Versionização e provabilidade
Versão do consentimento: guarde «policy _ version», «text _ hash», «banner _ id».
Local e região: que tipo de texto e língua é exibido.
"Por que o anúncio foi exibido 2025-10-15 às 09:03? ».
Registro imutável: WORM/append-only com criptopodescrição de eventos.
9) Malas especiais
Menores: validação da idade, consentimento parental, objetivos e prazos individuais.
Convidado → login: fusão de um marcador anónimo com uma conta; regras de conflito (a mais dura vence).
Dispositivo multiplicado: Ressinha de consistência; ao ser revisto - push-deficiência de tokens em todos os dispositivos.
Regimes regionais: «Rigoroso» (EU) vs «opt-out» (alguns mercados) - Alteração de presídios CMP.
Testes A/B: experimentos de dados - um objetivo separado de experimentação; sem ela, apenas testes funcionais sem dados pessoais.
Direito de remoção: Um levantamento pode iniciar a remoção/anonimato de dados históricos sobre um alvo (política «purge on revoke»).
10) Anti-pattern
Um checkbox comum para tudo.
Nenhuma versão de texto ou comprovação de exibição.
Armazenando apenas cookies sem registro de servidor.
A utilização do consentimento é apenas em UI, mas não em ETL/ML/exportação.
Fontes de verdade conflitantes (SDK ≠ Backend).
Dark patterns, imposição do consentimento: riscos legais e de reputação.
11) Observabilidade e métricas
Coverage: proporção de tráfego com marcador de concordância valente.
Latency PDP: hora da decisão no perímetro.
Draft: discrepância entre o SDK e a imagem do servidor.
Revoke SLA: tempo de retirada → tempo de total desativação/limpeza.
Vendor Compliance: porcentagem de chamadas parceiras com sinal correto.
Indícios: tentativas de processamento sem consentimento, chamadas bloqueadas.
Dashboards: «vórtices de consentimento», mapa de regiões/canais, cartões térmicos de rejeição.
12) Testes e verificação
Testes de contrato PDP/PEP: tabela de verdade por combinação de metas/regiões.
Chaos/Testes Draft: estados não incrões SDK ↔ servidor; TTL do cachê.
Lançamentos CMP: A/B validação de textos e neutralidade UX (sem patterns escuros).
Rastreamento E2E: evento user-revoke → falta de envio para pixels e piplines associados.
13) Capacidades interligadas
Anonimato/pseudonimização: execução de falhas antes e depois da descontaminação.
Criptografia e KMS: proteja marcadores/registros.
Gerenciamento geo: escolha de textos/regras regionais.
Observabilidade: dashboards privados sem PDN; A correlação é apenas por tóquio.
Data Lineage: Cada Datac tem uma impressão digital de consoante.
14) Mini-receitas
Política de metas declaratória (por exemplo, YAML):yaml purposes:
analytics:
legal_basis: consent enforcement: redact_fields: [ad_id, gaid, idfa]
personalization:
legal_basis: consent enforcement: deny_endpoints: [/recs/, /profile/enrich]
security:
legal_basis: legitimate_interest enforcement: allow email_marketing:
legal_basis: consent channel: email
Formatação de eventos no pneu:
event. meta. consent. analytics = granted denied event. meta. consent. ads = denied event. meta. legal_basis = consent contract li
Limpar dados de retirada:
on user_revoke(purpose):
mark subject_id + purpose as "purge_pending"
schedule purge jobs over datasets with lineage(purpose)
emit audit_event("purge_started", scope=purpose)
15) Folha de cheque do arquiteto
1. Há um único registro e um registro de concordância imutável?
2. Os objectivos são atômicos e versionoruemas em todo o lado?
3. A execução está no perímetro, nas correntes, na análise e na ML?
4. A revisão e a política de limpeza de dados históricos foram implementadas?
5. As imagens UI/SDK/servidores e os mecanismos de ressaca estão alinhados?
6. As métricas Coverage/Drivt/Revoke SLA e os relatórios foram configurados?
7. Há um runbook sobre incidentes (violações, queixas, reguladores)?
8. São apoiados regimes especiais (crianças, regiões, parceiros B2B)?
Conclusão
O gerenciamento de concordâncias não é uma janela modal, mas sim uma função arquitetônica transversal, desde a declaração de objetivos e a versionização de textos até a execução automática em tempo real e relatórios subsequentes. O modelo de dados rigoroso, o registro único, o PDP/PEP em todas as camadas, a telemetria completa e os procedimentos de limpeza transformam a complacência em vantagem competitiva - plataforma de confiança.