@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.