Radar Inteligente de Incidentes
- Após conectar o banco do MySQL do Netservice via ODBC no Codex.
- Utilize as Query abaixo para ele consultar os dados necessários e extrairmos as informações via CSV.
Query oficial — ICs abertos / Radar
SELECT
t.TarefaID AS IC,
t.Titulo AS Titulo,
e.NomeEmpresa AS Cliente,
s.NomeSistema AS TimeSistema,
m.NomeModulo AS Produto,
a.NomeAtividade AS Servico,
u.NomeUsuario AS ResponsavelAtual,
COALESCE(st.NomeSituacao, 'Sem status') AS StatusAtual,
t.DataCriacao AS DataAbertura,
DATEDIFF(CURDATE(), t.DataCriacao) AS DiasEmAberto,
lm.UltimaMovimentacao AS UltimaMovimentacao,
DATEDIFF(CURDATE(), COALESCE(lm.UltimaMovimentacao, t.DataCriacao)) AS DiasSemMovimentacao,
CASE
WHEN DATEDIFF(CURDATE(), t.DataCriacao) >= 15 THEN 'Crítico'
WHEN DATEDIFF(CURDATE(), t.DataCriacao) BETWEEN 12 AND 14 THEN 'Atenção'
ELSE 'Controlado'
END AS ClassificacaoRadar,
CASE
WHEN DATEDIFF(CURDATE(), COALESCE(lm.UltimaMovimentacao, t.DataCriacao)) >= 5 THEN 'Sim'
ELSE 'Não'
END AS FlagSemMovimentacao,
CASE
WHEN DATEDIFF(CURDATE(), t.DataCriacao) >= 30 THEN 'Sim'
ELSE 'Não'
END AS FlagMuitoAntigo,
CASE
WHEN st.NomeSituacao IS NULL OR st.NomeSituacao = '' THEN 'Sim'
ELSE 'Não'
END AS FlagStatusAusente,
COALESCE(td.DiasAtendimento, 0) AS DiasAtendimento,
COALESCE(td.DiasAnalise, 0) AS DiasAnalise,
COALESCE(td.DiasInfraestruturaBancoDados, 0) AS DiasInfraestruturaBancoDados,
COALESCE(td.DiasOutrosDepartamentos, 0) AS DiasOutrosDepartamentos
FROM netservice.tarefas t
LEFT JOIN netservice.empresas e
ON e.EmpresaID = t.EmpresaID
LEFT JOIN netservice.modulos m
ON m.ModuloID = t.ModuloID
LEFT JOIN netservice.sistemas s
ON s.SistemaID = m.SistemaID
LEFT JOIN netservice.atividades a
ON a.AtividadeID = t.AtividadeID
LEFT JOIN netservice.usuarios u
ON u.UsuarioID = t.ResponsavelID
LEFT JOIN netservice.situacoestarefas st
ON st.SituacaoTarefaID = t.SituacaoTarefaID
LEFT JOIN (
SELECT
TarefaID,
MAX(DataAtribuicao) AS UltimaMovimentacao
FROM netservice.andamentostarefas
GROUP BY TarefaID
) lm
ON lm.TarefaID = t.TarefaID
LEFT JOIN (
SELECT
mov.TarefaID,
SUM(
CASE
WHEN dep.NomeDepartamento = 'Atendimento'
OR dep.DepartamentoID = 3
THEN mov.DiasNoDepartamento
ELSE 0
END
) AS DiasAtendimento,
SUM(
CASE
WHEN dep.DepartamentoID = 1
THEN mov.DiasNoDepartamento
ELSE 0
END
) AS DiasAnalise,
SUM(
CASE
WHEN dep.DepartamentoID = 6
THEN mov.DiasNoDepartamento
ELSE 0
END
) AS DiasInfraestruturaBancoDados,
SUM(
CASE
WHEN dep.NomeDepartamento IS NULL
OR (
dep.NomeDepartamento <> 'Atendimento'
AND dep.DepartamentoID NOT IN (1, 3, 6)
)
THEN mov.DiasNoDepartamento
ELSE 0
END
) AS DiasOutrosDepartamentos
FROM (
SELECT
atf.AndamentoTarefaID,
atf.TarefaID,
atf.DestinoID,
DATEDIFF(
COALESCE((
SELECT MIN(atf2.DataAtribuicao)
FROM netservice.andamentostarefas atf2
WHERE atf2.TarefaID = atf.TarefaID
AND (
atf2.DataAtribuicao > atf.DataAtribuicao
OR (
atf2.DataAtribuicao = atf.DataAtribuicao
AND atf2.AndamentoTarefaID > atf.AndamentoTarefaID
)
)
), NOW()),
atf.DataAtribuicao
) AS DiasNoDepartamento
FROM netservice.andamentostarefas atf
INNER JOIN netservice.tarefas tf
ON tf.TarefaID = atf.TarefaID
AND tf.Tipo = 4
AND tf.DataEncerramento IS NULL
) mov
LEFT JOIN netservice.usuarios ud
ON ud.UsuarioID = mov.DestinoID
LEFT JOIN netservice.departamentos dep
ON dep.DepartamentoID = ud.DepartamentoID
GROUP BY mov.TarefaID
) td
ON td.TarefaID = t.TarefaID
WHERE
t.Tipo = 4
AND t.DataEncerramento IS NULL
ORDER BY
DiasEmAberto DESC,
DiasSemMovimentacao DESC
Query — ICs fechados / Evolução por Período
SELECT
t.TarefaID AS IC,
t.Titulo AS Titulo,
e.NomeEmpresa AS Cliente,
s.NomeSistema AS TimeSistema,
m.NomeModulo AS Produto,
a.NomeAtividade AS Servico,
u.NomeUsuario AS ResponsavelAtual,
COALESCE(st.NomeSituacao, 'Sem status') AS StatusAtual,
t.DataCriacao AS DataAbertura,
t.DataEncerramento AS DataEncerramento,
DATEDIFF(t.DataEncerramento, t.DataCriacao) AS DiasParaEncerrar,
CASE
WHEN DATEDIFF(t.DataEncerramento, t.DataCriacao) <= 15 THEN 'Dentro do prazo'
ELSE 'Fora do prazo'
END AS ClassificacaoEncerramento
FROM netservice.tarefas t
LEFT JOIN netservice.empresas e ON e.EmpresaID = t.EmpresaID
LEFT JOIN netservice.modulos m ON m.ModuloID = t.ModuloID
LEFT JOIN netservice.sistemas s ON s.SistemaID = m.SistemaID
LEFT JOIN netservice.atividades a ON a.AtividadeID = t.AtividadeID
LEFT JOIN netservice.usuarios u ON u.UsuarioID = t.ResponsavelID
LEFT JOIN netservice.situacoestarefas st ON st.SituacaoTarefaID = t.SituacaoTarefaID
WHERE
t.Tipo = 4
AND t.DataEncerramento IS NOT NULL
AND t.DataEncerramento BETWEEN '2026-04-01' AND '2026-04-30'
ORDER BY
t.DataEncerramento DESC;
Query — Recorrência de Incidentes
SELECT
s.NomeSistema AS TimeSistema,
m.NomeModulo AS Produto,
a.NomeAtividade AS Servico,
e.NomeEmpresa AS Cliente,
COUNT(*) AS TotalIncidentes,
MIN(t.DataCriacao) AS PrimeiroRegistro,
MAX(t.DataCriacao) AS UltimoRegistro,
SUM(CASE
WHEN t.DataEncerramento IS NULL THEN 1
ELSE 0
END) AS IncidentesAbertos,
SUM(CASE
WHEN t.DataEncerramento IS NOT NULL THEN 1
ELSE 0
END) AS IncidentesFechados
FROM netservice.tarefas t
LEFT JOIN netservice.empresas e ON e.EmpresaID = t.EmpresaID
LEFT JOIN netservice.modulos m ON m.ModuloID = t.ModuloID
LEFT JOIN netservice.sistemas s ON s.SistemaID = m.SistemaID
LEFT JOIN netservice.atividades a ON a.AtividadeID = t.AtividadeID
WHERE
t.Tipo = 4
AND t.DataCriacao >= DATE_SUB(CURDATE(), INTERVAL 90 DAY)
GROUP BY
s.NomeSistema,
m.NomeModulo,
a.NomeAtividade,
e.NomeEmpresa
HAVING COUNT(*) >= 3
ORDER BY
TotalIncidentes DESC;