# Radar Inteligentes

# Radar Inteligente de Incidentes

---

### 🎯 Objetivo

Garantir **visibilidade, antecipação de riscos e direcionamento de ação** sobre incidentes, de forma simples, contínua e baseada em dados.

👉 O Radar permite identificar rapidamente:

- Incidentes críticos
- Gargalos operacionais
- Falta de atuação
- Problemas recorrentes (ITIL)
- Necessidade de priorização

---

### 🧠 O que é o Radar Inteligente

O **Radar Inteligente de Incidentes** é um modelo estruturado de acompanhamento que utiliza:

- Base unificada de incidentes (NetService)
- Análise automatizada (GPT)
- Dashboard executivo
- Direcionamento semanal

👉 Não é apenas um relatório — é um **mecanismo de gestão operacional e tomada de decisão**.

---

### ⚙️ Como funciona

```markdown
1. Extração da base unificada de incidentes
2. Validação automática dos dados (Modo Auditor)
3. Análise inteligente (GPT)
4. Geração do Radar (visão executiva)
5. Direcionamento para atuação dos times

```

---

### 📊 Fonte de Dados

A base do Radar é:

```markdown
📡 Radar Inteligente — Base Unificada de Incidentes

```

Essa base contém:

- ICs abertos e fechados
- Datas (abertura, encerramento, movimentação)
- Classificação automática (Crítico, Atenção, Controlado)
- Tempo por departamento
- Status atual
- Título e descrição (para análise de problema ITIL)

👉 **Princípio fundamental:**CSV gerado a partir dessa base é a única fonte de verdade.

---

### 🛡️ Validação de Dados (Modo Auditor)

Antes de qualquer análise, os dados passam por validação automática:

- Conferência de totais
- Consistência de datas
- Verificação de campos obrigatórios
- Identificação de inconsistências

#### Classificação da Qualidade

```markdown
🟢 Aprovado → Pode ser apresentado
🟡 Aprovado com ressalvas → Atenção
🔴 Reprovado → NÃO deve ser utilizado

```

👉 Se reprovado, o Radar não deve ser gerado.

---

### 📡 Estrutura do Radar

O Radar é composto por:

#### 1. Resumo Executivo

Visão clara do cenário atual (máx. 5 linhas)

---

#### 2. Situação Atual

- Total de ICs
- ICs críticos
- ICs em atenção
- ICs sem movimentação
- ICs muito antigos

---

#### 3. Análise por Time

- Concentração de incidentes
- Times com maior risco
- Pontos de atenção

---

#### 4. Gargalos por Departamento

- Atendimento
- Análise
- Infraestrutura e Banco de Dados
- Outros

👉 Identificação de onde o tempo está sendo consumido

---

#### 5. Evolução

- Volume resolvido
- Tempo médio
- Tendência (melhora ou piora)

---

#### 6. Recorrência e Padrões

- Identificação de repetição de incidentes
- Agrupamento inicial por similaridade

---

#### 7. Problema ITIL (CRÍTICO)

Validação real de problemas com base em:

- Título
- **Descrição do incidente (obrigatório)**

👉 Regra:

```markdown
Título parecido NÃO define problema

A descrição deve confirmar:
✔ mesmo erro
✔ mesmo comportamento
✔ mesma falha

```

Classificação:

- ✔ Mesmo problema provável
- ⚠️ Semelhança parcial
- ❌ Incidentes diferentes

👉 Apenas problemas confirmados devem ser considerados

---

#### 8. Direcionamento da Semana

Ações práticas para atuação:

- Priorizar ICs críticos
- Atuar ICs sem movimentação
- Reduzir gargalos
- Avaliar abertura de Problema ITIL

---

### 🎨 Dashboard

O Radar gera um dashboard executivo contendo:

- KPIs principais
- ICs por Time
- Classificação
- Gargalos
- Ranking

👉 Regras:

- Baseado 100% nos dados validados
- Sem ajustes manuais
- Sem estimativas

---

### 📈 Histórico

O Radar mantém evolução ao longo do tempo:

```markdown
Data | ICs Abertos | Críticos | Atenção | Sem Movimentação | Muito Antigos | Tempo Atendimento | Tempo Análise | Tempo Infra | Resolvidos | Tempo Médio

```

👉 Utilizado para:

- Acompanhar evolução
- Medir eficiência
- Apresentação para diretoria

---

### 👥 Papéis e Responsabilidades

#### Scrum Master

- Gerar o Radar
- Garantir visibilidade
- Identificar riscos
- Direcionar ações

---

#### Product Owner / Supervisor

- Priorizar ICs
- Atuar sobre os incidentes
- Garantir resposta e andamento

---

#### Times

- Executar correções
- Resolver incidentes
- Apoiar análise

---

### ⚠️ Regras do Processo

```markdown
✔ Não é relatório → é direcionamento
✔ Não é cobrança → é gestão de risco
✔ Não é volume → é ação baseada em dados
✔ Não é opinião → é evidência

```

---

### ⏱️ Frequência

- Semanal (obrigatório)
- Pontual (quando necessário)

---

### 🧠 Princípio

```markdown
Dados → Validação → Análise → Insight → Ação

```

---

### 🚀 Resultado Esperado

Após algumas semanas de uso:

- Redução de ICs críticos
- Redução de ICs sem movimentação
- Maior atuação dos times
- Identificação de problemas estruturais
- Melhor tomada de decisão

---

### 💥 Conclusão

O Radar Inteligente de Incidentes transforma dados operacionais em:

```markdown
✔ Visão clara
✔ Decisão rápida
✔ Ação direcionada
✔ Gestão estruturada

```

👉 Tornando-se um **instrumento essencial de gestão da operação**.

---

- Após conectar o banco do MySQL do Netservice via ODBC no Codex.
- Utilize a Query abaixo para ele consultar os dados necessários e extrairmos as informações via CSV.
- Continua o processo através do GPT Radar Inteligente de Incidentes

### Query - Base Unificada de Incidentes

```SQL
SELECT
    t.TarefaID AS IC,
    t.Titulo AS Titulo,
    t.Descricao AS DescricaoIncidente,

    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,

    CASE
        WHEN t.DataEncerramento IS NULL THEN 'Aberto'
        ELSE 'Fechado'
    END AS SituacaoIC,

    DATEDIFF(
        COALESCE(t.DataEncerramento, CURDATE()),
        t.DataCriacao
    ) AS DiasDesdeAbertura,

    CASE
        WHEN t.DataEncerramento IS NOT NULL THEN
            DATEDIFF(t.DataEncerramento, t.DataCriacao)
        ELSE NULL
    END AS DiasParaEncerrar,

    lm.UltimaMovimentacao AS UltimaMovimentacao,

    DATEDIFF(
        COALESCE(t.DataEncerramento, CURDATE()),
        COALESCE(lm.UltimaMovimentacao, t.DataCriacao)
    ) AS DiasSemMovimentacao,

    CASE
        WHEN t.DataEncerramento IS NULL
             AND DATEDIFF(CURDATE(), t.DataCriacao) >= 15 THEN 'Crítico'

        WHEN t.DataEncerramento IS NULL
             AND DATEDIFF(CURDATE(), t.DataCriacao) BETWEEN 12 AND 14 THEN 'Atenção'

        WHEN t.DataEncerramento IS NULL THEN 'Controlado'

        ELSE 'Encerrado'
    END AS ClassificacaoRadar,

    CASE
        WHEN t.DataEncerramento IS NULL
             AND DATEDIFF(
                 CURDATE(),
                 COALESCE(lm.UltimaMovimentacao, t.DataCriacao)
             ) >= 5 THEN 'Sim'
        ELSE 'Não'
    END AS FlagSemMovimentacao,

    CASE
        WHEN t.DataEncerramento IS NULL
             AND 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.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.DepartamentoID NOT IN (1, 3, 6)
              OR dep.DepartamentoID IS NULL
            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
                          )
                      )
                ), COALESCE(tf.DataEncerramento, NOW())),
                atf.DataAtribuicao
            ) AS DiasNoDepartamento

        FROM netservice.andamentostarefas atf

        INNER JOIN netservice.tarefas tf
            ON tf.TarefaID = atf.TarefaID
           AND tf.Tipo = 4
    ) 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

ORDER BY
    SituacaoIC ASC,
    DiasDesdeAbertura DESC,
    DiasSemMovimentacao DESC;

OBSERVAÇÃO: GERAR AQUIVO COM NOME: Base Unificada de Incidentes


```