iachat/progresso/2026-02-22_migracao_dos_canais_wuzapi_e_evolution.md

3.5 KiB

Migração dos Canais Não-Oficiais (Wuzapi e Evolution API)

Data: 22/02/2026 Autor: Assistente AI / Arquiteto de Software

Objetivo

Transferir toda a implementação de canais de WhatsApp não-oficiais (Wuzapi e Evolution API) do projeto de referência para o novo projeto focado em IA, visando aproveitar as abstrações e integrações previamente construídas de forma segura.

Contexto

O projeto referência já continha suporte robusto a provedores como Wuzapi e Evolution API para o canal do WhatsApp. O novo projeto precisa herdar essa capacidade, já que os disparos e interações automatizadas vão continuar usando números do WhatsApp debaixo destes provedores, por uma questão de custo e viabilidade.

Passos Realizados

  1. Atualização do Banco de Dados (Migrações):

    • Foram migradas as dependências para channel_whatsapp receber tokens encriptados.
    • Um conflito de migração duplicada (AddNameToWebhooks) foi corrigido, apagando-se o arquivo colidente e executando bundle exec rails db:migrate.
  2. Rotas e Controladores:

    • Adicionadas as rotas resource :wuzapi aninhado dentro dos membros das inboxes.
    • Adicionada a rota global para receber playloads de eventos em webhooks/wuzapi/:inbox_id.
  3. Backend Service & Model (app/):

    • Transposto o modelo app/models/channel/whatsapp.rb para contemplar provisionamento do Wuzapi e Evolution API (provision_wuzapi_user, tratamento de provider_config).
    • Copiados os Providers de Serviço em app/services/whatsapp/providers/wuzapi_service.rb e evolution_service.rb.
    • Copiados os módulos de Clients HTTP (Acesso Wuzapi/Evolution) alocados em app/services/wuzapi e app/services/evolution_api.
  4. Frontend Dashboard (app/javascript/):

    • Transpostos os componentes Vue associados aos canais (Wuzapi.vue, EvolutionGo.vue, etc.) de /channels/.
    • Modificados os componentes pais (Settings.vue e Whatsapp.vue) para exibir as seleções Wuzapi e Evolution através da constante global PROVIDER_TYPES.
    • Subscrevida a pasta de locales correspondente (dashboard/i18n/locale/*/inboxMgmt.json e jasmine.json) contendo as chaves de UX de configuração dos formulários.

Principais Arquivos Alterados / Criados

  • config/routes.rb
  • app/models/channel/whatsapp.rb
  • app/services/whatsapp/providers/wuzapi_service.rb
  • app/services/whatsapp/providers/evolution_service.rb
  • app/services/wuzapi/* e app/services/evolution_api/*
  • app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Wuzapi.vue e EvolutionGo.vue
  • app/javascript/dashboard/i18n/locale/...

Como Validar

  1. Reiniciar o Servidor Rails e Webpack:
    # Parar o serviço web/worker e webpack-dev-server se rodando manualmente, e inicializá-los
    bundle exec rails restart
    
  2. Acessar o Painel Front-end: Vá em Configurações > Caixas de Entrada > Adicionar Caixa de Entrada > Whatsapp. O usuário deverá ver os cards "Wuzapi" e "Evolution API" entre os provedores selecionáveis.
  3. Homologar a Conexão Wuzapi/Evolution: Clicar sobre Wuzapi, fornecer tokens e base URL definidos, e escanear o QR Code gerado. O Status deverá constar como conectado.

Como Reverter

  • Remover as pastas app/services/wuzapi e app/services/evolution_api.
  • Retirar os imports e chamadas em app/models/channel/whatsapp.rb.
  • Reverter o commit nos componentes Settings.vue e Whatsapp.vue.
  • Rodar migrações de "down" referentes as colunas inseridas em channel_whatsapp.