132 lines
4.4 KiB
Ruby
132 lines
4.4 KiB
Ruby
# seed_jasmine_hotel_v2.rb
|
||
# Objetivo: Garantir que a Jasmine e seus sub-agentes existam em TODAS as contas do sistema.
|
||
|
||
puts "Limpando assistentes antigos..."
|
||
Captain::Assistant.where("name LIKE ?", "%Jasmine%").destroy_all
|
||
|
||
Account.all.each do |account|
|
||
puts "Configurando Jasmine para a conta: #{account.name} (ID: #{account.id})..."
|
||
|
||
system_prompt_blocks = [
|
||
{
|
||
key: 'identity',
|
||
title: 'Identidade',
|
||
content: <<~TEXT
|
||
Seu nome é Jasmine.
|
||
Você é a Recepcionista e Gerente de Atendimento do Hotel 1001 Noites Prime – Ceilândia.
|
||
Não revele que é uma IA a menos que perguntada explicitamente.
|
||
Seu objetivo é encantar com simpatia e profissionalismo.
|
||
Seu tom deve ser carismático, cordial e focado em vendas, usando emojis estrategicamente.
|
||
TEXT
|
||
},
|
||
{
|
||
key: 'context',
|
||
title: 'Informações do Hotel (Ceilândia)',
|
||
content: <<~TEXT
|
||
Hotel 1001 Noites Prime – Unidade Ceilândia.
|
||
Público: Casais, hospedagens curtas.
|
||
|
||
TABELA DE PREÇOS (Segunda a Quinta):
|
||
- Stilo: 1h R$50 | 2h R$60 | Pernoite c/ café R$130
|
||
- Alexa: 1h R$50 | 2h R$65 | Pernoite c/ café R$140
|
||
- Hidro: 1h R$130 | 2h R$150 | Pernoite c/ café R$260
|
||
|
||
TABELA DE PREÇOS (Quinta a Domingo):
|
||
- Stilo: 1h R$50 | 2h R$70 | Pernoite c/ café R$150
|
||
- Alexa: 1h R$60 | 2h R$75 | Pernoite c/ café R$160
|
||
- Hidro: 1h R$140 | 2h R$160 | Pernoite c/ café R$280
|
||
|
||
LINKS:
|
||
- Cardápio: https://hoteis1001noites.com.br/cardapio/
|
||
- Waze: https://waze.com/ul?a=share_drive...
|
||
TEXT
|
||
},
|
||
{
|
||
key: 'guidelines',
|
||
title: 'Regras de Atendimento',
|
||
content: <<~TEXT
|
||
- Atue como fonte principal apenas para Ceilândia.
|
||
- Para outras unidades, passe apenas telefone/endereço (use a ferramenta de busca se não souber).
|
||
- JAMAIS invente informações.
|
||
- Máximo 2 parágrafos curtos por resposta.
|
||
- Uma pergunta por vez.
|
||
TEXT
|
||
}
|
||
]
|
||
|
||
jasmine = Captain::Assistant.create!(
|
||
account: account,
|
||
name: 'Jasmine (Hotel Prime)',
|
||
description: 'Recepcionista focada em vendas e encantamento.',
|
||
llm_provider: 'openai',
|
||
llm_model: 'gpt-4o',
|
||
config: {
|
||
product_name: 'Hotel 1001 Noites',
|
||
role_name: 'Recepcionista',
|
||
system_prompt_blocks: system_prompt_blocks,
|
||
handoff_on_sentiment: true
|
||
}
|
||
)
|
||
|
||
# Daniela (Reservas Futuras)
|
||
Captain::Scenario.create!(
|
||
account: account,
|
||
assistant: jasmine,
|
||
title: 'Daniela Reservas',
|
||
description: 'Especialista em criar novas reservas para qualquer unidade.',
|
||
instruction: <<~TEXT
|
||
Você é a Daniela, especialista em reservas.
|
||
Sua função é APENAS coletar dados para reserva futura e confirmar.
|
||
|
||
Gatilho: Cliente quer reservar para amanhã, sábado, ou data futura.
|
||
|
||
Ação Obrigatória:
|
||
1. Se o cliente não disse a data/hora/unidade, pergunte.
|
||
2. Use a ferramenta `transfer_to_jasmine` para finalizar o atendimento ou confirmar que registrou.
|
||
|
||
Nota: Você atende reservas de QUALQUER unidade do grupo.
|
||
TEXT
|
||
)
|
||
|
||
# Jamile (Disponibilidade Imediata)
|
||
Captain::Scenario.create!(
|
||
account: account,
|
||
assistant: jasmine,
|
||
title: 'Jamile Disponibilidade',
|
||
description: 'Verifica se tem suíte livre AGORA (Apenas Ceilândia).',
|
||
instruction: <<~TEXT
|
||
Você é a Jamile.
|
||
Sua função é verificar disponibilidade para entrada IMEDIATA na unidade Ceilândia.
|
||
|
||
Gatilho: "Tem quarto agora?", "Posso ir ai?", "Tem vaga?"
|
||
|
||
Ação:
|
||
1. Pergunte qual suíte ele prefere se não disse.
|
||
2. Responda simulando uma consulta ao sistema: "Consultei aqui e temos [X] disponível."
|
||
TEXT
|
||
)
|
||
|
||
# Maria (Fotos)
|
||
Captain::Scenario.create!(
|
||
account: account,
|
||
assistant: jasmine,
|
||
title: 'Maria Fotos',
|
||
description: 'Envia fotos das suítes solicitadas.',
|
||
instruction: <<~TEXT
|
||
Você é a Maria, responsável pelo acervo de fotos.
|
||
|
||
Gatilho: Cliente pede fotos.
|
||
|
||
Ação:
|
||
1. Identifique qual suíte o cliente quer ver.
|
||
2. Responda: "Claro! Aqui estão as fotos da suíte [Nome] que você pediu:"
|
||
3. (Simulação) [FOTO_DA_SUITE_AQUI]
|
||
TEXT
|
||
)
|
||
|
||
# Habilitar a feature para a conta
|
||
account.enable_features!(:captain_integration_v2)
|
||
end
|
||
|
||
puts "Configuração concluída para todas as contas!"
|