4.3 KiB
4.3 KiB
📋 LISTA DE TAREFAS — DEPLOY NEWWHATS (FRENTE A: WASABI STORAGE)
Este documento registra o escopo de implementação física, build, deploy e validação das correções da Frente A (Wasabi Storage) realizadas no ambiente de produção da VPS 1.
🚀 FRENTE A: Correções Wasabi Storage
| ID | Tarefa | Arquivo(s) Afetado(s) | Status | Detalhes |
|---|---|---|---|---|
| T1 | Evitar vazamento de mídia local | MessageHandler.ts |
CONCLUÍDO | Adicionado fs.unlink() assíncrono para limpar arquivos locais após upload para Wasabi. |
| T2 | Correção de mediaPath no DB |
MessageHandler.ts |
CONCLUÍDO | Salvamento de mediaPath = null para mídias salvas com sucesso em storage remoto, forçando o carregamento direto do remote link. |
| T3 | Evitar duplicação de handlers Express | UnifiedStorageProvider/index.ts |
CONCLUÍDO | Adicionada flag privada routesRegistered para evitar múltiplos registros de rotas HTTP no Express em reativações. |
| T4 | Interface para deleção recursiva | types.ts, StorageProvider.ts |
CONCLUÍDO | Adicionado o método deletePrefix no contrato StorageProviderInterface e wrapper no StorageProviderRegistry. |
| T5 | Implementação de limpeza Wasabi + Fallback | UnifiedStorageProvider/index.ts |
CONCLUÍDO | Implementado deletePrefix usando ListObjectsV2Command + DeleteObjectsCommand paginados e remoção recursiva local. |
| T6 | Limpeza de mídias ao deletar instância | whatsapp.routes.ts |
CONCLUÍDO | Integrada chamada assíncrona ao storageProvider.deletePrefix na rota DELETE /:id usando prefixo correto. |
| T7 | Correção de carregamento de plugins (Container) | Dockerfile, docker-compose.yml |
CONCLUÍDO | Corrigida a ausência da pasta de plugins no container montando-a como volume e criando symlinks para resolução de imports. |
📈 Resumo do Status
- Fase de Planejamento: 100% Concluído
- Implementação do Código: 100% Concluído
- Compilação e Transpilação (Plugins): 100% Concluído
- Build da Imagem e Re-deploy (Docker): 100% Concluído
- Validação de Logs e Ativação de Plugins: 100% Concluído (Todos os plugins ativos sem erros!)
🔒 Próximos Passos recomendados ao Usuário
- Reconexão de Instâncias: Reconectar as instâncias no painel administrativo para reativar as conexões de mensagens e testar o envio de mídias direto ao Wasabi.
- Validação do Bucket: Confirmar que os novos arquivos estão sendo gerados sob o prefixo correto
whatsapp/{tenantId}/{instanceId}/dentro do bucketwhatsbasemidia. - Validação da Exclusão: Excluir uma instância de teste e verificar a remoção automática das mídias correspondentes tanto localmente quanto no bucket Wasabi.
Última atualização: 08 de Maio de 2026 às 02:00 (UTC).
🚀 FRENTE B: Baileys Engine Swap (Mensagens Ricas no WA Web)
| ID | Tarefa | Arquivo(s) Afetado(s) | Status | Detalhes / Critérios de Aceite |
|---|---|---|---|---|
| B1 | Instalar fork InfiniteAPI | package.json |
CONCLUÍDO | Instalar baileys@github:rsalcara/InfiniteAPI sob alias/coexistência no backend. |
| B2 | Camada de abstração engine |
engine/official.ts, engine/infinite.ts, engine/index.ts |
CONCLUÍDO | Criar arquivos de ponte de re-export dinâmico dependentes de BAILEYS_ENGINE (infinite ou official). |
| B3 | Mapeamento de imports | WhatsAppConnectionManager.ts, MessageHandler.ts, ContactHandler.ts, rich-message.ts, etc. |
CONCLUÍDO | Redirecionar todos os imports diretos de @whiskeysockets/baileys para a nova camada unificada ./engine. |
| B4 | Simplificação de envio de mídias ricas | rich-message.ts |
CONCLUÍDO | Refatorar a lógica complexa de binary nodes para invocar os campos nativos do fork InfiniteAPI com fallback inteligente. |
| B5 | Endpoints de Administração & Reinício | admin.routes.ts, whatsapp.routes.ts |
CONCLUÍDO | Adicionar rotas GET /engine e POST /engine para persistir escolha no arquivo .env e auto-reiniciar o processo (PM2/Docker). |
| B6 | Componente de Toggle no Painel Admin | Frontend (Páginas Admin) | CONCLUÍDO | Criar interface visual de seleção de engine com aviso de reinicialização (~10s) na aba Sistema de admin/settings.tsx. |