4.7 KiB
4.7 KiB
Runbook: Reserva Conversacional com Pix (Jasmine -> Daniela)
Data: 16/01/2026 Objetivo: garantir que a conversa gere reserva e envie Pix Copia e Cola via sub-agente Daniela.
1. Fluxo esperado (resumo)
- Jasmine identifica reserva futura e chama o sub-agente
daniela_reservas. - Daniela usa ferramentas internas para:
- atualizar contato (nome/CPF),
- consultar disponibilidade e preco,
- criar rascunho de reserva,
- gerar Pix.
- Pix Copia e Cola e enviado como mensagem separada no WhatsApp.
2. Configuracoes que precisam estar ativas
2.1 Assistente Jasmine
- Cenario habilitado:
Daniela Reservas(tool keyconsultar_daniela_reservas). - Ferramentas disponiveis no cenario:
update_contactcheck_availabilitycreate_reservation_intentgenerate_pix
- Modelo/Chave LLM:
assistant.api_keyvalido (ouCAPTAIN_OPEN_AI_API_KEY).
2.2 Pipeline de decisao (JasmineBrain)
- A decisao precisa carregar
tool_inputquandostrategy = execute_tool. - A chamada do runner precisa incluir
additional_data: { message:, tool_input: }.
Arquivos envolvidos:
enterprise/app/services/captain/llm/jasmine_brain.rbenterprise/app/services/captain/llm/assistant_chat_service.rbenterprise/app/services/captain/tools/tool_runner.rb
2.3 Sub-agente Daniela (ScenarioDelegatorTool)
- O runner deve ser chamado com
runner.run(pergunta_interna, max_turns: ...). - Se o sub-agente falhar, existe fallback para concluir a reserva e gerar Pix.
Arquivo:
enterprise/lib/captain/tools/scenario_delegator_tool.rb
2.4 Pix (Banco Inter)
Captain::Inter::CobServiceexige nounit:inter_pix_keyinter_account_numberinter_cert_pathinter_key_path
Arquivo:
enterprise/app/services/captain/inter/cob_service.rb
2.5 Unidade vinculada ao Inbox
- O Inbox da conversa deve estar ligado a uma unidade:
conversation.inbox.captain_inbox.unit.
2.6 Precos e sinal (Pix 50%)
- Preco enviado ao cliente vem de
Captain::Pricing:- UI:
/accounts/:accountId/captain/pricings(Dashboard > Captain > Pricings). - API:
GET /api/v1/accounts/:account_id/captain/pricings.
- UI:
- Pix Copia e Cola cobra 50% do
total_amount:enterprise/app/services/captain/inter/cob_service.rb(WhatsApp/Conversas).app/services/captain/inter_service.rb(API publica).
3. Fluxo tecnico detalhado (estado)
- Atualiza contato
update_contactgrava nome/CPF no contato.
- Criar rascunho
create_reservation_intent(suite, price)cria reservadraft.
- Gerar Pix
generate_pixbusca o ultimodrafte gera Pix.- Atualiza reserva para
pending_payment. - Envia Pix Copia e Cola como mensagem unica (somente o codigo).
- Se ja existir Pix em
pending_payment, reenvia se ainda valido; se expirado (1h), gera um novo.
Arquivos:
enterprise/app/services/captain/tools/update_contact_tool.rbenterprise/app/services/captain/tools/create_reservation_intent_tool.rbenterprise/app/services/captain/tools/generate_pix_tool.rb
4. Fallback automatico (quando o sub-agente falha)
Se o sub-agente Daniela Reservas retorna erro, o fallback executa:
- Extrair nome/CPF do texto recebido.
- Atualizar contato com nome/CPF.
- Reutilizar
pending_paymentse ja existir Pix (reenviar mensagem). - Se nao houver rascunho, criar
draftviacreate_reservation_intent. - Gerar Pix via
generate_pix.
Arquivo:
enterprise/lib/captain/tools/scenario_delegator_tool.rb
5. Checklist rapido para restaurar se quebrar
- Cenario Daniela habilitado no assistente Jasmine.
- Ferramentas listadas no cenario:
update_contact,check_availability,create_reservation_intent,generate_pix. - JasmineBrain retorna
tool_input(nao pode ser perdido). - ToolRunner passa
tool_inputpara ferramentas e setapergunta_interna. - ScenarioDelegatorTool chama runner corretamente e fallback ativo.
- Unit do inbox com dados do Inter (pix key, conta, certificados).
6. Logs de referencia (sinais de sucesso)
CreateReservationIntentTool:SUCCESS: Reserva iniciada com sucesso!
GeneratePixTool:Cobrança Pix gerada com sucesso. Copia e Cola enviado...
- Mensagem enviada no WhatsApp com:
- apenas o codigo Pix (uma mensagem dedicada)
Logs uteis:
log/tool_debug.loglog/development.loglog/brain_debug.log
7. Alertas comuns
undefined method 'type' for an instance of Stringdentro do sub-agente.- O fallback cobre isso, mas se quebrar verifique o runner.
Text and attachments cannot be both nil.- Evitar mensagens vazias no contexto.
Incorrect API key.- Ajustar
assistant.api_keyouCAPTAIN_OPEN_AI_API_KEY.
- Ajustar