ajuste fluxo de msgs
This commit is contained in:
parent
0e19a0e93a
commit
2f78f273da
@ -50,14 +50,21 @@ class Integrations::Captain::ProcessorService < Integrations::BotProcessorServic
|
||||
end
|
||||
|
||||
def previous_messages
|
||||
previous_messages = []
|
||||
conversation.messages.where(message_type: [:outgoing, :incoming]).where(private: false).offset(1).find_each do |message|
|
||||
next if message.content_type != 'text'
|
||||
current_message_id = event_data[:message].id
|
||||
|
||||
role = determine_role(message)
|
||||
previous_messages << { message: message.content, type: role }
|
||||
# Fetch last 20 messages before the current one
|
||||
messages = conversation.messages
|
||||
.where(message_type: [:outgoing, :incoming])
|
||||
.where(private: false)
|
||||
.where(content_type: 'text')
|
||||
.where('id < ?', current_message_id) # Exclude current message
|
||||
.reorder(created_at: :desc) # Get latest first
|
||||
.limit(20)
|
||||
|
||||
# Reverse to chronological order and map
|
||||
messages.to_a.reverse.map do |message|
|
||||
{ message: message.content, type: determine_role(message) }
|
||||
end
|
||||
previous_messages
|
||||
end
|
||||
|
||||
def determine_role(message)
|
||||
|
||||
35
progresso/correcao_loop_captain.md
Normal file
35
progresso/correcao_loop_captain.md
Normal file
@ -0,0 +1,35 @@
|
||||
# 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:**
|
||||
|
||||
1. Análise do `processor_service.rb`.
|
||||
2. Identificação da falha no uso de `offset(1)`.
|
||||
3. Refatoração para consulta explícita excluindo o ID atual.
|
||||
|
||||
**Arquivos Alterados:**
|
||||
|
||||
- `lib/integrations/captain/processor_service.rb`
|
||||
|
||||
**Código Principal (Diff):**
|
||||
|
||||
```ruby
|
||||
# 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.
|
||||
Loading…
Reference in New Issue
Block a user