1.2 KiB
1.2 KiB
Correção de Loop de Resposta no Captain
Objetivo: Corrigir o comportamento onde o bot entrava em loop ("responder tudo errado" ou repetir boas-vindas) por receber o input do usuário duplicado no histórico.
Contexto:
O método previous_messages utilizava offset(1) para pular a mensagem atual, mas a ordenação padrão (created_at ASC) fazia com que ele pulasse a primeira mensagem da conversa em vez da última. Isso incluía a mensagem atual no histórico enviado para a IA.
Passos Realizados:
- Análise do
processor_service.rb. - Identificação da falha no uso de
offset(1). - Refatoração para consulta explícita excluindo o ID atual.
Arquivos Alterados:
lib/integrations/captain/processor_service.rb
Código Principal (Diff):
# Antes
conversation.messages.where(...).offset(1).find_each
# Depois
conversation.messages.where('id < ?', current_message_id).reorder(created_at: :desc).limit(20)
Como Validar:
- Monitorar logs em produção ou testar enviar mensagem para o bot.
- Verificar se a resposta não repete o input ou reseta o contexto.
Como Reverter:
Voltar o arquivo lib/integrations/captain/processor_service.rb para o estado anterior.