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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| dias | integer | Não | Dias de antecedência para alerta (padrão: valor configurado no sistema) |
| horas | integer | Não | Horas de antecedência para alerta (padrão: valor configurado no sistema) |
| tipo_analise_id | uuid | Não | Filtrar por tipo de análise |
| nivel_alcada_id | uuid | Não | Filtrar 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| notificar_gestor | boolean | Não | Se deve notificar o gestor (padrão: valor configurado no sistema) |
| tipo_analise_id | uuid | Não | Filtrar por tipo de análise |
| nivel_alcada_id | uuid | Não | Filtrar 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| dias | integer | Não | Dias de antecedência para alerta (padrão: valor configurado no sistema) |
| horas | integer | Não | Horas de antecedência para alerta (padrão: valor configurado no sistema) |
| notificar_gestor | boolean | Não | Se 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | uuid | Sim | ID 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| id | uuid | Sim | ID 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
- Configuração Personalizada: Permita que os usuários personalizem suas configurações de alerta de acordo com suas preferências.
- Múltiplos Canais: Utilize múltiplos canais de notificação para garantir que os alertas sejam recebidos.
- Escalação Adequada: Configure a escalação para gestores apenas quando necessário, evitando sobrecarga de notificações.
- Verificação Regular: Agende verificações regulares de SLA, com frequência adequada ao volume de análises.
- 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:
- Notificações - Para configurar os canais de notificação
- Métricas de SLA - Para monitorar o cumprimento de SLAs
- Métricas Preditivas - Para prever potenciais problemas de SLA