Produtos | Clientes | Depoimentos | Suporte
Dashboard de Saúde Operacional
Conceito e Acesso
O Dashboard de Saúde Operacional é um painel de diagnóstico read-only acessível pelo menu Insights > Saúde Operacional no Wake OMS. Ele centraliza a visibilidade sobre a disponibilidade das lojas e a capacidade de atendimento de pedidos, permitindo que o time de operações identifique proativamente gargalos, lojas desconectadas e pedidos acumulados antes que impactem o cliente final.
O painel atualiza os dados a cada 30 minutos (configurável) e não executa nenhuma ação, apenas exibe a situação atual.
Para visualizar o dashboard, o usuário deve ter a role WAKEINSIGHTS:SAUDEOPERACIONAL atribuída à conta.
Funcionamento
O dashboard é composto por 4 seções, carregadas de forma assíncrona:
1. Índice de Saúde (topo da página)
Score circular de 0 a 100, calculado como: (lojas OK + lojas em atenção × 0.5) / total de lojas monitoradas × 100
Abaixo de 60 → Crítico (vermelho)
60 a 79 → Requer atenção (amarelo)
80 ou mais → Saudável (verde)
Exibe também: total de lojas em alerta / monitoradas, quantidade de pedidos em pontos críticos e idade (em dias) do pedido mais antigo na fila.
2. Indicadores Críticos (cards)
Até 7 cards, cada um com contagem, severidade e link para detalhe:
Indicador | O que monitora | Severidade |
|---|---|---|
Lojas Offline | Lojas Linx POS / SinB2C sem conexão com o hub SignalR | Crítico |
Estoque Desatualizado | Lojas cuja última integração de estoque ultrapassou o limite parametrizado | Crítico |
Aguardando Atendimento | Pedidos nos status 1 (Aguardando Aceite) e 17 | Atenção |
Aguardando Análise Admin | Pedidos nos status 8, 9, 10 | Atenção |
Aguardando Retirada | Pedidos no status 22 dentro da janela parametrizada (entre X e Y dias) | Atenção |
Problemas c/ Transportadora | Pedidos no status 18 nos últimos 2 dias | Crítico |
Problema na Entrega | Pedidos no status 23 nos últimos 2 dias | Crítico |
Nota: O card "Lojas Offline" só aparece para tenants que possuem pelo menos uma conta com tipo de integração Linx POS ou SinB2C. Para demais tipos de integração, esse card é automaticamente ocultado.
Cada card é clicável e abre um modal com a lista de lojas afetadas. Cards de pedidos exibem a distribuição por loja e permitem abrir a tela de Pedidos filtrada pelo status correspondente.
3. Pedidos Sem Movimentação por Idade
Gráfico de barras horizontais mostrando a distribuição dos pedidos pendentes de atendimento (status 1 e 17) por tempo parado:
< 1 dia (verde)
+1 dia (amarelo)
+2 dias (amarelo escuro)
+3 a 4 dias (laranja)
+5 dias ou mais (vermelho)
Nota: A referência de idade é a data de entrada no status atual, não a data do pedido. Isso evita falso alerta em pedidos que ficaram parados em outros status.
4. Lojas com Problemas (tabela)
Tabela ordenável exibindo apenas lojas que não estão com status "ok". Colunas:
Status - semáforo (crítico / atenção / ok)
Conta / Loja - nome da loja e conta pai
Aceite - pedidos aguardando atendimento
Retirada - pedidos aguardando retirada
Transportadora - pedidos com problema de transportadora
Prob. Entrega - pedidos com problema na entrega
Últ. Atualização Estoque - data/hora da última integração de estoque (com indicador de desatualizado)
Cada célula de contagem com valor > 0 tem um botão de lupa que abre a tela de Pedidos filtrada por status + conta da loja.
Para entender mais a respeito da funcionalidade e telas, acesse a documentação pública clicando aqui.
Classificação de Gravidade das Lojas
A gravidade de cada loja é calculada automaticamente com os seguintes pesos:
Fator | Peso |
|---|---|
Problema com Transportadora | 6 por pedido |
Problema na Entrega | 6 por pedido |
Estoque Desatualizado | +14 pontos fixos |
Loja Offline | +10 pontos fixos |
Aguardando Aceite | 0.7 por pedido |
Aguardando Análise | 0.5 por pedido |
Aguardando Retirada | 0.2 por pedido (não escala para crítico) |
Status resultante:
Crítico - loja offline, OU estoque desatualizado com gravidade ≥ 18, OU gravidade ≥ 40
Atenção - estoque desatualizado sozinho, OU gravidade ≥ 14
OK - demais casos
Importante: A retirada é descontada na avaliação de criticidade. Um backlog de "aguardando retirada" nunca gera alerta crítico falso, pois é atraso do cliente (não retirou o pedido), não falha operacional da loja.
Parâmetros Configuráveis
Os limites do dashboard são configuráveis pela tabela PARAMETROS do banco:
Parâmetro | Default | Descrição |
|---|---|---|
SAUDE_OPERACIONAL_CACHE_MINUTOS | 30 | Tempo (em minutos) que os dados ficam em cache antes de uma nova consulta ao banco |
SAUDE_OPERACIONAL_ESTOQUE_DESATUALIZADO_MINUTOS | 4320 (3 dias) | Tempo sem integração de estoque para considerar desatualizado |
SAUDE_OPERACIONAL_AGUARDANDO_RETIRADA_DIAS | 30 | Mínimo de dias parado para pedido de retirada entrar no alerta |
SAUDE_OPERACIONAL_AGUARDANDO_RETIRADA_DIAS_MAX | 180 | Máximo de dias — acima disso é considerado abandonado e sai da contagem |
Atenção: O parâmetro de estoque desatualizado deve ser ajustado conforme a frequência esperada de integração de cada cliente. O default de 3 dias pode ser conservador demais para operações com integração diária.
Detecção de Lojas Offline
A detecção de lojas offline funciona da seguinte forma:
Apenas lojas com tipo de integração Linx POS ou SinB2C são candidatas (outros tipos não passam pelo hub SignalR).
O serviço consulta o hub SignalR para obter a lista de clientes conectados.
Lojas que não constam na lista de conectados, ou que possuem data de desconexão preenchida, são marcadas como offline.
Se o hub SignalR estiver indisponível ou com timeout, a apuração segue normalmente, os dados do dashboard são exibidos sem a informação de offline (degradação graceful, sem erro).
Cenários de Borda
- O dashboard mostra "0" em todos os indicadores
Pode significar que não há lojas com problemas (cenário saudável). Se o tenant acabou de ser criado ou não tem pedidos nos status monitorados, os indicadores ficarão zerados.
- O card "Lojas Offline" não aparece
O tenant não possui nenhuma conta com tipo de integração Linx POS ou SinB2C. Isso é esperado, o card é automaticamente ocultado.
- Dados parecem desatualizados
Os dados são cacheados por 30 minutos (default). O selo no topo da página informa "Dados atualizados a cada 30 minutos" e a data/hora da última carga. Se o parâmetro SAUDE_OPERACIONAL_CACHE_MINUTOS foi alterado para um valor maior, o intervalo será correspondente.
- Uma seção mostra erro "Não foi possível carregar os dados"
Pode ser falha temporária de comunicação com a API. O botão "Tentar novamente" recarrega a seção individualmente. Se persistir, verificar logs da API para o endpoint correspondente.
- Lojas offline: "Não conectada" vs "Desconectada em [data]"
"Desconectada em [data]" - a loja já esteve conectada e perdeu a conexão naquela data.
"Não conectada" - a loja nunca registrou uma conexão no hub SignalR.
- Pedidos de retirada não aparecem no alerta
Pedidos aguardando retirada só entram na contagem se estiverem parados entre X e Y dias (conforme parâmetros). Pedidos mais novos que X dias ou mais velhos que Y dias são excluídos.
FAQ - Perguntas Frequentes
- Quem pode acessar o dashboard?
Apenas usuários com a role WAKEINSIGHTS:SAUDEOPERACIONAL. Configurar via gestão de permissões da conta.
- O dashboard altera algum pedido ou status?
Não. O dashboard é 100% read-only - apenas exibe a situação atual. Nenhuma ação é executada.
- O que significam os deep links "Abrir em Pedidos"?
Abrem a tela de Pedidos em nova aba, já filtrada pelos status correspondentes ao indicador clicado. Se clicado a partir de uma loja específica, também filtra pela conta da loja.
- Quais são os IDs de status monitorados?
Card | Status IDs |
|---|---|
Aceite | 1, 17 |
Análise Admin | 8, 9, 10 |
Retirada | 22 |
Transportadora | 18 |
Entrega | 23 |
- Como o score de saúde é calculado?
Score = (lojas OK + lojas em atenção × 0.5) / total monitoradas × 100. Abaixo de 60 é crítico, 60-79 é atenção, 80+ é saudável.
- Por que a gravidade de uma loja está alta se ela só tem pedidos de retirada?
A retirada tem peso baixo (0.2) e nunca escala para "crítico". Se a gravidade está alta, há outros fatores contribuindo (estoque, transportadora, entrega, offline).
- O hub SignalR caiu, o dashboard vai parar de funcionar?
Não. O dashboard continua funcionando normalmente, apenas sem os dados do card "Lojas Offline". A apuração trata a indisponibilidade do hub como degradação parcial, não como erro.
- Como forçar uma atualização imediata dos dados?
Não há botão de refresh manual. Os dados são recalculados automaticamente quando o cache expira (default 30 min). O parâmetro SAUDE_OPERACIONAL_CACHE_MINUTOS controla esse intervalo.
Como Encontrar os Logs
Os logs da apuração são enviados com os seguintes processos:
Processo no log | Quando aparece |
|---|---|
saude-operacional-apuracao | Apuração do dataset concluída com sucesso (inclui tempo em ms e quantidade de lojas) |
saude-operacional-apuracao (erro) | Falha ao apurar dataset (inclui mensagem de erro e stack trace) |
saude-operacional-signalr-timeout | Timeout ao consultar o hub SignalR |
saude-operacional-signalr-indisponivel | Hub SignalR indisponível (erro de comunicação) |
Campos úteis para busca nos logs:
Campo | Descrição |
|---|---|
empresa | Nome do tenant |
contaLogada | Conta do usuário que disparou a apuração |
qtdLojas | Quantidade de lojas no dataset |
tempoMs | Tempo de apuração em milissegundos |
O que o Suporte Pode Fazer
Verificar permissão - Confirmar que a conta do cliente tem a role WAKEINSIGHTS:SAUDEOPERACIONAL.
Ajustar parâmetros - Alterar os limites na tabela PARAMETROS conforme a operação do cliente (ex.: reduzir o limite de estoque desatualizado para operações com integração mais frequente).
Verificar hub SignalR - Se o card de Lojas Offline não mostra dados esperados, verificar se o hub está operacional consultando os logs com processo saude-operacional-signalr-*.
Orientar sobre os deep links - Explicar ao cliente que clicar em indicadores ou no botão de lupa abre a tela de Pedidos filtrada, onde ele pode agir sobre os pedidos individualmente.
Confirmar recência dos dados - O selo no topo e o subtítulo da página informam a data/hora da última carga. Se o cliente reclama de dados desatualizados, verificar o valor do parâmetro de cache.