Skip to content

feat: política de retenção de dados em 3 camadas#4

Open
ProtectorAnalytics wants to merge 1 commit intomasterfrom
feat/retention-policy
Open

feat: política de retenção de dados em 3 camadas#4
ProtectorAnalytics wants to merge 1 commit intomasterfrom
feat/retention-policy

Conversation

@ProtectorAnalytics
Copy link
Copy Markdown
Owner

Summary

Implementa política de retenção de dados em 3 camadas que preserva histórico de capturas além da janela operacional de 15 dias, atendendo demandas de relatório retroativo sem comprometer LGPD (princípio da necessidade).

Arquitetura

Camada Retenção Conteúdo
`capturas` 15 dias Metadados + foto (operacional)
`capturas_historico` 180 dias Metadados sem foto (relatórios)
Fotos de infrações no Storage 90 dias Evidência para contestação

Mudanças

  • `sql/migration-historico.sql` (novo): tabela `capturas_historico`, índices compostos, RLS
  • `lib/supabase.js`: 5 novos helpers (`getCapturasParaArquivar`, `archiveToHistorico`, `getFotosInfracaoParaApagar`, `markFotoIndisponivel`, `purgeHistoricoAntigo`)
  • `api/cron-limpeza.js`: reescrito com 3 etapas sequenciais
  • `.gitignore`: ignora `.DS_Store`, `.claude/`, `backup-historico/`

Comportamento do cron (diário 06:00 UTC)

  1. ETAPA 1 (dia 15): arquiva capturas em `capturas_historico`, apaga foto regular do Storage, mantém foto de infração
  2. ETAPA 2 (dia 90): apaga foto de infração do Storage, marca `foto_disponivel=false`
  3. ETAPA 3 (dia 180): purga registros antigos do `capturas_historico`

Test plan

  • Migration aplicada em produção via MCP Supabase
  • Cleanup rodado nos 12.279 registros existentes (foto_disponivel corrigido conforme nova semântica)
  • Dry-run do código Node.js contra produção (100 capturas encontradas, lógica `eh_infracao` validada)
  • Execução manual real contra produção: 1.196 arquivadas, 1.049 fotos regulares apagadas, 147 fotos de infração mantidas
  • Endpoint preserva autenticação via `CRON_SECRET`
  • Aguardar execução automática Vercel Cron (amanhã 06:00 UTC) — verificar logs no dashboard
  • Validar que capturas NÃO acima do limite perdem foto após arquivamento
  • Validar que infrações retêm `foto_disponivel=true` por 90 dias

Observações

  • Migration já aplicada em prod — arquivo `sql/migration-historico.sql` é apenas para versionamento
  • Estado atual: 12.279 registros em `capturas_historico` (24 dias cobertos, 2 clientes ativos)
  • Não há dados ainda > 90d ou > 180d, então Etapas 2 e 3 só ficarão ativas conforme o sistema envelhece

🤖 Generated with Claude Code

Implementa arquitetura de retenção que preserva histórico de capturas
além da janela operacional de 15 dias, atendendo demandas de relatório
retroativo sem comprometer a conformidade LGPD (princípio da necessidade).

Arquitetura:
- capturas (operacional): 15 dias — metadados + foto
- capturas_historico (relatórios): 180 dias — metadados sem foto
- fotos de infrações no Storage: 90 dias — evidência para contestação

Mudanças:
- sql/migration-historico.sql: tabela capturas_historico + índices + RLS
- lib/supabase.js: 5 novos helpers (archive, purge, flag management)
- api/cron-limpeza.js: reescrito com 3 etapas sequenciais

O cron diário (06:00 UTC) agora:
1. Arquiva capturas > 15d no historico e apaga fotos regulares
2. Apaga fotos de infração > 90d do Storage
3. Purga registros do historico > 180d

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 5, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
protector-lombada Ready Ready Preview, Comment Apr 5, 2026 8:17pm

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant