Dashboard de Saúde Operacional

Dashboard de Saúde Operacional

Nesta documentação você aprenderá sobre:


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

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

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

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:

  1. Apenas lojas com tipo de integração Linx POS ou SinB2C são candidatas (outros tipos não passam pelo hub SignalR).

  2. O serviço consulta o hub SignalR para obter a lista de clientes conectados.

  3. Lojas que não constam na lista de conectados, ou que possuem data de desconexão preenchida, são marcadas como offline.

  4. 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

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

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

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

  1. Verificar permissão - Confirmar que a conta do cliente tem a role WAKEINSIGHTS:SAUDEOPERACIONAL.

  2. 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).

  3. 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-*.

  4. 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.

  5. 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.

@2024 Síntese, uma empresa LWSA