docs(audit): auditoria técnica 22 dimensões — nota 6.6/10 - #128
Conversation
Relatório completo de auditoria técnica exaustiva do sistema Zapp Web V2 cobrindo 20 dimensões ponderadas. Evidências extraídas diretamente do codebase e banco de dados em produção (tnnnlkbymytvtqngbbqh). Nota final: 6.6/10 (224.5 / 34 peso total) Achados críticos documentados: - HMAC não enforçado na evolution-webhook (P1 — 5 linhas de fix) - TypeScript sem strict/strictNullChecks (100+ null-deref latentes) - Sentry não inicializado (erros de prod silenciados) - Zero testes E2E - Nenhuma transação em edge functions com writes múltiplos Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UDFCBv9FvzHkwHCN6YcKVa
There was a problem hiding this comment.
adm01-debug has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (15)
📝 WalkthroughWalkthroughO PR adiciona um ratchet de TypeScript com baseline, habilita ChangesRatchet de TypeScript
Controles do Supabase
Documentação e higiene
Estimated code review effort: 4 (Complex) | ~45 minutos Sequence Diagram(s)sequenceDiagram
participant CI as Workflow CI
participant Ratchet as typecheck-ratchet.mjs
participant TSC as TypeScript
participant Baseline as Baseline JSON
CI->>Ratchet: Executa o typecheck ratchet
Ratchet->>TSC: Executa tsc -b --force
TSC-->>Ratchet: Retorna diagnósticos
Ratchet->>Baseline: Compara problemas
Baseline-->>Ratchet: Retorna ocorrências conhecidas
Ratchet-->>CI: Retorna o resultado da verificação
Poem
✨ Finishing Touches📝 Generate docstrings
Comment |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
messages/contacts tinham 2 policies SELECT permissivas cada, combinadas por OR pelo Postgres. Consolidadas em 1 por tabela, formula validada em producao via impersonacao (set_config + auth.uid()) com os 4 usuarios reais do sistema: contagens de contacts/messages visiveis identicas antes e depois (1105/11410, batendo com o total irrestrito via service_role). CHECK constraints adicionadas em contacts/email_messages/audit_logs (107 de 126 tabelas do banco nao tinham nenhuma) - 0 violacoes confirmadas contra o dataset ao vivo e contra o codigo-fonte das edge functions que escrevem essas colunas. Migrations ja aplicadas em producao (tnnnlkbymytvtqngbbqh) e registradas em supabase_migrations.schema_migrations. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UDFCBv9FvzHkwHCN6YcKVa
…tmp/ docs/EVOLUTION_WEBHOOKS_DOCUMENTATION.md continha um webhook secret completo em texto claro (achado F-02 da auditoria de 2026-08-30, ainda pendente). tmp/ nao esta no .gitignore e carregava uma copia identica do mesmo documento (achado G-05) - removida do git e do disco, tmp/ adicionado ao .gitignore. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UDFCBv9FvzHkwHCN6YcKVa
sender: 'system' viola o CHECK messages_sender_check (so aceita 'agent'|'contact') e sempre falhava; type: 'text' referenciava uma coluna inexistente (a coluna real e message_type). Essa function falhava sempre que auto_close_config.close_message estava configurado. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UDFCBv9FvzHkwHCN6YcKVa
tsc --noEmit sozinho nao verificava nada: tsconfig.json so declara "references" (sem files/include), e sem --build o tsc nao resolve as referencias, saindo sempre com exit 0. O "typecheck limpo" reportado em toda auditoria anterior validava um comando vazio - confirmado rodando tsc -b --force de verdade, que achou 21 erros de tipo pre-existentes (entre eles um padrao "Expected 1 arguments, but got 0" repetido em 12 arquivos, e vite.config.ts com uma API de plugin inexistente). typecheck agora roda "tsc -b --force" via scripts/ci/typecheck-ratchet.mjs, no mesmo principio do lint-ratchet.mjs ja usado no repo: baseline dos erros conhecidos, falha so em ocorrencia nova. strictNullChecks: true ligado em tsconfig.app.json junto com a correcao do gate - os 146 erros que isso adiciona (validados empiricamente, nao estimados) entram no mesmo baseline de 147 ocorrencias totais. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UDFCBv9FvzHkwHCN6YcKVa
|
ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR. |
There was a problem hiding this comment.
adm01-debug has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.
O fix em auto-close-conversations/index.ts (commit anterior) mudou o hash do arquivo sem regenerar o manifest de atestado que o CI valida (scripts/edge-deploy/generate-manifest.mjs --check) - derrubou o job Lint & TypeCheck no PR. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UDFCBv9FvzHkwHCN6YcKVa
There was a problem hiding this comment.
adm01-debug has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.
|
ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
adm01-debug has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.
There was a problem hiding this comment.
🟡 Changes recommended
A migration introduces email-format CHECK constraints with um regex inválido/enganoso para Postgres (\s) e conflito com DEFAULT '' de from_address, o que pode quebrar inserts/migrations em produção.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adiciona um relatório de auditoria técnica (22 dimensões) e aplica correções/incrementos derivados do relatório, incluindo reforços de CI (typecheck ratchet), ajustes em Edge Function e hardening de schema/RLS no Supabase, além de remover/redigir material sensível em docs.
Changes:
- Ativa
strictNullChecksno app e substitui o typecheck do CI por um “ratchet” com baseline (tsc -b --force) para evitar regressões sem bloquear pela dívida existente. - Remove arquivo sensível em
tmp/, redige segredo em documentação, e ajusta a funçãoauto-close-conversationspara inserir mensagens com colunas válidas. - Consolida policies RLS de SELECT (messages/contacts) e adiciona CHECK constraints em tabelas de alta escrita.
File summaries
| File | Description |
|---|---|
| tsconfig.app.json | Habilita strictNullChecks no projeto app. |
| package.json | Troca script typecheck para tsc -b --force. |
| .github/workflows/ci.yml | Substitui typecheck por scripts/ci/typecheck-ratchet.mjs. |
| scripts/ci/typecheck-ratchet.mjs | Implementa ratchet de typecheck via baseline e tsc -b. |
| scripts/ci/typecheck-ratchet.unit.mjs | Adiciona testes unitários do ratchet. |
| scripts/ci/typecheck-baseline.json | Baseline inicial dos erros de typecheck atuais. |
| scripts/ci/README.md | Documenta o fluxo do typecheck ratchet e comandos. |
| supabase/functions/auto-close-conversations/index.ts | Corrige insert em messages (campos sender/message_type). |
| supabase/deployment-manifest.json | Atualiza hashes/bytes após mudança na edge function. |
| supabase/migrations/20260902023200_consolidate_rls_select_messages_contacts.sql | Consolida policies SELECT duplicadas/sobrepostas. |
| supabase/migrations/20260902023300_add_check_constraints_high_write_tables.sql | Adiciona CHECK constraints em contacts/email_messages/audit_logs. |
| .gitignore | Passa a ignorar tmp/. |
| docs/EVOLUTION_WEBHOOKS_DOCUMENTATION.md | Redige o webhook secret removendo valor explícito. |
| tmp/EVOLUTION_WEBHOOKS_DOCUMENTATION.md | Remove arquivo sensível versionado anteriormente. |
| docs/audits/AUDITORIA_TECNICA_22_DIMENSOES_2026-09-02.md | Adiciona relatório de auditoria técnica. |
Review details
Suppressed comments (1)
supabase/migrations/20260902023300_add_check_constraints_high_write_tables.sql:23
email_messages.from_addresstemDEFAULT ''(ver migration de criação), mas este CHECK exige formato de e-mail — qualquer INSERT que omitafrom_addresspassará a falhar por receber o default vazio. Além disso, o regex usa\s(não-whitespace no PostgreSQL). Sugestão: dropar o default e trocar o padrão para[[:space:]].
ALTER TABLE public.email_messages
ADD CONSTRAINT email_messages_from_format CHECK (
from_address ~* '^[^@\s]+@[^@\s]+\.[^@\s]+$'
);
- Files reviewed: 14/15 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| ALTER TABLE public.contacts | ||
| ADD CONSTRAINT contacts_email_format CHECK ( | ||
| email IS NULL OR email ~* '^[^@\s]+@[^@\s]+\.[^@\s]+$' | ||
| ); |
📝 Descrição
Relatório de auditoria técnica exaustiva do sistema Zapp Web V2, cobrindo 20 dimensões ponderadas com evidências extraídas diretamente do codebase e banco de dados em produção (
tnnnlkbymytvtqngbbqh).Nota final: 6.6/10 (224.5 / 34 peso total)
Arquivo gerado:
docs/audits/AUDITORIA_TECNICA_22_DIMENSOES_2026-09-02.mdScorecard resumido
Achados críticos (P1/P2)
evolution-webhook/index.ts: webhook aceita qualquer payload sem validar assinatura. Fix: 5 linhas usandoWebhookSecurityServicejá presente em_shared/hmac-validation.ts.docs/security/validation-report-2026-08-30.mdcontém chave parcial (sbp_...). Rotacionar via Supabase dashboard.strict: false,noImplicitAny: false,strictNullChecks: false— ~100+ null-deref latentes.logger.tsexiste mas sem DSN configurado.Top 3 ações de maior ROI
strictNullChecks: trueem tsconfig.app.json — corrigir erros resultantes🎯 Tipo de Mudança
🧪 Testes Realizados
✅ Checklist
O relatório documenta gaps com evidências concretas (arquivo:linha). Cada dimensão inclui ações corretivas específicas. As dimensões de maior impacto imediato são Segurança (webhook HMAC) e TypeScript (strict mode).
🤖 Generated with Claude Code
https://claude.ai/code/session_01UDFCBv9FvzHkwHCN6YcKVa
Summary by cubic
Adiciona o relatório de auditoria técnica do Zapp Web V2 (nota 6.6/10) e aplica as correções mais urgentes apontadas por ele. O typecheck do CI deixou de ser um no-op: agora roda
tsc -b --forcecom baseline e só falha em erro novo.Correções incluídas
docs/EVOLUTION_WEBHOOKS_DOCUMENTATION.mde a cópia rastreada emtmp/, que passou a ser ignorada pelo git.auto-close-conversations, que sempre falhava ao inserir mensagem comsender: 'system'e a coluna inexistentetype.messagesecontactse adiciona CHECK constraints em tabelas de alta escrita; as migrations já estão aplicadas em produção.strictNullChecks; os 147 erros atuais entram no baseline do typecheck ratchet.Pontos de atenção
EVOLUTION_WEBHOOK_SECRETse a Evolution GO atual o utilizar.Written for commit 4ee36fd. Summary will update on new commits.
Summary by CodeRabbit
Melhorias
Documentação
Qualidade