Pular para conteúdo

Primeira execução

Resultado esperado

Depois de preparar o ambiente, execute scripts/dashboard.py em primeiro plano. O terminal deve informar a criação do contexto moto e a URL local. Abra http://localhost:8080 e confirme que a UI carrega.

Invoke-RestMethod http://localhost:8080/healthz
curl --fail http://localhost:8080/healthz

O endpoint responde HTTP 200 com {"ok":true}. Ele confirma o processo HTTP, mas não consulta OpenAI, banco ou integrações. Um health verde seguido de erro no chat é possível.

Primeiro percurso sem chamada real à IA

Execute o replay determinístico por pytest, na raiz, com as dependências de desenvolvimento instaladas:

python -m pytest tests/integration/test_fixture_replay.py -q

O diretório chama-se integration, mas esse arquivo usa MagicMock, stubs e moto. As respostas do modelo vêm das fixtures. O teste percorre o caso de uso e verifica os invariantes declarados por cada conversa; não valida a qualidade de uma resposta nova gerada pela IA. Veja o formato de fixture.

Com o dashboard configurado, a aba Scenarios executa esses cenários e mostra resultados. A presença do botão não habilita um teste real da OpenAI; a aba Smokes é outro mecanismo e possui efeitos diferentes.

Primeiro chat com OpenAI

Esse percurso requer a chave e consome a API real. Antes, confirme que os adapters de WhatsApp, CRM, eGestor e handoff estão desabilitados conforme o ambiente local. Use somente dados fictícios no formulário.

  1. Escreva “Olá, quero entender quais análises vocês oferecem”.
  2. Envie a mensagem e observe o histórico do cliente e a resposta do agente.
  3. Confira o badge de estado e os eventos de LLM/orquestração em Live logs.
  4. Continue respondendo às perguntas com dados fictícios. A sequência depende da intenção, dos dados já coletados e do retorno do modelo.

Uma primeira mensagem costuma sair de NEW para TRIAGE, mas o mesmo turno pode já avançar para qualificação ou handoff. O texto exato é não determinístico; avalie o contrato e a transição, não uma frase literal.

Seletores que ainda não alteram o fluxo

chat_send() recebe instance-input e cliente-conhecido, mas descarta ambos e chama o core com os defaults. Não use esses campos como prova de que testou a instância GoYou ou o reconhecimento de cliente. Os testes de domínio/agentes e as sessões efetivamente persistidas são as fontes para esses comportamentos.

Ler os painéis

Superfície O que observar Limite
Chat Mensagens, mídia simulada e estado Não reproduz assinatura Meta ou consumo SQS
Live logs Chamadas, transições, KB e falhas Não publique a saída sem sanitização
Knowledge Packages e editor Salvar no editor local altera arquivos Python da KB
Prompts Prompt renderizado por agente Overrides dinâmicos podem alterar o prompt efetivo
Scenarios Replay das conversas de fixture Não chama um modelo real
Smokes Preflight e exercício controlado de providers Leia smokes antes de usar
/atendimento Fila e atendimento humano Requer sessão de operador; visitar a URL não autentica

O fluxo de acesso humano começa por um número autorizado enviando disponivel ou entrar, recebendo um link de uso único e concluindo a autenticação. A operação real pelo WhatsApp é uma homologação separada. Consulte operadores.

Como interpretar falhas

Sintoma Próxima verificação
HTTP funciona, mas a home/chat falha Configuração e construção de dependências; /healthz não as valida
Chat termina em handoff por falha Eventos de timeout, erro de provider ou parser; veja erros
Sem resposta após envio Logs da requisição e emulator_chat_failed; um buffer pode permanecer para tentativa posterior
Dados desapareceram após reiniciar Comportamento esperado do moto em memória
“Limpar” não parece um reset completo Confira a rota acionada e o que ela exclui em dashboard local
CRM real não mudou Confirme flags, modo local e ausência do worker agendado de sync nesse launcher

Encerre a execução em primeiro plano com Ctrl+C. Para launchers em background, use os comandos stop com as limitações descritas na instalação. Um teste local bem-sucedido comprova o caminho exercitado; use o runbook de homologação para validar a cadeia implantada.

Fontes: scripts/dashboard.py, src/emulator/app.py (chat_send, healthz, _run_one_fixture), tests/integration/test_fixture_replay.py, tests/integration/fixture_replay.py, tests/unit/lambdas/test_emulator.py.