🎧

OPERAÇÕES DE TI | VISÃO EXECUTIVA

Gestão de Chamados de TI — dashboard ITIL conectado à planilha ou banco de dados (atualização automática por hora)

Aging de Chamados Abertos por faixa de dias

Matriz Prioridade × Aging qtd. chamados abertos

SLA — Situação dos Chamados backlog atual

0Total

Backlog por Grupo Solucionador

Abertos × Fechados × Backlog últimos 6 meses

Tempo de Primeiro Atendimento abertos no período

00:00Tempo médio 1º atendimento
0%% dentro do SLA de espera
0
Vencendo hoje
0
Fora do SLA
0
Sem 1º atendimento
0
Total no período

Incidentes × Requisições

Top 5 Categorias volume de abertos

Top 5 Causas volume de abertos

Chamados Críticos / Altos Abertos backlog atual, ordenado por aging

GESTÃO À VISTA | OPERAÇÕES DE TI

Indicadores ITIL para acompanhamento em tempo real

Aguardando carga de dados
Abertos hoje
0
novos chamados no dia
Fechados hoje
0
chamados encerrados no dia
Abertos no mês
0
entradas do mês atual
Encerrados no mês
0
saídas do mês atual
Fora do SLA
0
exigem priorização imediata
Críticos / altos
0
prioridades 1 e 2 no backlog
Aging médio
0d
idade média do backlog

Backlog atual meta operacional

0
Meta: manter abaixo de 70 chamados
NA META · limite 70

Backlog por aging idade dos chamados abertos

Backlog por prioridade

0Backlog

Incidentes × requisições backlog atual

Top 10 filas backlog por fila

Top 10 categorias backlog por categoria

Top 10 por tipo coluna Tipo · backlog atual

Top 10 analistas backlog atual por analista

Incidentes × Requisições volume mensal de abertura (últimos 12 meses) Meta de incidentes/mês:

Fila de Chamados Abertos (Backlog Atual)

Distribuição de Aging do Backlog faixas detalhadas

Evolução do Backlog últimos 60 dias

Backlog por Categoria

Backlog por Localidade do Solicitante top 10

Backlog por Prioridade

Evolução do Cumprimento de SLA % dentro do SLA por mês — chamados fechados

Tempo Médio de Solução por Prioridade horas · chamados fechados no período

Pareto de Causas % acumulado — chamados fechados no período

Desempenho por Grupo Solucionador chamados fechados no período

Resumo Mensal histórico completo disponível na planilha

Exportar Dados Filtrados

Gera um CSV com os chamados atualmente filtrados nesta tela, pronto para anexar em e-mails ou relatórios executivos.

🔌 Conexão via Arquivo (.xlsx)

O dashboard suporta duas formas de conexão: arquivo .xlsx local (explicada abaixo) ou Banco de Dados via API/SQL (seção seguinte). Escolha a que fizer mais sentido para o seu processo — só uma fica ativa por vez.

Nesta forma, o dashboard lê diretamente o arquivo .xlsx exportado do seu sistema de chamados (aba table). Sempre que você sobrescrever esse mesmo arquivo, o portal detecta e recarrega os dados — automaticamente a cada hora, ou a qualquer momento clicando em "Atualizar agora".

  1. Clique em "Conectar planilha" e selecione o arquivo .xlsx (ex.: report.xlsx).
  2. O navegador vai pedir permissão de leitura — aceite (só é solicitado uma vez por sessão).
  3. De hora em hora, substitua o conteúdo desse mesmo arquivo (mesmo nome/local) pela nova extração.
  4. O painel relê o arquivo automaticamente a cada 60 minutos. Use "Atualizar agora" para forçar uma leitura imediata.
  5. Ao fechar e reabrir o navegador, o dashboard lembra qual arquivo estava conectado — basta clicar no botão "🔓 Reconectar" que aparece no topo (1 clique só, não é preciso escolher o arquivo de novo). Isso acontece porque, por segurança, os navegadores exigem uma nova confirmação de permissão a cada sessão — mas a referência ao arquivo em si já fica salva.

⚠️ Compatibilidade: a reconexão automática ao arquivo (sem reabrir o navegador) funciona em Microsoft Edge e Google Chrome (versões atuais). Em navegadores sem suporte, será necessário reselecionar o arquivo manualmente a cada atualização.

🗂️ Importante — onde abrir este arquivo: se você abrir este .html direto de um link do SharePoint/OneDrive/Teams (visualização dentro do navegador do próprio Office), a conexão automática fica bloqueada por segurança ("sandbox"). Para ativar a atualização automática por hora: baixe este arquivo .html para o seu computador (botão de download/"..." → Baixar) e abra-o localmente com duplo clique. Se preferir não baixar, o dashboard ainda funciona normalmente — só será necessário clicar em "Conectar planilha" e reselecionar o arquivo a cada atualização, em vez de atualizar sozinho.

🗄️ Conexão via Banco de Dados (API / SQL)

Por segurança, navegadores não conseguem se conectar diretamente a um SQL Server, MySQL, PostgreSQL, Oracle, etc. — esse protocolo simplesmente não é acessível a partir de JavaScript no navegador. A forma correta (e é assim que qualquer ferramenta de BI faz) é apontar o dashboard para um endpoint HTTP que devolve JSON, com uma pequena API/serviço no meio fazendo a consulta SQL por trás. Essa API pode ser algo simples publicado pela sua equipe (Node.js, Python, .NET), uma Azure Function, ou até um fluxo de Power Automate com gatilho HTTP — sem precisar programar do zero.

Após conectar, este dashboard passa a atualizar automaticamente a cada hora usando este mesmo endpoint (o botão "Atualizar agora" também usa esta conexão).
📘 Como montar o endpoint (consulta SQL + exemplos de código prontos)

O endpoint deve responder com um array JSON de objetos (ou um objeto contendo esse array em data, value, rows ou results), usando os mesmos nomes de campo da planilha original. O dashboard reconhece os nomes de forma flexível (ignora maiúsculas/minúsculas, acentos e underscores), então pequenas variações não quebram a conexão.

1. Consulta SQL (ajuste o nome da tabela/view para a sua base)
-- SQL Server / Azure SQL — ajuste dbo.Chamados para sua tabela ou view real SELECT Chamado, Categoria, Causa, Data_de_Abertura, Data_de_Fechamento, Data_de_1o_Atendimento, Descricao_Chamado, Estado, Grupo_Analista_Atual, Impacto, Prioridade, Resumo_Chamado, SLA_de_Espera, SLA_de_Solucao, Tipo, Tipo_de_Chamado, Tipo_de_Estado, Urgencia, Localidade_do_Solicitante, Nome_do_Solicitante, Analista_Atual, Tempo_Solucao, Tempo_Espera FROM dbo.Chamados -- Dica (SQL Server): adicionar "FOR JSON PATH" no final já devolve o JSON pronto
2. Opção sem código: Power Automate (fluxo com gatilho HTTP)

Crie um fluxo com o gatilho "Quando uma solicitação HTTP for recebida" → ação "Executar consulta SQL (V2)" (conector SQL Server) com a query acima → ação "Resposta" devolvendo o resultado como JSON. O Power Automate já expõe uma URL HTTPS pronta para colar no campo acima.

3. Opção com código: Node.js + Express (exemplo mínimo)
// npm install express mssql cors const express = require('express'); const sql = require('mssql'); const cors = require('cors'); const app = express(); app.use(cors({ origin: process.env.DASHBOARD_ORIGIN, methods: ['GET'] })); // restrinja ao domínio do dashboard const config = { server: 'SEU_SERVIDOR.database.windows.net', database: 'SEU_BANCO', user: process.env.SQL_USER, // use um usuário só de leitura password: process.env.SQL_PASSWORD, options: { encrypt: true } }; app.get('/api/chamados', async (req, res) => { try { const pool = await sql.connect(config); const result = await pool.request().query(` SELECT Chamado, Categoria, Causa, Data_de_Abertura, Data_de_Fechamento, Data_de_1o_Atendimento, Descricao_Chamado, Estado, Grupo_Analista_Atual, Impacto, Prioridade, Resumo_Chamado, SLA_de_Espera, SLA_de_Solucao, Tipo, Tipo_de_Chamado, Tipo_de_Estado, Urgencia, Localidade_do_Solicitante, Nome_do_Solicitante, Analista_Atual, Tempo_Solucao, Tempo_Espera FROM dbo.Chamados `); res.json(result.recordset); } catch (err) { res.status(500).json({ error: err.message }); } }); app.listen(3000, () => console.log('API rodando na porta 3000'));
4. Opção com código: Python + Flask (exemplo mínimo)
# pip install flask flask-cors pyodbc from flask import Flask, jsonify from flask_cors import CORS import pyodbc import os app = Flask(__name__) CORS(app, resources={r"/api/*": {"origins": ["https://dashboard.suaempresa.com"]}}, methods=["GET"]) @app.route('/api/chamados') def chamados(): conn = pyodbc.connect( 'DRIVER={ODBC Driver 17 for SQL Server};' 'SERVER=SEU_SERVIDOR;DATABASE=SEU_BANCO;' 'UID=' + os.environ['SQL_USER'] + ';PWD=' + os.environ['SQL_PASSWORD'] ) cursor = conn.cursor() cursor.execute("SELECT Chamado, Categoria, Causa, Data_de_Abertura, " "Data_de_Fechamento, Estado, Prioridade, ... FROM dbo.Chamados") cols = [c[0] for c in cursor.description] rows = [dict(zip(cols, r)) for r in cursor.fetchall()] return jsonify(rows) if __name__ == '__main__': app.run(port=5000)
5. Requisitos importantes
  • CORS obrigatório: o endpoint precisa responder com o cabeçalho Access-Control-Allow-Origin liberando este dashboard (nos exemplos acima, isso já vem pronto com cors()/CORS(app)).
  • Usuário de banco só leitura: crie um usuário/login com permissão apenas de SELECT na tabela/view de chamados — nunca reutilize um usuário administrativo.
  • HTTPS: use sempre um endpoint HTTPS, especialmente se enviar algum token de autenticação.
  • Autenticação (opcional, mas recomendado): proteja o endpoint com uma chave simples (ex.: header x-api-key) validada no servidor, e informe esse header/valor nos campos acima.
  • Armazenamento da credencial: o token é mantido apenas na memória da sessão e nunca é gravado no navegador. Após fechar ou recarregar a página, informe-o novamente.

🎯 Meta de Incidentes por Mês

Define a linha de meta exibida no gráfico "Incidentes × Requisições" da aba Operacional. Meses com volume de incidentes acima deste valor destacam a barra em vermelho.

🩺 Diagnóstico de Datas

Sempre que um valor de data (Abertura, Fechamento ou 1º Atendimento) não puder ser reconhecido na leitura mais recente, ele fica listado aqui — isso explica eventuais diferenças entre uma contagem manual (ex.: no Excel/Power Query) e os números deste dashboard, já que um registro sem data reconhecida some da métrica correspondente (ex.: um chamado sem "Data de Fechamento" válida não conta como "Fechado").

Nenhuma planilha carregada ainda.

🧠 Filtros salvos automaticamente

Toda seleção feita nos filtros do topo (período, Tipo, Grupo Solucionador, Categoria, Prioridade, Estado, Sistema, Operador) é salva automaticamente no navegador. Ao reabrir o dashboard — mesmo depois de fechar a aba ou o navegador — os mesmos filtros voltam a ficar marcados, sem precisar refazer a seleção. Use o botão "🧹 Limpar filtros" a qualquer momento para voltar ao padrão (mês atual, sem filtros de checkbox).

📋 Estrutura de colunas esperada

Para que os indicadores continuem corretos, mantenha os mesmos nomes de coluna do arquivo original (ou os mesmos campos no JSON da API) na aba table, entre eles: Chamado, Data_de_Abertura, Data_de_Fechamento, Data_de_1o_Atendimento, Estado, Tipo_de_Estado, Prioridade, Categoria, Causa, Tipo, Tipo_de_Chamado, Grupo_Analista_Atual, Analista_Atual (usado no filtro "Operador"), SLA_de_Solução, SLA_de_Espera, Resumo_Chamado, Descricao_Chamado, Localidade_do_Solicitante.

ℹ️ Definições dos indicadores (ITIL)

Chamados Abertos = chamados cuja Data de Abertura cai dentro do período selecionado, excluindo os chamados com Estado = CANCELADO (independentemente de já terem sido fechados ou não — um chamado cancelado não representa volume de trabalho real de entrada, então não conta como "aberto" mesmo tendo uma data de abertura registrada).
Chamados Fechados = chamados cuja Data de Fechamento cai dentro do período selecionado, excluindo os chamados com Estado = CANCELADO (um chamado cancelado não foi efetivamente atendido/resolvido, então não conta como "fechado" para fins de produtividade — mesmo que tenha uma data de fechamento registrada no sistema). Chamados ENCERRADO e RESOLVIDO continuam contando normalmente como fechados.
Resumo: chamados CANCELADOS são excluídos de todas as métricas de produção das Operações de TI — não contam como Abertos, não contam como Fechados, e não contam como Backlog.
Importante: como usam campos de data diferentes (Abertura vs. Fechamento) e critérios diferentes de inclusão, os números de "Abertos" e "Fechados" no mesmo período são calculados de forma independente e normalmente serão diferentes — isso é esperado e correto, refletindo o fluxo real de entrada e saída de chamados.
Backlog Atual = chamados cujo campo Estado NÃO seja um dos seguintes: ENCERRADO, CANCELADO, RESOLVIDO ou "Aguardando Fornecedor AMS". Essa mesma regra de exclusão vale para todo o histórico de backlog usado nos gráficos de tendência e nas séries mensais.
% Dentro/Fora do SLA = calculado sobre os chamados fechados no período (já excluindo os cancelados, ver acima).
Aging Médio / Críticos-Altos Abertos = calculado sobre o Backlog Atual (já excluindo os 4 estados acima).
SLA — Situação dos Chamados = situação do SLA de Solução dos chamados do backlog atual (Verde=Dentro, Amarelo=Vencendo, Vermelho=Fora, Cinza=Sem SLA).
Filtro "Operador" = filtra pelo campo Analista_Atual (o analista atualmente responsável pelo chamado). Nomes com diferenças de espaçamento (ex.: espaço extra no final) são automaticamente normalizados para evitar que o mesmo operador apareça como entradas duplicadas no filtro.
Incidentes × Requisições (aba Operacional) = volume mensal de chamados abertos (excluindo cancelados), classificados por Tipo_de_Chamado. A linha tracejada representa a meta configurável de incidentes/mês (padrão: 552) — meses acima da meta destacam a barra de Incidentes em vermelho.