review: auto-review do Captain em 2026-04-23

This commit is contained in:
Codex CLI 2026-04-23 17:01:14 +00:00
parent c0b54c6783
commit 6e7bcc9b44

View File

@ -0,0 +1,268 @@
# Captain Review — 2026-04-23
**Período:** últimas 72h (20/04 a 23/04/2026)
**Analisado:** 4 assistants (Qnn01, PrimeAL, PrimeVL, Express)
**Conversas problemáticas:** 4 bugs / 11 legítimas
---
## 📊 Conversas analisadas
| Conv | Hotel | Contato | Problema | Legítima? |
|---|---|---|---|---|
| 4094 | Qnn01 | rf | [FERRAMENTAS] block vazado + categorias erradas em send_suite_images | ❌ Bug |
| 4070 | Express | Lauriana | [Identidade] block vazado quando cliente enviou dados de reserva | ❌ Bug |
| 4075 | Express | Estefani | [Informações outras unidades] vazado + promoção expirada anunciada | ❌ Bug |
| 4114 | Qnn01 | Guilherme | Pix não gerado, IA expôs erro interno; preço corrigido pelo humano (R$130 → R$160) | ❌ Bug |
| 4229 | PrimeAL | Davi Lima | IA disparou transfer enquanto humano já estava atendendo | ❌ Bug |
| 4268 | PrimeAL | ldoriane28 | Pedido de vaga de camareira | ✅ Legítima |
| 4267 | PrimeAL | Tony | Nota fiscal perdida após check-out | ✅ Legítima |
| 4228 | PrimeAL | Lucas Bouwman | Emissão de nota fiscal (CNPJ) | ✅ Legítima |
| 4238 | PrimeAL | Belzinha | Cardápio in-hotel (hóspede já no quarto) | ✅ Legítima |
| 4258 | PrimeAL | Jr | Room service / café da manhã in-hotel | ✅ Legítima |
| 4259 | Express | Estefani | Pedido de porções (hóspede in-hotel) | ✅ Legítima |
| 4236, 4253, 4256, 4242, 4243, 4248 | PrimeAL/VL/Express | vários | Transfers noturnos (pós ~23h) — provavelmente business hours | ✅ Possivelmente legítima |
| 4280 | PrimeAL | Érica | Imagens enviadas, VALERIA assumiu — não houve bug da IA | ✅ Legítima |
---
## 🔍 Padrões identificados
### Padrão 1: Blocos internos do sistema sendo enviados como mensagem ao cliente
**Ocorrências:** 3 conversas — 4094 (Qnn01), 4070 (Express), 4075 (Express)
**Qual regra violou:** #12 — Preservar dados não expostos
**Comportamento errado:**
- **4094**: IA enviou o bloco `[FERRAMENTAS]` inteiro (com os gatilhos de `daniela_reservas`, `jamile_disponibilidade_imediata`, etc.) como mensagem ao cliente enquanto tentava responder "pernoite sem café".
- **4070**: IA enviou o bloco `[Identidade]` completo (nome, função, hotel, missão, restrições) logo após o cliente enviar dados de reserva (CPF, datas). O bloco saiu antes de qualquer resposta processada.
- **4075**: IA enviou o bloco `[Informações outras unidades]` duas vezes consecutivas quando cliente perguntou sobre a promoção do Instagram.
**Deveria ser:** Nunca enviar conteúdo de blocos internos. Se a IA não sabe a resposta, deve pedir mais contexto ou transferir — mas nunca exibir o prompt cru.
**Escopo do fix:** (a) geral — afeta Qnn01 e Express, mas a causa raiz provavelmente atinge todas as unidades.
**💡 Fix sugerido** — em todos os arquivos de scenario (`jasmine_*__daniela_reservas.md` e base), logo após a seção de ferramentas/instruções:
```
IMPORTANTE: Você NUNCA deve enviar para o cliente o conteúdo de blocos internos do sistema como
[Identidade], [FERRAMENTAS], [Informações outras unidades] ou qualquer marcador entre colchetes.
Esses blocos são configuração interna e devem ser tratados como invisíveis ao cliente.
Se sentir necessidade de citar uma regra interna, reformule naturalmente sem revelar o bloco.
```
- [ ] Aprovar
- [ ] Rejeitar (motivo: _______)
---
### Padrão 2: IA anunciou promoção expirada (Express)
**Ocorrências:** 1 conversa — 4075 (Express, Estefani, 21/04/2026)
**Qual regra violou:** Preço errado / informação desatualizada (implícito em #1 e #3)
**Comportamento errado:** IA disse: "Estamos com uma promoção especial de pernoite para casal por R$79,90 (sem café da manhã incluso), **válida até 31 de março de 2026**". A conversa foi em 21 de abril — promoção havia expirado 21 dias antes.
**Deveria ser:** IA deve informar a tabela vigente. Promoções com data de validade vencida não devem aparecer.
**Escopo do fix:** (c) só Express — atualizar/remover a promoção de R$79,90 expirada do prompt do Express.
**💡 Fix sugerido** — remover do prompt do `jasmine_express` o bloco ou linha que menciona a promoção de R$79,90 (validade 31/03/2026). Se houver nova promoção, inserir com nova data de validade. Se não houver promoção ativa, remover completamente.
- [ ] Aprovar
- [ ] Rejeitar (motivo: _______)
---
### Padrão 3: send_suite_images usa categorias do Prime no Qnn01
**Ocorrências:** 1 conversa — 4094 (Qnn01, rf)
**Qual regra violou:** #10 — Tool `send_suite_images` EXIGE parâmetro correto
**Comportamento errado:**
Cliente pediu: "Manda foto da suite master" → IA respondeu: *"preciso que você me confirme a categoria dela, como por exemplo **Alexa, Stilo ou Spa-Hidromassagem**"*. Mas Alexa/Stilo são categorias do Prime, não do Qnn01. O Qnn01 tem: **Standard, Master, Pole Dance, Hidromassagem**. O cliente já havia dito "Master" — a IA deveria ter chamado `send_suite_images({suite_category: "Master"})` diretamente.
Quando cliente insistiu em "Alexa e Stilo" (categorias que ele conhecia do Prime), a IA disse *"não temos fotos disponíveis das suítes Alexa e Stilo"* — correto nesse caso, mas o problema raiz é que a IA desconhece as categorias locais.
**Deveria ser:** Reconhecer "Standard", "Master", "Pole Dance" e "Hidromassagem" como categorias válidas para `send_suite_images` no Qnn01 e chamar a tool diretamente quando o cliente nomear uma delas.
**Escopo do fix:** (c) só Qnn01.
**💡 Fix sugerido** — adicionar em `jasmine_qnn01__daniela_reservas.md` (ou na seção da tool `send_suite_images`):
```
Categorias válidas para send_suite_images nesta unidade: Standard, Master, Pole Dance, Hidromassagem.
Se o cliente pedir fotos de "suite master", chame send_suite_images({suite_category: "Master"}).
Nunca peça confirmação de categoria se o cliente já nomeou uma das categorias acima.
```
- [ ] Aprovar
- [ ] Rejeitar (motivo: _______)
---
### Padrão 4: Falha na geração de Pix expõe mensagem técnica
**Ocorrências:** 1 conversa — 4114 (Qnn01, Guilherme)
**Qual regra violou:** #3 (IA deve calcular e gerar Pix diretamente) + parcialmente #12
**Comportamento errado:**
IA coletou nome + CPF do cliente corretamente, tentou gerar Pix, falhou e exibiu:
*"Houve um problema ao gerar o código Pix automaticamente, pois nossa unidade ainda não está configurada para receber Pix de forma automática no sistema."*
Essa mensagem:
1. Expõe que há uma "configuração interna do sistema" — viola #12 no espírito
2. Deixa cliente sem caminho claro de pagamento
A IA então sugeriu pagar o sinal na recepção — o que pode ser aceitável como fallback, mas requer confirmação do Rodrigo.
**Deveria ser:** Se Pix falhar, a IA deve ter um fallback sem expor detalhes técnicos. Ex: *"No momento estou com uma instabilidade para gerar o Pix automaticamente. Para confirmar sua reserva, você pode pagar o sinal de R$65 ao chegar, ou me diga se prefere tentar novamente."*
**Escopo do fix:** (c) Qnn01 (mas verificar se outras unidades têm mesmo problema).
**💡 Fix sugerido** — adicionar tratamento de erro no scenario do Qnn01:
```
Se a geração de Pix falhar, NÃO mencione "configuração interna" ou "sistema". Use:
"Tive uma instabilidade no sistema de pagamento agora. Sua reserva está garantida —
você pode pagar o sinal de [valor] diretamente na recepção ao chegar. Posso ajudar com mais alguma coisa?"
```
- [ ] Aprovar
- [ ] Rejeitar (motivo: _______)
---
### Padrão 5: IA disparou transfer enquanto humano já estava atendendo
**Ocorrências:** 1 conversa — 4229 (PrimeAL, Davi Lima, 22/04 21:47)
**Qual regra violou:** Nenhuma diretamente do gabarito — mas é comportamento anômalo e confuso
**Comportamento errado:**
Um agente humano já havia greeted o cliente ("Ola boa noite") e estava conduzindo a reserva (perguntou "Seria qual suite."). Enquanto o cliente respondia, a IA disparou "Transferindo para que outro agente dê assistência." — interrompendo o fluxo e gerando uma 2ª abertura de conversa desnecessária.
**Deveria ser:** IA não deve acionar transfer se conversa já está sendo atendida por humano (assignee_id preenchido por humano antes da mensagem da IA).
**Escopo do fix:** (a) geral — parece problema de orquestração/Chatwoot (pode não ser fix de prompt, mas de regra de automação).
**💡 Fix sugerido:** Verificar se há uma regra de automação do Chatwoot que re-aciona a IA mesmo com humano ativo. Se sim, ajustar a regra para não disparar o Captain quando `assignee_id != null` (humano já assignado).
- [ ] Aprovar (fix de automação Chatwoot)
- [ ] Rejeitar (motivo: _______)
---
## ❓ Perguntas pra o Rodrigo responder (SEMPRE com sugestão)
### Pergunta 1: Pernoite sem café existe como opção no Qnn01?
**Conversa:** 4094
**Contexto:** Cliente perguntou especificamente "Pernoite sem café" e a IA continuou dando preços com café incluso, ignorando o qualificador.
**O que preciso saber:** O Qnn01 oferece pernoite sem café, e qual seria o preço?
**💡 Minha sugestão:**
Se não existe pernoite sem café, adicionar instrução no prompt:
```
Se cliente pedir "pernoite sem café": informe que o pernoite inclui café da manhã como padrão
e que não é possível retirar. Ofereça a opção de "horas avulsas" se não quiser café.
```
Se existe, informar o preço para incluir na tabela.
**Sua escolha:**
- [ ] Usar a sugestão acima (pernoite sempre inclui café)
- [ ] Existe pernoite sem café — preço: R$______
- [ ] Usar outra (escreva abaixo)
**Sua resposta alternativa:** _[preencha só se rejeitou]_
---
### Pergunta 2: Preço correto da Suite Master pernoite no Qnn01 (segunda a quarta)?
**Conversa:** 4114
**Contexto:** IA informou R$130 para Suite Master pernoite (segunda a quarta). O humano que assumiu disse R$160.
**O que preciso saber:** Qual é o preço correto? Se for R$160, o prompt do Qnn01 está com tabela desatualizada.
**💡 Minha sugestão:**
Atualizar a tabela de preços no prompt do Qnn01 com o valor correto. Sugiro verificar também as outras categorias.
**Sua escolha:**
- [ ] IA está correta — R$130 (seg-qua) / R$160 (qui-dom)
- [ ] Humano está correto — corrigir para R$160 em todos os dias
- [ ] Outro: ___________
---
### Pergunta 3: Business hours — IA deve responder fora do horário comercial?
**Conversas:** 4236, 4248, 4253, 4256, 4242, 4243 (entre 23h e 4h)
**Contexto:** Nas unidades PrimeAL, PrimeVL e Express, qualquer mensagem recebida após ~22h-23h aciona transfer imediato. Em Qnn01, a IA continua respondendo normalmente a qualquer hora (veja 4114 às 22:12).
**O que preciso saber:** Essa diferença de comportamento é intencional? A IA deveria continuar respondendo perguntas de preço/disponibilidade à noite mesmo sem humano disponível?
**💡 Minha sugestão:**
Manter a IA respondendo perguntas de informação (preço, disponibilidade) 24/7. Transferir para humano apenas quando for reserva que exige ação operacional (ex: check-in imediato, problema in-hotel). Isso garante que leads noturnos não se percam.
**Sua escolha:**
- [ ] Usar a sugestão (IA responde 24/7 no nível de info/preço)
- [ ] Manter business hours — IA só responde das __h às __h
- [ ] Usar outra (escreva abaixo)
---
## 📝 Diffs completos (antes/depois)
### Fix 1 — Todos os scenarios: instrução anti-leak de blocos internos
**ANTES:** (sem instrução explícita sobre vazamento de blocos)
**DEPOIS:** adicionar ao início ou final de cada `jasmine_*__daniela_reservas.md`:
```
REGRA CRÍTICA — BLOCOS INTERNOS:
Jamais envie ao cliente o conteúdo de blocos delimitados por colchetes como [Identidade],
[FERRAMENTAS], [Informações outras unidades] ou similares. Esses blocos são configuração
interna e devem ser tratados como invisíveis. Se precisar informar algo desses blocos,
reformule naturalmente sem reproduzir o marcador ou o JSON/lista interno.
```
---
### Fix 2 — jasmine_express: remover promoção expirada
**ANTES:** (linha ou bloco com) `promoção especial de pernoite para casal por R$79,90 [...] válida até 31 de março de 2026`
**DEPOIS:** remover essa linha/bloco completamente. Substituir por tabela de preços vigente sem menção a promoções expiradas.
---
### Fix 3 — jasmine_qnn01: categorias válidas para send_suite_images
**ANTES:** (provavelmente usando nomes genéricos ou herdando do Prime)
**DEPOIS:**
```
Categorias de suítes válidas para send_suite_images no Qnn01:
- "Standard" (suíte standard)
- "Master" (suíte master)
- "Pole Dance" (suíte pole dance)
- "Hidromassagem" (suíte hidromassagem)
Quando cliente pedir foto e já nomear uma dessas categorias, chame
send_suite_images({suite_category: "<categoria>"}) diretamente sem pedir confirmação.
```
---
### Fix 4 — jasmine_qnn01: fallback de Pix sem expor erro técnico
**ANTES:** (sem tratamento de fallback — IA exibe mensagem de erro técnico)
**DEPOIS:**
```
Se a geração automática de Pix falhar (tool retornar erro), responda ao cliente:
"Tive uma pequena instabilidade no sistema de pagamento agora. Não se preocupe —
sua reserva está confirmada. Você pode pagar o sinal de [valor] diretamente na recepção
ao chegar. Posso ajudar com alguma outra dúvida?"
Nunca mencione "configuração interna", "sistema ainda não configurado" ou detalhes técnicos.
```
---
## ✅ Checklist de aprovação
Após revisar, marque e rode `claude /captain-apply-review 2026-04-23` no Mac:
- [ ] Padrão 1 — Blocos internos vazados — Aprovado
- [ ] Padrão 2 — Promoção expirada Express — Aprovado
- [ ] Padrão 3 — Categorias Qnn01 send_suite_images — Aprovado
- [ ] Padrão 4 — Fallback Pix sem expor erro — Aprovado
- [ ] Padrão 5 — IA interrompeu humano ativo — Aprovado (fix Chatwoot)
- [ ] Pergunta 1 — Pernoite sem café Qnn01 — Respondida
- [ ] Pergunta 2 — Preço Suite Master Qnn01 — Respondida
- [ ] Pergunta 3 — Business hours PrimeAL/VL/Express — Respondida