48 lines
1.6 KiB
Ruby
48 lines
1.6 KiB
Ruby
# script/test_auto_label.rb
|
|
# Como rodar: bin/rails runner script/test_auto_label.rb
|
|
|
|
puts '=== 🧪 Teste de Classificação Automática ==='
|
|
|
|
# 1. Cria uma conversa de teste
|
|
puts "\n1. Criando conversa simulada..."
|
|
account = Account.first || Account.create!(name: 'Conta Teste')
|
|
inbox = Inbox.first || Inbox.create!(name: 'Inbox Teste', account: account, channel: Channel::Api.create!(account: account))
|
|
contact = Contact.first || Contact.create!(name: 'Cliente Teste', account: account)
|
|
contact_inbox = ContactInbox.find_or_create_by!(contact: contact, inbox: inbox) do |ci|
|
|
ci.source_id = SecureRandom.uuid
|
|
end
|
|
conversation = Conversation.create!(account: account, inbox: inbox, contact: contact, contact_inbox: contact_inbox, status: :open)
|
|
|
|
# 2. Insere mensagens (Cenário: Dúvida de Preços)
|
|
puts '2. Inserindo diálogo sobre preços...'
|
|
msgs = [
|
|
{ role: :incoming, content: 'Oi, quanto custa a diária para o fim de semana?' },
|
|
{ role: :outgoing, content: 'Olá! Para quantas pessoas?' },
|
|
{ role: :incoming, content: 'Seria um casal e uma criança.' }
|
|
]
|
|
|
|
msgs.each do |m|
|
|
conversation.messages.create!(
|
|
account: account,
|
|
inbox: inbox,
|
|
content: m[:content],
|
|
message_type: m[:role],
|
|
private: false
|
|
)
|
|
end
|
|
|
|
# 3. Executa o Job
|
|
puts '3. Executando o Job de Classificação (AutoLabelJob)...'
|
|
Conversations::AutoLabelJob.perform_now(conversation.id)
|
|
|
|
# 4. Resultado
|
|
conversation.reload
|
|
puts "\n=== RESULTADO ==="
|
|
if conversation.label_list.present?
|
|
puts "✅ Etiquetas aplicadas: #{conversation.label_list}"
|
|
puts 'A IA identificou corretamente o assunto!'
|
|
else
|
|
puts '❌ Nenhuma etiqueta aplicada. Verifique os logs.'
|
|
end
|
|
puts "=================\n"
|