@andreias.ai · por baixo do capô
Sua IA não é lenta por causa da IA. Cole isto no Claude.
O prompt completo do vídeo, em 4 fases: tela, rede, backend e banco. Cole no Claude Code dentro do seu repositório. Ele lista os arquivos antes de mexer e mantém os testes passando.
01Prompt completo
Copie tudo e cole no Claude Code, na raiz do projeto.
Atue como um Engenheiro de Software Principal especializado em Performance de Sistemas e Arquitetura Full-Stack. O objetivo desta tarefa é refatorar a base de código atual para eliminar gargalos de latência, remover padrões frágeis de protótipo e elevar o sistema ao nível de produção (production-ready). Analise o repositório e execute a refatoração dividida rigorosamente nas seguintes 4 fases: --- ### FASE 1: FRONTEND & UX RESILIENTE (PERCEPÇÃO DE VELOCIDADE) 1. **Skeleton Loaders:** Substitua spinners genéricos e telas em branco por componentes de Skeleton estruturados que espelhem a geometria exata dos cards, listas e dashboards finais. 2. **Streaming de IA:** Garanta que todas as respostas geradas por LLMs sejam consumidas via streaming (Server-Sent Events / ReadableStream) token a token, renderizando imediatamente no cliente sem aguardar o payload completo. 3. **Optimistic Updates:** Em ações mutacionais do usuário (alterações de status, envio de dados pontuais, interações de lista), aplique atualização otimista imediata na UI com mecanismo de rollback caso a API retorne erro. 4. **Controle de Input & Requisições:** - Adicione debounce de 300ms a 400ms em todos os campos de busca textual e autocompletar. - Implemente `AbortController` para cancelar requisições anteriores em trânsito sempre que um novo termo for digitado. - Aplique deduplicação de chamadas idênticas usando a camada de cache/fetch do cliente (ex.: TanStack Query / SWR / cache nativo). 5. **Assets & Bundle:** - Configure imagens para formatos modernos (WebP ou AVIF) com `loading="lazy"` e dimensões fixas (`width`/`height` ou `aspect-ratio`) para prevenir Cumulative Layout Shift (CLS). - Aplique dynamic imports / code-splitting por rota para quebrar o bundle principal. - Identifique e expurgue dependências não utilizadas no package.json. - Carregue scripts de terceiros e telemetria de forma não bloqueante (`defer` / `async`). --- ### FASE 2: RESILIÊNCIA DE REDE & CHAMADAS EXTERNAS 1. **Concorrência Assíncrona:** Identifique requisições independentes sequenciais (waterfalls de `await`) e converta-as para execução paralela via `Promise.all` ou `Promise.allSettled`. 2. **Timeouts & Circuit Breaking:** Defina timeouts explícitos em todas as chamadas a APIs externas e serviços de LLM (utilizando `AbortSignal.timeout` ou wrappers equivalentes) com tratamento gracioso de falha e retry exponencial onde couber. 3. **Distribuição & Compressão:** Verifique os headers de resposta para garantir que arquivos estáticos sejam servidos com políticas agressivas de cache (`Cache-Control: public, max-age=31536000, immutable`) e suporte à compressão Brotli/GZIP. --- ### FASE 3: BACKEND, PROCESSAMENTO ASSÍNCRONO & CACHE 1. **Desacoplamento por Fila de Background:** - Isole rotinas lentas (processamento de arquivos, pipelines de geração síncrona pesada, notificações em lote, exportações) da rota HTTP principal. - Despache essas tarefas para uma fila assíncrona (background job), retornando status 202 Accepted imediatamente. 2. **Camada de Cache (Redis / In-Memory):** - Implemente cache com expiração (TTL) e invalidação controlada para endpoints de leitura frequente e dados de configuração. 3. **Observabilidade (OpenTelemetry):** - Instrumente as rotas do backend com traces de OpenTelemetry para monitorar o tempo de resposta das dependências externas e identificar requisições lentas (P95/P99). --- ### FASE 4: BANCO DE DADOS & EFICIÊNCIA DE DADOS 1. **Eliminação de N+1 Queries:** Audite as consultas às tabelas relacionais. Substitua iterações com consultas individuais dentro de loops por queries com `JOIN`, subqueries agregadas ou carregamento em lote com cláusula `IN`. 2. **Indexação:** Adicione índices para colunas frequentemente utilizadas em cláusulas `WHERE`, `JOIN` e ordenações (`ORDER BY`). 3. **Paginação Obrigatória:** Garanta que todas as listagens de dados implementem paginação explícita (preferencialmente cursor-based ou limit/offset indexado), rejeitando consultas irrestritas que retornem tabelas inteiras. --- ### DIRETRIZES DE EXECUÇÃO: - Antes de aplicar alterações destrutivas, liste os arquivos críticos identificados que serão modificados. - Preserve a consistência de tipagem e garanta que testes unitários e de integração existentes continuem passando. - Forneça o código refatorado pronto para commit, acompanhado de um resumo objetivo das melhorias de latência obtidas em cada ponto.
02Confira depois
Marque o que já ficou no lugar.