chatwoot-develop/progresso/2026-01-16_runbook_reserva_pix_daniela_jasmine.md
2026-01-19 19:26:23 -03:00

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)

  1. Jasmine identifica reserva futura e chama o sub-agente daniela_reservas.
  2. Daniela usa ferramentas internas para:
    • atualizar contato (nome/CPF),
    • consultar disponibilidade e preco,
    • criar rascunho de reserva,
    • gerar Pix.
  3. 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 key consultar_daniela_reservas).
  • Ferramentas disponiveis no cenario:
    • update_contact
    • check_availability
    • create_reservation_intent
    • generate_pix
  • Modelo/Chave LLM: assistant.api_key valido (ou CAPTAIN_OPEN_AI_API_KEY).

2.2 Pipeline de decisao (JasmineBrain)

  • A decisao precisa carregar tool_input quando strategy = execute_tool.
  • A chamada do runner precisa incluir additional_data: { message:, tool_input: }.

Arquivos envolvidos:

  • enterprise/app/services/captain/llm/jasmine_brain.rb
  • enterprise/app/services/captain/llm/assistant_chat_service.rb
  • enterprise/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::CobService exige no unit:
    • inter_pix_key
    • inter_account_number
    • inter_cert_path
    • inter_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.
  • 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)

  1. Atualiza contato
    • update_contact grava nome/CPF no contato.
  2. Criar rascunho
    • create_reservation_intent(suite, price) cria reserva draft.
  3. Gerar Pix
    • generate_pix busca o ultimo draft e 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.rb
  • enterprise/app/services/captain/tools/create_reservation_intent_tool.rb
  • enterprise/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_payment se ja existir Pix (reenviar mensagem).
  • Se nao houver rascunho, criar draft via create_reservation_intent.
  • Gerar Pix via generate_pix.

Arquivo:

  • enterprise/lib/captain/tools/scenario_delegator_tool.rb

5. Checklist rapido para restaurar se quebrar

  1. Cenario Daniela habilitado no assistente Jasmine.
  2. Ferramentas listadas no cenario: update_contact, check_availability, create_reservation_intent, generate_pix.
  3. JasmineBrain retorna tool_input (nao pode ser perdido).
  4. ToolRunner passa tool_input para ferramentas e seta pergunta_interna.
  5. ScenarioDelegatorTool chama runner corretamente e fallback ativo.
  6. 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.log
  • log/development.log
  • log/brain_debug.log

7. Alertas comuns

  • undefined method 'type' for an instance of String dentro 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_key ou CAPTAIN_OPEN_AI_API_KEY.