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.
- Escreva “Olá, quero entender quais análises vocês oferecem”.
- Envie a mensagem e observe o histórico do cliente e a resposta do agente.
- Confira o badge de estado e os eventos de LLM/orquestração em Live logs.
- 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.