feat: enhance vacation approval process by adding notification system for employees, including email alerts and in-app notifications; improve error handling and user feedback during vacation management

This commit is contained in:
2025-12-10 06:27:25 -03:00
parent 73da995109
commit d27c0b6f91
22 changed files with 1572 additions and 215 deletions

View File

@@ -352,8 +352,27 @@ export const criarTemplatesPadrao = mutation({
nome: 'Boas-vindas',
titulo: 'Bem-vindo ao SGSE',
corpo:
'Olá {{nome}},\n\nSeja bem-vindo ao SGSE - Sistema de Gerenciamento de Secretaria!\n\nSuas credenciais de acesso:\nMatrícula: {{matricula}}\nSenha temporária: {{senha}}\n\nPor favor, altere sua senha no primeiro acesso.\n\nEquipe de TI',
variaveis: ['nome', 'matricula', 'senha']
"<html><body style='font-family: Arial, sans-serif; line-height: 1.6; color: #333;'>" +
"<div style='max-width: 600px; margin: 0 auto; padding: 20px;'>" +
"<h2 style='color: #2563EB;'>Bem-vindo ao SGSE</h2>" +
"<p>Olá <strong>{{nome}}</strong>,</p>" +
"<p>Seja bem-vindo ao <strong>SGSE - Sistema de Gerenciamento de Secretaria</strong>!</p>" +
"<p>Seu cadastro foi realizado com sucesso.</p>" +
"<div style='background-color: #F3F4F6; border-left: 4px solid #2563EB; padding: 15px; border-radius: 8px; margin: 20px 0;'>" +
"<p style='margin: 0 0 10px 0;'><strong>Suas credenciais de acesso:</strong></p>" +
"<ul style='margin: 0; padding-left: 20px;'>" +
"<li><strong>E-mail:</strong> {{email}}</li>" +
"{{credenciaisAdicionais}}" +
"<li><strong>Senha temporária:</strong> {{senha}}</li>" +
"</ul>" +
"</div>" +
"<p><strong>⚠️ Importante:</strong> Por favor, altere sua senha no primeiro acesso ao sistema.</p>" +
"<p>Acesse o sistema através do link: <a href='{{urlSistema}}' style='color: #2563EB;'>{{urlSistema}}</a></p>" +
"<p style='margin-top: 30px; color: #6B7280; font-size: 14px;'>Equipe de TI - Secretaria de Esportes</p>" +
"</div></body></html>",
variaveis: ['nome', 'email', 'credenciaisAdicionais', 'senha', 'urlSistema'],
categoria: 'email' as const,
tags: ['boas_vindas', 'cadastro', 'credenciais']
},
{
codigo: 'chat_mensagem',
@@ -545,6 +564,33 @@ export const criarTemplatesPadrao = mutation({
'Recomenda-se verificar o painel de monitoramento do SGSE para detalhes adicionais e, se necessário, ' +
'executar ações corretivas.\n\n' +
'Esta é uma notificação automática do sistema de monitoramento SGSE.',
htmlCorpo:
'<div style="max-width: 600px; margin: 0 auto; padding: 20px;">' +
'<div style="background: linear-gradient(135deg, #FF6B6B 0%, #FF8E53 100%); border-radius: 8px; padding: 20px; margin-bottom: 25px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">' +
'<h2 style="color: #FFFFFF; margin: 0 0 10px 0; font-size: 24px; font-weight: bold;">⚠️ Alerta de Sistema</h2>' +
'<p style="color: #FFFFFF; margin: 0; font-size: 16px; font-weight: 500;">Métrica: <strong>{{metricName}}</strong></p>' +
'</div>' +
'<p style="color: #333333; font-size: 16px; line-height: 1.6; margin: 0 0 20px 0;">Olá <strong>{{destinatarioNome}}</strong>,</p>' +
'<div style="background-color: #FFF3CD; border-left: 4px solid #FFC107; padding: 15px; border-radius: 4px; margin: 20px 0;">' +
'<p style="margin: 0 0 10px 0; color: #856404; font-weight: bold; font-size: 14px;">📊 Detalhes do Alerta:</p>' +
'<ul style="margin: 0; padding-left: 20px; color: #856404; font-size: 14px; line-height: 1.8;">' +
'<li><strong>Métrica:</strong> {{metricName}}</li>' +
'<li><strong>Valor Atual:</strong> <span style="color: #DC3545; font-weight: bold;">{{metricValue}}</span></li>' +
'<li><strong>Limite Configurado:</strong> {{threshold}}</li>' +
'</ul>' +
'</div>' +
'<p style="color: #333333; font-size: 14px; line-height: 1.6; margin: 20px 0;">' +
'Recomenda-se verificar o <strong>painel de monitoramento do SGSE</strong> para detalhes adicionais e, se necessário, executar ações corretivas.' +
'</p>' +
'<div style="background-color: #E7F3FF; border-left: 4px solid #0052A5; padding: 15px; border-radius: 4px; margin: 20px 0;">' +
'<p style="margin: 0; color: #004085; font-size: 14px; line-height: 1.6;">' +
'<strong>💡 Dica:</strong> Acesse o painel de monitoramento para visualizar gráficos e histórico detalhado desta métrica.' +
'</p>' +
'</div>' +
'<p style="color: #666666; font-size: 12px; margin-top: 30px; padding-top: 20px; border-top: 1px solid #E0E0E0;">' +
'Esta é uma notificação automática do sistema de monitoramento SGSE.' +
'</p>' +
'</div>',
variaveis: ['destinatarioNome', 'metricName', 'metricValue', 'threshold'],
categoria: 'email' as const,
tags: ['monitoramento', 'alerta', 'sistema', 'ti']
@@ -702,6 +748,39 @@ export const criarTemplatesPadrao = mutation({
categoria: 'email' as const,
tags: ['ausencia', 'reprovacao', 'gestao']
},
{
codigo: 'ferias_aprovada',
nome: 'Férias Aprovada',
titulo: 'Solicitação de Férias Aprovada',
corpo:
'Olá {{funcionarioNome}},\n\nSua solicitação de férias foi <strong>aprovada</strong> pelo gestor {{gestorNome}}:\n\n<ul><li><strong>Período:</strong> {{dataInicio}} até {{dataFim}}</li><li><strong>Dias:</strong> {{diasFerias}} dias</li></ul>',
variaveis: [
'funcionarioNome',
'gestorNome',
'dataInicio',
'dataFim',
'diasFerias',
'urlSistema'
],
categoria: 'email' as const,
tags: ['ferias', 'aprovacao', 'gestao']
},
{
codigo: 'ferias_cancelada_rh',
nome: 'Férias Cancelada pelo RH',
titulo: 'Solicitação de Férias Cancelada',
corpo:
'Olá {{funcionarioNome}},\n\nSua solicitação de férias foi <strong>cancelada</strong> pelo setor de Recursos Humanos:\n\n<ul><li><strong>Período:</strong> {{dataInicio}} até {{dataFim}}</li><li><strong>Dias:</strong> {{diasFerias}} dias</li></ul>\n\nPara mais informações, entre em contato com o setor de Recursos Humanos.',
variaveis: [
'funcionarioNome',
'dataInicio',
'dataFim',
'diasFerias',
'urlSistema'
],
categoria: 'email' as const,
tags: ['ferias', 'cancelamento', 'recursos_humanos']
},
// ===================== ALERTAS DE SEGURANÇA CIBERNÉTICA =====================
{
codigo: 'incidente_critico',