chatwoot-develop/progresso/2026-01-01_fix_captain_ai_and_messages.md

2.4 KiB

Resumo de Progresso: Correção do Captain AI Playground e Entrada de Mensagens

🎯 Objetivo

Resolver o erro 500 no Playground do Captain AI e normalizar a recepção de mensagens do WhatsApp que não estavam aparecendo na caixa de entrada.

📝 Contexto

  • O Playground estava falhando com erro 500 devido a um SyntaxError no serviço AssistantChatService (excesso de end ou blocos mal fechados).
  • Como o Sidekiq (quem processa as mensagens em segundo plano) carrega todo o ambiente do Rails ao iniciar, esse erro de sintaxe causava o crash total do Sidekiq.
  • Resultado: As mensagens do WhatsApp chegavam no servidor (webhooks OK), mas ficavam paradas na fila "low" (chegaram a acumular 57 mensagens) sem nunca serem escritas no banco de dados.

🛠️ Passos Realizados

  1. Diagnóstico de Fila: Identificamos via Rails runner que o Sidekiq estava parado e a fila low estava crescendo.
  2. Identificação do Crash: Logs do Docker mostraram que o container sidekiq saía com erro 1 imediatamente após o boot.
  3. Correção de Código: Reescrevemos o arquivo assistant_chat_service.rb com uma estrutura limpa, corrigindo a lógica de mensagens e removendo o erro de sintaxe.
  4. Ajuste de Ambiente: Revertemos alterações temporárias no docker-compose.yaml para manter o padrão do projeto.
  5. Reinicialização: Resetei os containers rails e sidekiq.
  6. Drenagem da Fila: O Sidekiq voltou a operar e processou todas as mensagens acumuladas instantaneamente.

📄 Arquivos Modificados

  • enterprise/app/services/captain/llm/assistant_chat_service.rb: Correção de sintaxe e inicialização do sistema de mensagens.
  • docker-compose.yaml: Reversão de comandos de debug.

Como Validar

  1. Caixa de Entrada: Verifique se as novas mensagens de WhatsApp aparecem na aba "Todos" (Current status: OK).
  2. Playground: Teste uma mensagem no painel do Capitão AI e verifique se ele responde (Current status: OK).
  3. Fila Sidekiq: Rodar Sidekiq::Queue.new('low').size no console e garantir que está em 0.

⚠️ Riscos e Observações

  • Erros de sintaxe em serviços Enterprise são críticos porque derrubam o processamento assíncrono de todo o sistema. Sempre rodar rails runner ou bundle exec sidekiq localmente para validar o boot após edições estruturais.