JustCyber

CondoLGPD

Condomínio com CFTV, portaria e biometria tratando dado de morador, e o síndico sem registro, sem prazo e sem prova.

O CondoLGPD cobre quatro frentes de conformidade em uma só base: o registro das operações de tratamento (ROPA), a fila de solicitações do titular (DSAR), o assessment de prontidão LGPD e o registro de incidentes de dados. Cada uma é tenant-scoped sob RLS FORCE — o tenant vem do JWT, nunca do corpo da requisição.

O prazo é cidadão de primeira classe. Ao abrir um DSAR, o serviço gera um protocolo legível (DSAR-2026-0001) e calcula o prazo como criação mais 15 dias corridos, configurável, jamais aceito do corpo. A fila mostra dias restantes e marca o vencido. A mudança de estado passa por uma máquina de cinco estados com efeitos: responder exige a resposta preenchida, recusar exige justificativa, reabrir limpa os carimbos, e transição inválida devolve 409. Um beat cross-tenant descobre os que vão vencer e os vencidos, carimba e emite o alerta no outbox na mesma transação, com deduplicação por estágio — um aviso na janela e um ao vencer, sem spam a cada tick.

A minimização é explícita. Na visão de fila, CPF e contato do titular não saem: só o nome. A PII completa só aparece no detalhe. O payload do alerta carrega apenas referências (protocolo, tipo, prazo, id do destinatário) — o e-mail em claro é resolvido dentro da task de e-mail, sob RLS. A trilha de auditoria grava estados e ids, nunca dado pessoal cru.

O que faz hoje

Capacidades em operação

Cada item corresponde a funcionalidade que existe no código e é alcançável por um usuário com o escopo correto.

  • ROPA com vocabulário do setor

    CRUD do registro de operações com as dez bases legais, categorias de titular (moradores, condôminos, funcionários, visitantes, prestadores) e de dado (incluindo imagem_cftv, biometrico e saude), compartilhamento estruturado por destinatário e finalidade, retenção e medidas de segurança.

  • DSAR com prazo legal derivado no serviço

    Protocolo sequencial por ano e prazo calculado na criação (15 dias, JC_CONDOLGPD_DSAR_SLA_DAYS). A fila filtra por status, tipo e vencidos; cada item traz days_left e a marca de overdue.

  • Máquina de estados do DSAR

    Cinco estados com transições declaradas e efeitos na mesma transação. Responder sem resposta e recusar sem justificativa são bloqueados com 422; transição não prevista devolve 409.

  • Alerta automático de SLA por e-mail

    Beat cross-tenant condolgpd.dsar_sla_check (cadência padrão de 6h) descobre DSAR a 3 dias do vencimento e já vencidos, carimba alertado_em e emite condolgpd.dsar_due no outbox na mesma transação. O relay entrega à fila de e-mail. Dedup por estágio garante um aviso na janela e um ao vencer.

  • Assessment LGPD de condomínio

    Doze perguntas em cinco domínios, com CFTV como domínio próprio: placa de aviso, prazo de retenção das imagens e RIPD de biometria. Score determinístico global e por domínio, mesma regra de peso do ComplianceBot.

  • Incidente com prazo ANPD calculado

    Referência INC-2026-0001 e anpd_prazo_at igual a detectado_em mais 3 dias úteis, derivado no serviço.

  • Minuta por IA em três tipos

    Política de privacidade, aviso de CFTV e resposta a DSAR, via Gateway com allowlist de egress. A nota livre do operador entra embrulhada como dado. Sempre rascunho, com disclaimer.

  • Timeline por solicitação

    O detalhe do DSAR devolve os eventos daquele registro lidos do audit_log, em ordem cronológica.

O que fica com você

Entregáveis

  • Registro de operações de tratamento (ROPA) consultável pela API
  • Fila de DSAR com protocolo, prazo, dias restantes e marcação de vencido
  • Score de prontidão LGPD, global e por domínio, com CFTV separado
  • Registro de incidentes com prazo ANPD já calculado
  • Minuta de política, aviso de CFTV ou resposta ao titular, em texto, marcada como rascunho

O que este módulo não faz

O beat de SLA nasce desligado: JC_CONDOLGPD_ENABLED é false por padrão. Sem ligar, a fila e os prazos funcionam, mas nenhum e-mail sai. O cálculo de dias úteis pula só sábado e domingo — feriado não é considerado, e isso está declarado no código como aproximação. Não há alerta de prazo ANPD: o prazo do incidente é calculado e exibido, mas nenhum job o vigia; o beat cobre apenas DSAR. O incidente não tem máquina de estados — o status muda por PATCH livre, sem validação de transição, diferente do DSAR e do RN964. Não existe canal público para o titular abrir a solicitação: 'portal' é só um rótulo de origem, e POST /dsar exige o escopo condolgpd:dsar:write. A minuta não é persistida, nem seus metadados: fica só a linha de auditoria com tipo e run_id. A função service.emit_dsar_due está escrita e não tem chamador — o beat reimplementa a mesma emissão inline. Não há exportação em PDF do ROPA nem do relatório.

Declaramos o limite porque software de segurança que promete tudo não é auditável. Se o que falta aqui é o que você precisa, o serviço consultivo cobre — ou dizemos que não cobre.

Conecta com

  • app.core.outbox (fato de domínio condolgpd.dsar_due, transacional)
  • worker/tasks/outbox.py → fila emails (task email.send)
  • Celery beat condolgpd-dsar-sla-check
  • app.ai.gateway (task condolgpd_draft, budget_scope subscription)
  • app.api.idempotency (POST de ROPA, DSAR, incidentes e minutas)
  • audit_log append-only
  • RLS FORCE nas tabelas condolgpd_* (migration 0018)

Controle de acesso

O acesso é concedido por escopo, não por perfil genérico. Quem só precisa ler não recebe permissão de escrita, e a barreira é o banco de dados, não a interface.

  • condolgpd:ropa:read
  • condolgpd:ropa:write
  • condolgpd:dsar:read
  • condolgpd:dsar:write
  • condolgpd:assessment:read
  • condolgpd:assessment:write
  • condolgpd:incident:read
  • condolgpd:incident:write
  • condolgpd:draft:generate
CondoLGPD

Quer ver funcionando?

Demonstração com dado do seu ambiente, não com base de exemplo. É a única forma de saber se serve.