Publicação
OKEvidência: Publicado em versaliuspro.lovable.app. Roda em subdomínio *.lovable.app.
Recomendação: Para clientes pagantes, mover para domínio próprio em Settings → Domains e revisar política de cache.
Programação arquitetônica de EAS conforme RDC 50 e SOMASUS.
Programação arquitetônica de EAS conforme RDC 50 e SOMASUS.
Stack atual: Auth, DB, Storage, IA, PDF. Já está publicado e acessível via URL pública.
Estágio atual: Beta (85% de maturidade estimada). O foco do próximo ciclo deve ser fechar os gaps de segurança listados ao lado, antes de abrir para clientes externos.
Visão por área com a evidência usada para classificar cada status e a ação concreta para mudar de patamar.
Evidência: Publicado em versaliuspro.lovable.app. Roda em subdomínio *.lovable.app.
Recomendação: Para clientes pagantes, mover para domínio próprio em Settings → Domains e revisar política de cache.
Evidência: Repositório GitHub não está conectado — código vive apenas dentro do Lovable.
Recomendação: Menu (+) → GitHub → Connect project. Habilita backup, code review e CI/CD próprio.
Evidência: 4/4 controles de auth aplicados. Pendentes: nenhum.
Recomendação: Manter MFA obrigatório para admin e revisar logs de tentativas de login.
Evidência: 4/4 controles aplicados. Pendentes: nenhum.
Recomendação: Rodar o scanner de segurança do Cloud mensalmente.
Evidência: 5/6 controles. Pendentes: Validar tipo/tamanho antes de processar.
Recomendação: No handler de upload: checar mime real (magic bytes), extensão e limite de bytes antes de salvar.
Evidência: 3/4 controles. Pendentes: Moderação de prompts e respostas.
Recomendação: Pré-filtro de prompt (lista de termos + moderation API) e logar input/output para auditoria.
Evidência: 4/5 fundamentos no lugar. Pendentes: Logs estruturados + Sentry no client e server.
Recomendação: Instalar Sentry no client e nas server functions; capturar erros com user.id e contexto da rota.
Por quê: Sem teto de uso, o custo de IA escala silenciosamente e prompts maliciosos passam.
Ação: Pré-filtro de prompt (lista de termos + moderation API) e logar input/output para auditoria.
Por quê: Entrada não validada é o vetor mais comum de injeção e bug em produção.
Ação: No handler de upload: checar mime real (magic bytes), extensão e limite de bytes antes de salvar.
Por quê: Sem observabilidade, você descobre o incidente pelo cliente reclamando.
Ação: Instalar Sentry no client e nas server functions; capturar erros com user.id e contexto da rota.
Por quê: Conta sequestrada vira porta de entrada para todo o resto.
Ação: Cloud → Users → Auth Settings → habilitar MFA (TOTP) e exigir para roles admin.
Por quê: Sem RLS/GRANT correto, qualquer usuário pode ler ou alterar dados de outros.
Ação: Para cada tabela em public.*: ALTER TABLE … ENABLE ROW LEVEL SECURITY + policy escrita com auth.uid().
Por quê: Sem rate limit, um único usuário derruba ou inflaciona o custo do serviço.
Ação: Middleware por IP+user_id (ex: 60 req/min) com bucket no Redis ou tabela com TTL.
Por quê: Risco jurídico (LGPD) e quebra de confiança do usuário.
Ação: Mapear dados pessoais coletados, base legal de cada um e botão de exportar/excluir conta.
Por quê: Item pendente do checklist — endereçar antes de abrir para clientes externos.
Ação: Implementar: Auditoria de acessos.
Mostrando 8 de 14 risco(s) com filtro atual. Os demais aparecem no checklist abaixo.
Cada item traz status (OK · Atenção · Crítico) e, quando pendente, a recomendação específica de correção.
Como corrigir: Instalar Sentry no client e nas server functions; capturar erros com user.id e contexto da rota.
Como corrigir: Pré-filtro de prompt (lista de termos + moderation API) e logar input/output para auditoria.
Como corrigir: No handler de upload: checar mime real (magic bytes), extensão e limite de bytes antes de salvar.
Como corrigir: Cloud → Users → Auth Settings → habilitar MFA (TOTP) e exigir para roles admin.
Como corrigir: Para cada tabela em public.*: ALTER TABLE … ENABLE ROW LEVEL SECURITY + policy escrita com auth.uid().
Como corrigir: Middleware por IP+user_id (ex: 60 req/min) com bucket no Redis ou tabela com TTL.
Como corrigir: Mapear dados pessoais coletados, base legal de cada um e botão de exportar/excluir conta.
Como corrigir: Implementar: Auditoria de acessos.
Como corrigir: Adicionar head() em cada rota pública com title, description, og:title, og:description e og:image.
Como corrigir: Integrar scan (ClamAV via edge function ou serviço externo) antes de marcar arquivo como disponível.
Como corrigir: Para cada tabela em public.*: ALTER TABLE … ENABLE ROW LEVEL SECURITY + policy escrita com auth.uid().
Como corrigir: Tabela ai_usage(user_id, day, tokens) + checagem no início de cada chamada; bloqueio acima do teto.
Como corrigir: Implementar: Custos por chamada monitorados.
Como corrigir: Implementar: Versionamento das normas.
Edite src/data/apps.ts e adicione um array changelog ao app para registrar marcos manuais.