Skip to main content

Alertas de SLA

Visão Geral

O módulo de alertas de SLA (Service Level Agreement) monitora proativamente os prazos das análises no fluxo de aprovação por alçada. Este sistema permite identificar análises que estão próximas de vencer ou já venceram seus prazos, enviando notificações automáticas para os responsáveis e gestores, garantindo o cumprimento dos prazos estabelecidos.

Endpoints

1. Verificar SLAs Próximos de Vencer

Verifica e dispara alertas para análises com SLAs próximos de vencer.

POST /api/alertas-sla/verificar-proximos

Parâmetros de Consulta

ParâmetroTipoObrigatórioDescrição
diasintegerNãoDias de antecedência para alerta (padrão: valor configurado no sistema)
horasintegerNãoHoras de antecedência para alerta (padrão: valor configurado no sistema)
tipo_analise_iduuidNãoFiltrar por tipo de análise
nivel_alcada_iduuidNãoFiltrar por nível de alçada

Exemplo de Requisição (cURL)

curl -X POST \
'http://localhost:3000/api/alertas-sla/verificar-proximos?dias=2&horas=4' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (JavaScript - Fetch API)

const token = localStorage.getItem('token');

const requestOptions = {
method: 'POST',
headers: { 'x-api-key': token }
};

fetch('http://localhost:3000/api/alertas-sla/verificar-proximos?dias=2&horas=4', requestOptions)
.then(response => response.json())
.then(data => console.log('Verificação de SLAs próximos:', data))
.catch(error => console.error('Erro ao verificar SLAs próximos:', error));

Exemplo de Requisição (Node.js - Axios)

const axios = require('axios');
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';

axios.post('http://localhost:3000/api/alertas-sla/verificar-proximos', null, {
params: {
dias: 2,
horas: 4
},
headers: {
'x-api-key': token
}
})
.then(response => {
console.log('Verificação de SLAs próximos:', response.data);
})
.catch(error => console.error('Erro ao verificar SLAs próximos:', error));

Resposta de Sucesso (200 OK)

{
"timestamp": "2025-06-03T15:30:00Z",
"parametros": {
"dias": 2,
"horas": 4
},
"analises_verificadas": 45,
"alertas_disparados": 7,
"detalhes": [
{
"analise_id": "550e8400-e29b-41d4-a716-446655440000",
"codigo": "ANL-2025-0001",
"prazo_sla": "2025-06-05T14:30:00Z",
"tempo_restante": {
"dias": 1,
"horas": 23,
"minutos": 0
},
"nivel_atual": {
"id": "550e8400-e29b-41d4-a716-446655440002",
"nome": "Analista",
"ordem": 1
},
"responsavel": {
"id": "550e8400-e29b-41d4-a716-446655440003",
"nome": "João Silva",
"email": "[email protected]"
},
"notificacao_enviada": true,
"canais_notificacao": ["email", "sistema"]
},
{
"analise_id": "550e8400-e29b-41d4-a716-446655440001",
"codigo": "ANL-2025-0002",
"prazo_sla": "2025-06-05T18:45:00Z",
"tempo_restante": {
"dias": 2,
"horas": 3,
"minutos": 15
},
"nivel_atual": {
"id": "550e8400-e29b-41d4-a716-446655440030",
"nome": "Gestor",
"ordem": 2
},
"responsavel": {
"id": "550e8400-e29b-41d4-a716-446655440004",
"nome": "Maria Oliveira",
"email": "[email protected]"
},
"notificacao_enviada": true,
"canais_notificacao": ["email", "sistema", "push"]
}
]
}

2. Verificar SLAs Vencidos

Verifica e dispara alertas para análises com SLAs vencidos.

POST /api/alertas-sla/verificar-vencidos

Parâmetros de Consulta

ParâmetroTipoObrigatórioDescrição
notificar_gestorbooleanNãoSe deve notificar o gestor (padrão: valor configurado no sistema)
tipo_analise_iduuidNãoFiltrar por tipo de análise
nivel_alcada_iduuidNãoFiltrar por nível de alçada

Exemplo de Requisição (cURL)

curl -X POST \
'http://localhost:3000/api/alertas-sla/verificar-vencidos?notificar_gestor=true' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (JavaScript - Fetch API)

const token = localStorage.getItem('token');

const requestOptions = {
method: 'POST',
headers: { 'x-api-key': token }
};

fetch('http://localhost:3000/api/alertas-sla/verificar-vencidos?notificar_gestor=true', requestOptions)
.then(response => response.json())
.then(data => console.log('Verificação de SLAs vencidos:', data))
.catch(error => console.error('Erro ao verificar SLAs vencidos:', error));

Resposta de Sucesso (200 OK)

{
"timestamp": "2025-06-03T15:30:00Z",
"parametros": {
"notificar_gestor": true
},
"analises_verificadas": 45,
"alertas_disparados": 3,
"detalhes": [
{
"analise_id": "550e8400-e29b-41d4-a716-446655440002",
"codigo": "ANL-2025-0003",
"prazo_sla": "2025-06-02T14:30:00Z",
"tempo_atraso": {
"dias": 1,
"horas": 1,
"minutos": 0
},
"nivel_atual": {
"id": "550e8400-e29b-41d4-a716-446655440002",
"nome": "Analista",
"ordem": 1
},
"responsavel": {
"id": "550e8400-e29b-41d4-a716-446655440005",
"nome": "Carlos Santos",
"email": "[email protected]"
},
"gestor": {
"id": "550e8400-e29b-41d4-a716-446655440006",
"nome": "Ana Pereira",
"email": "[email protected]"
},
"notificacao_enviada": {
"responsavel": true,
"gestor": true
},
"canais_notificacao": ["email", "sistema", "push"]
}
]
}

3. Verificação Completa de SLAs

Executa verificação completa de SLAs (próximos de vencer e vencidos).

POST /api/alertas-sla/verificacao-completa

Parâmetros de Consulta

ParâmetroTipoObrigatórioDescrição
diasintegerNãoDias de antecedência para alerta (padrão: valor configurado no sistema)
horasintegerNãoHoras de antecedência para alerta (padrão: valor configurado no sistema)
notificar_gestorbooleanNãoSe deve notificar o gestor para SLAs vencidos (padrão: valor configurado no sistema)

Exemplo de Requisição (cURL)

curl -X POST \
'http://localhost:3000/api/alertas-sla/verificacao-completa' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (Node.js - Axios)

const axios = require('axios');
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';

axios.post('http://localhost:3000/api/alertas-sla/verificacao-completa', null, {
headers: {
'x-api-key': token
}
})
.then(response => {
console.log('Verificação completa de SLAs:', response.data);
})
.catch(error => console.error('Erro ao verificar SLAs:', error));

Resposta de Sucesso (200 OK)

{
"timestamp": "2025-06-03T15:30:00Z",
"configuracao_utilizada": {
"dias": 2,
"horas": 4,
"notificar_gestor": true
},
"analises_verificadas": 45,
"resultados": {
"proximos_vencimento": {
"alertas_disparados": 7,
"analises_afetadas": 7
},
"vencidos": {
"alertas_disparados": 3,
"analises_afetadas": 3
}
},
"resumo": {
"total_alertas_disparados": 10,
"total_analises_afetadas": 10,
"percentual_analises_afetadas": 22.22
}
}

4. Buscar Configuração de Alertas do Usuário

Retorna a configuração de alertas de SLA para um usuário específico.

GET /api/alertas-sla/usuarios/{id}/configuracao

Parâmetros de URL

ParâmetroTipoObrigatórioDescrição
iduuidSimID do usuário

Exemplo de Requisição (cURL)

curl -X GET \
'http://localhost:3000/api/alertas-sla/usuarios/550e8400-e29b-41d4-a716-446655440003/configuracao' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (JavaScript - Fetch API)

const token = localStorage.getItem('token');
const userId = '550e8400-e29b-41d4-a716-446655440003';

fetch(`http://localhost:3000/api/alertas-sla/usuarios/${userId}/configuracao`, {
method: 'GET',
headers: {
'x-api-key': token
}
})
.then(response => response.json())
.then(data => console.log('Configuração de alertas:', data))
.catch(error => console.error('Erro ao buscar configuração de alertas:', error));

Resposta de Sucesso (200 OK)

{
"usuario_id": "550e8400-e29b-41d4-a716-446655440003",
"alertas_habilitados": true,
"dias_antecedencia": 2,
"horas_antecedencia": 4,
"canais_notificacao": {
"email": true,
"sistema": true,
"push": true,
"sms": false
},
"notificar_vencidos": true,
"frequencia_lembretes": "diaria",
"horario_preferencial": "09:00",
"ultima_atualizacao": "2025-05-15T10:30:00Z"
}

5. Atualizar Configuração de Alertas do Usuário

Atualiza a configuração de alertas de SLA para um usuário específico.

PUT /api/alertas-sla/usuarios/{id}/configuracao

Parâmetros de URL

ParâmetroTipoObrigatórioDescrição
iduuidSimID do usuário

Corpo da Requisição

{
"alertas_habilitados": true,
"dias_antecedencia": 3,
"horas_antecedencia": 0,
"canais_notificacao": {
"email": true,
"sistema": true,
"push": true,
"sms": false
},
"notificar_vencidos": true,
"frequencia_lembretes": "diaria",
"horario_preferencial": "09:00"
}

Exemplo de Requisição (cURL)

curl -X PUT \
'http://localhost:3000/api/alertas-sla/usuarios/550e8400-e29b-41d4-a716-446655440003/configuracao' \
-H 'Content-Type: application/json' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
"alertas_habilitados": true,
"dias_antecedencia": 3,
"horas_antecedencia": 0,
"canais_notificacao": {
"email": true,
"sistema": true,
"push": true,
"sms": false
},
"notificar_vencidos": true,
"frequencia_lembretes": "diaria",
"horario_preferencial": "09:00"
}'

Exemplo de Requisição (Node.js - Axios)

const axios = require('axios');
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';
const userId = '550e8400-e29b-41d4-a716-446655440003';

const configuracao = {
alertas_habilitados: true,
dias_antecedencia: 3,
horas_antecedencia: 0,
canais_notificacao: {
email: true,
sistema: true,
push: true,
sms: false
},
notificar_vencidos: true,
frequencia_lembretes: "diaria",
horario_preferencial: "09:00"
};

axios.put(`http://localhost:3000/api/alertas-sla/usuarios/${userId}/configuracao`, configuracao, {
headers: {
'Content-Type': 'application/json',
'x-api-key': token
}
})
.then(response => {
console.log('Configuração atualizada:', response.data);
})
.catch(error => console.error('Erro ao atualizar configuração:', error));

Resposta de Sucesso (200 OK)

{
"usuario_id": "550e8400-e29b-41d4-a716-446655440003",
"alertas_habilitados": true,
"dias_antecedencia": 3,
"horas_antecedencia": 0,
"canais_notificacao": {
"email": true,
"sistema": true,
"push": true,
"sms": false
},
"notificar_vencidos": true,
"frequencia_lembretes": "diaria",
"horario_preferencial": "09:00",
"ultima_atualizacao": "2025-06-03T15:45:00Z",
"mensagem": "Configuração de alertas atualizada com sucesso"
}

6. Buscar Configuração Global de Alertas

Retorna a configuração global de alertas de SLA do sistema.

GET /api/alertas-sla/configuracao-global

Exemplo de Requisição (cURL)

curl -X GET \
'http://localhost:3000/api/alertas-sla/configuracao-global' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'

Exemplo de Requisição (JavaScript - Fetch API)

const token = localStorage.getItem('token');

fetch('http://localhost:3000/api/alertas-sla/configuracao-global', {
method: 'GET',
headers: {
'x-api-key': token
}
})
.then(response => response.json())
.then(data => console.log('Configuração global de alertas:', data))
.catch(error => console.error('Erro ao buscar configuração global de alertas:', error));

Resposta de Sucesso (200 OK)

{
"dias_antecedencia_padrao": 2,
"horas_antecedencia_padrao": 4,
"notificar_gestor_padrao": true,
"canais_notificacao_padrao": {
"email": true,
"sistema": true,
"push": false,
"sms": false
},
"frequencia_verificacao": "0 */1 * * *",
"horario_verificacao_diaria": "08:00",
"ultima_verificacao": "2025-06-03T08:00:00Z",
"proxima_verificacao": "2025-06-04T08:00:00Z"
}

7. Atualizar Configuração Global de Alertas

Atualiza a configuração global de alertas de SLA do sistema (requer permissão de administrador).

PUT /api/alertas-sla/configuracao-global

Corpo da Requisição

{
"dias_antecedencia_padrao": 2,
"horas_antecedencia_padrao": 4,
"notificar_gestor_padrao": true,
"canais_notificacao_padrao": {
"email": true,
"sistema": true,
"push": true,
"sms": false
},
"frequencia_verificacao": "0 */1 * * *",
"horario_verificacao_diaria": "08:00"
}

Exemplo de Requisição (cURL)

curl -X PUT \
'http://localhost:3000/api/alertas-sla/configuracao-global' \
-H 'Content-Type: application/json' \
-H 'x-api-key: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
-d '{
"dias_antecedencia_padrao": 2,
"horas_antecedencia_padrao": 4,
"notificar_gestor_padrao": true,
"canais_notificacao_padrao": {
"email": true,
"sistema": true,
"push": true,
"sms": false
},
"frequencia_verificacao": "0 */1 * * *",
"horario_verificacao_diaria": "08:00"
}'

Exemplo de Requisição (Node.js - Axios)

const axios = require('axios');
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';

const configuracaoGlobal = {
dias_antecedencia_padrao: 2,
horas_antecedencia_padrao: 4,
notificar_gestor_padrao: true,
canais_notificacao_padrao: {
email: true,
sistema: true,
push: true,
sms: false
},
frequencia_verificacao: "0 */1 * * *",
horario_verificacao_diaria: "08:00"
};

axios.put('http://localhost:3000/api/alertas-sla/configuracao-global', configuracaoGlobal, {
headers: {
'Content-Type': 'application/json',
'x-api-key': token
}
})
.then(response => {
console.log('Configuração global atualizada:', response.data);
})
.catch(error => console.error('Erro ao atualizar configuração global:', error));

Resposta de Sucesso (200 OK)

{
"dias_antecedencia_padrao": 2,
"horas_antecedencia_padrao": 4,
"notificar_gestor_padrao": true,
"canais_notificacao_padrao": {
"email": true,
"sistema": true,
"push": true,
"sms": false
},
"frequencia_verificacao": "0 */1 * * *",
"horario_verificacao_diaria": "08:00",
"ultima_atualizacao": "2025-06-03T16:00:00Z",
"mensagem": "Configuração global de alertas atualizada com sucesso"
}

Automação de Verificação de SLAs

Para automatizar a verificação de SLAs, você pode configurar um agendador de tarefas (como o node-cron) para chamar o endpoint /api/alertas-sla/verificacao-completa periodicamente.

Exemplo de Configuração com Node.js e node-cron

const cron = require('node-cron');
const axios = require('axios');
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...';

// Executar verificação de SLA a cada hora
cron.schedule('0 * * * *', async () => {
try {
console.log('Executando verificação de SLAs:', new Date());

const response = await axios.post('http://localhost:3000/api/alertas-sla/verificacao-completa', null, {
headers: {
'x-api-key': token
}
});

console.log('Verificação concluída:', response.data);
} catch (error) {
console.error('Erro na verificação de SLAs:', error);
}
});

Melhores Práticas

  1. Configuração Personalizada: Permita que os usuários personalizem suas configurações de alerta de acordo com suas preferências.
  2. Múltiplos Canais: Utilize múltiplos canais de notificação para garantir que os alertas sejam recebidos.
  3. Escalação Adequada: Configure a escalação para gestores apenas quando necessário, evitando sobrecarga de notificações.
  4. Verificação Regular: Agende verificações regulares de SLA, com frequência adequada ao volume de análises.
  5. Monitoramento de Eficácia: Monitore a eficácia dos alertas através de métricas de cumprimento de SLA.

Próximos Passos

Agora que você entende como utilizar o sistema de alertas de SLA, pode explorar: