3.6 KiB
3.6 KiB
Runbook - Captain Tools, Pix e Daniela (blindagem)
Objetivo
Documentar o estado atual do fluxo de reservas/Pix e das ferramentas do Captain para evitar regressao quando houver novas mudancas.
Escopo
- Ferramentas do Captain (tools) usadas pela Jasmine/Daniela.
- Geracao de Pix com expiracao de 1h e reemissao.
- Exposicao das ferramentas na UI (poderes/capacidades) e fallback por ferramenta.
Principais mudancas feitas
- Pix com expiracao e reemissao
- Pix expira em 1 hora.
- Se houver Pix pendente e expirado, gera novo Pix.
- Se ainda valido, reenvia o Pix existente.
- Arquivos:
- enterprise/app/models/captain/pix_charge.rb
- enterprise/app/services/captain/inter/cob_service.rb
- enterprise/app/services/captain/tools/generate_pix_tool.rb
- enterprise/lib/captain/tools/scenario_delegator_tool.rb
- Ferramentas do Captain listadas na UI
- list_reservations adicionada ao catalogo de tools.
- Ferramentas com configuracao local (nao webhook) aparecem sem bloco de configuracao.
- faq_lookup continua visivel, mas sem toggle de ligar/desligar.
- Arquivos:
- config/agents/tools.yml
- enterprise/app/services/captain/tools/definitions.rb
- app/javascript/dashboard/routes/dashboard/captain/assistants/tools/Index.vue
- Fallback personalizado por ferramenta
- Cada tool pode ter fallback_message opcional.
- Se tool falhar e houver fallback, resposta usa esse texto.
- Excecoes sem fallback custom: faq_lookup, react_to_message.
- Arquivos:
- db/migrate/20260116000000_add_fallback_message_to_captain_tool_configs.rb
- enterprise/app/controllers/api/v1/accounts/captain/tools_controller.rb
- enterprise/app/services/captain/tools/tool_runner.rb
- enterprise/app/services/captain/llm/assistant_chat_service.rb
- Correcoes de schema das tools (evitar erro type)
- RubyLLM espera parametros como RubyLLM::Parameter.
- BaseTool converte schema JSON em parametros.
- JasmineBrain imprime schema correto no prompt.
- Arquivos:
- enterprise/app/services/captain/tools/base_tool.rb
- enterprise/app/services/captain/tools/check_availability_tool.rb
- enterprise/app/services/captain/tools/create_reservation_intent_tool.rb
- enterprise/app/services/captain/llm/jasmine_brain.rb
Sintomas conhecidos quando quebra
- Jasmine responde "Desculpe, estou com dificuldades tecnicas..." apos um simples "Ola".
- Erro no log: undefined method 'type' for an instance of String.
- Causa tipica: tool parameters em formato incorreto (schema JSON cru).
Testes rapidos (smoke)
- Saudacao simples
- Mensagem: "Ola"
- Esperado: resposta normal da Jasmine (sem erro tecnico).
- Reserva com Pix novo
- Mensagem: "Quero reservar a suite Stilo dia 20/01 as 14h."
- Esperado: consulta disponibilidade, cria intencao, pede CPF se nao houver, gera Pix novo.
- Pix expirado
- Repetir pedido apos >1h.
- Esperado: "Pix expirado. Gerando um novo agora." e Pix novo.
- Consultar reservas
- Daniela deve poder chamar listar reservas quando cliente perguntar "em nome de quem".
Comandos de log curtos
-
Erro de tool schema: rg -n "undefined method 'type'" log/development.log | tail -n 5
-
Falha de tools do Captain: rg -n "ScenarioDelegatorTool|LLM Error" log/development.log | tail -n 20
-
Execucao das ferramentas de reserva/Pix: rg -n "CreateReservationIntentTool|GeneratePixTool|CheckAvailabilityTool" log/tool_debug.log | tail -n 20
Observacoes importantes
- Nao alterar formato de tool parameters sem validar com RubyLLM::Parameter.
- Se adicionar nova tool, usar BaseTool e preferir tool_parameters_schema.
- Sempre reiniciar Rails apos mudar tools, schema ou defs.
Responsavel por revisao
- Antes de qualquer mudanca: rodar os testes rapidos e verificar logs curtos.