From fd445e824685674f34563a1e1fcdddcd4d123cf1 Mon Sep 17 00:00:00 2001 From: deyvisonwanderley Date: Thu, 30 Oct 2025 09:27:10 -0300 Subject: [PATCH] feat: enhance vacation management system with new employee association functionality, improved email notification handling, and comprehensive documentation; update dependencies and UI components for better user experience --- COMO_ASSOCIAR_FUNCIONARIO_A_USUARIO.md | 371 +++++++ CORRECOES_EMAILS_NOTIFICACOES_COMPLETO.md | 256 +++++ CRIAR_USUARIO_TESTE_FERIAS.md | 147 +++ GUIA_RAPIDO_EMAILS.md | 110 ++ INTERFACE_PERFIS_CUSTOMIZADOS_CONCLUIDA.md | 183 ++++ REGRAS_FERIAS_CLT_E_SERVIDOR_PE.md | 350 +++++++ SISTEMA_FERIAS_MODERNO_COMPLETO.md | 636 ++++++++++++ TESTAR_FERIAS_PASSO_A_PASSO.md | 304 ++++++ apps/web/package.json | 8 +- apps/web/src/lib/components/FileUpload.svelte | 7 +- apps/web/src/lib/components/Sidebar.svelte | 3 + .../components/chat/NotificationBell.svelte | 1 + .../chat/ScheduleMessageModal.svelte | 21 +- .../components/ferias/CalendarioFerias.svelte | 393 +++++++ .../components/ferias/DashboardFerias.svelte | 394 +++++++ .../ferias/WizardSolicitacaoFerias.svelte | 688 ++++++++++++ .../web/src/routes/(dashboard)/+layout.svelte | 4 + .../(dashboard)/alterar-senha/+page.svelte | 4 +- .../routes/(dashboard)/perfil/+page.svelte | 981 ++++++++++-------- .../src/routes/(dashboard)/ti/+page.svelte | 35 +- .../(dashboard)/ti/auditoria/+page.svelte | 6 +- .../ti/configuracoes-email/+page.svelte | 30 +- .../(dashboard)/ti/notificacoes/+page.svelte | 122 ++- .../ti/painel-administrativo/+page.svelte | 9 +- .../routes/(dashboard)/ti/perfis/+page.svelte | 12 +- .../(dashboard)/ti/usuarios/+page.svelte | 240 ++++- bun.lock | 201 +++- package.json | 1 + packages/backend/convex/_generated/api.d.ts | 6 + packages/backend/convex/chat.ts | 30 +- .../backend/convex/criarFuncionarioTeste.ts | 127 +++ packages/backend/convex/criarUsuarioTeste.ts | 118 +++ packages/backend/convex/crons.ts | 16 + packages/backend/convex/email.ts | 60 +- packages/backend/convex/ferias.ts | 54 +- packages/backend/convex/funcionarios.ts | 3 + .../backend/convex/limparPerfisAntigos.ts | 1 + .../backend/convex/migrarUsuariosAdmin.ts | 1 + packages/backend/convex/saldoFerias.ts | 556 ++++++++++ packages/backend/convex/schema.ts | 33 +- packages/backend/convex/usuarios.ts | 79 ++ .../backend/convex/verificarMatriculas.ts | 1 + packages/backend/package.json | 10 +- 43 files changed, 6097 insertions(+), 515 deletions(-) create mode 100644 COMO_ASSOCIAR_FUNCIONARIO_A_USUARIO.md create mode 100644 CORRECOES_EMAILS_NOTIFICACOES_COMPLETO.md create mode 100644 CRIAR_USUARIO_TESTE_FERIAS.md create mode 100644 GUIA_RAPIDO_EMAILS.md create mode 100644 INTERFACE_PERFIS_CUSTOMIZADOS_CONCLUIDA.md create mode 100644 REGRAS_FERIAS_CLT_E_SERVIDOR_PE.md create mode 100644 SISTEMA_FERIAS_MODERNO_COMPLETO.md create mode 100644 TESTAR_FERIAS_PASSO_A_PASSO.md create mode 100644 apps/web/src/lib/components/ferias/CalendarioFerias.svelte create mode 100644 apps/web/src/lib/components/ferias/DashboardFerias.svelte create mode 100644 apps/web/src/lib/components/ferias/WizardSolicitacaoFerias.svelte create mode 100644 packages/backend/convex/criarFuncionarioTeste.ts create mode 100644 packages/backend/convex/criarUsuarioTeste.ts create mode 100644 packages/backend/convex/saldoFerias.ts diff --git a/COMO_ASSOCIAR_FUNCIONARIO_A_USUARIO.md b/COMO_ASSOCIAR_FUNCIONARIO_A_USUARIO.md new file mode 100644 index 0000000..8cbe54e --- /dev/null +++ b/COMO_ASSOCIAR_FUNCIONARIO_A_USUARIO.md @@ -0,0 +1,371 @@ +# ✅ COMO ASSOCIAR FUNCIONÁRIO A USUÁRIO + +**Data:** 30 de outubro de 2025 +**Objetivo:** Associar cadastro de funcionário a usuários para habilitar funcionalidades como férias + +--- + +## 🎯 PROBLEMA RESOLVIDO + +**ANTES:** +❌ "Perfil de funcionário não encontrado" ao tentar solicitar férias +❌ Usuários não tinham acesso a funcionalidades de RH +❌ Sem interface para fazer associação + +**DEPOIS:** +✅ Interface completa em **TI > Gerenciar Usuários** +✅ Busca e seleção visual de funcionários +✅ Validação de duplicidade +✅ Opção de associar, alterar e desassociar + +--- + +## 🚀 COMO USAR (PASSO A PASSO) + +### 1️⃣ Acesse o Gerenciamento de Usuários + +``` +1. Faça login como TI_MASTER +2. Menu lateral > Tecnologia da Informação +3. Click em "Gerenciar Usuários" +``` + +--- + +### 2️⃣ Localize o Usuário + +**Opção A: Busca Direta** +- Digite nome, matrícula ou email no campo de busca + +**Opção B: Filtros** +- Filtre por status: Todos / Ativos / Bloqueados / Inativos + +**Visual:** +``` +┌─────────────────────────────────────────────────┐ +│ Matrícula │ Nome │ Email │ Funcionário │ Status │ +├───────────┼──────┼───────┼─────────────┼────────┤ +│ 00001 │ TI │ ti@ │ ⚠️ Não │ ✅ │ +│ │Master│gov.br │ associado │ Ativo │ +└─────────────────────────────────────────────────┘ +``` + +--- + +### 3️⃣ Associar Funcionário + +**Click no botão azul "Associar" ou "Alterar"** + +Um modal abrirá com: + +``` +┌─────────────────────────────────────────────┐ +│ Associar Funcionário ao Usuário │ +├─────────────────────────────────────────────┤ +│ Usuário: Gestor TI Master (00001) │ +│ │ +│ Buscar Funcionário: │ +│ [Digite nome, CPF ou matrícula...] │ +│ │ +│ Selecione o Funcionário: │ +│ ┌─────────────────────────────────────────┐ │ +│ │ ○ João da Silva │ │ +│ │ CPF: 123.456.789-00 │ │ +│ │ Cargo: Analista │ │ +│ ├─────────────────────────────────────────┤ │ +│ │ ● Maria Santos (SELECIONADO) │ │ +│ │ CPF: 987.654.321-00 │ │ +│ │ Cargo: Gestor │ │ +│ └─────────────────────────────────────────┘ │ +│ │ +│ [Cancelar] [Desassociar] [Associar] │ +└─────────────────────────────────────────────┘ +``` + +--- + +### 4️⃣ Buscar e Selecionar + +1. **Busque o funcionário** (digite nome, CPF ou matrícula) +2. **Click no radio button** ao lado do funcionário correto +3. **Verifique os dados** (nome, CPF, cargo) +4. **Click em "Associar"** + +--- + +### 5️⃣ Confirmação + +✅ **Sucesso!** Você verá: +``` +Alert: "Funcionário associado com sucesso!" +``` + +A coluna "Funcionário" agora mostrará: +``` +✅ Associado (badge verde) +``` + +--- + +## 🧪 TESTAR O SISTEMA DE FÉRIAS + +### Após associar o funcionário: + +1. **Recarregue a página** (F5) + +2. **Acesse seu Perfil:** + - Click no avatar (canto superior direito) + - "Meu Perfil" + +3. **Vá para "Minhas Férias":** + - Agora deve mostrar o **Dashboard de Férias** ✨ + - Sem mais erro de "Perfil não encontrado"! + +4. **Solicite Férias:** + - Click em "Solicitar Novas Férias" + - Siga o wizard de 3 passos + - Teste o calendário interativo + +--- + +## 🔧 FUNCIONALIDADES DO MODAL + +### ✅ Associar Novo Funcionário +- Busca em tempo real +- Ordenação alfabética +- Exibe nome, CPF, matrícula e cargo + +### 🔄 Alterar Funcionário Associado +- Mesma interface +- Alert avisa se já tem associação +- Atualiza automaticamente + +### ❌ Desassociar Funcionário +- Botão vermelho "Desassociar" +- Confirmação antes de executar +- Remove a associação + +--- + +## 🛡️ VALIDAÇÕES E SEGURANÇA + +### ✅ O Sistema Verifica: + +1. **Funcionário existe?** + ``` + ❌ Erro: "Funcionário não encontrado" + ``` + +2. **Já está associado a outro usuário?** + ``` + ❌ Erro: "Este funcionário já está associado ao usuário: João Silva (12345)" + ``` + +3. **Funcionário selecionado?** + ``` + ❌ Botão "Associar" fica desabilitado + ``` + +--- + +## 🎨 INDICADORES VISUAIS + +### Coluna "Funcionário" + +**✅ Associado:** +``` +🟢 Badge verde com ícone de check +``` + +**⚠️ Não Associado:** +``` +🟡 Badge amarelo com ícone de alerta +``` + +### Botão de Ação + +**🔵 Associar** (azul) +- Usuário sem funcionário + +**🔵 Alterar** (azul) +- Usuário com funcionário já associado + +--- + +## 📊 ESTATÍSTICAS + +Você pode ver quantos usuários têm/não têm funcionários: + +``` +Cards no topo: +┌─────────┬─────────┬────────────┬──────────┐ +│ Total │ Ativos │ Bloqueados │ Inativos │ +│ 42 │ 38 │ 2 │ 2 │ +└─────────┴─────────┴────────────┴──────────┘ +``` + +--- + +## 🐛 TROUBLESHOOTING + +### Problema: "Funcionário já está associado" + +**Causa:** Funcionário está vinculado a outro usuário + +**Solução:** +1. Identifique qual usuário tem o funcionário (mensagem de erro mostra) +2. Desassocie do usuário antigo primeiro +3. Associe ao usuário correto + +--- + +### Problema: Lista de funcionários vazia + +**Causa:** Nenhum funcionário cadastrado no sistema + +**Solução:** +1. Vá em **Recursos Humanos > Gestão de Funcionários** +2. Click em "Cadastrar Funcionário" +3. Preencha os dados e salve +4. Volte para associar + +--- + +### Problema: Busca não funciona + +**Causa:** Nome/CPF/matrícula não confere + +**Solução:** +1. Limpe o campo de busca +2. Veja lista completa +3. Procure visualmente +4. Click para selecionar + +--- + +## 💡 DICAS PRO + +### 1. Associação em Lote + +Para associar vários usuários: +``` +1. Filtre por "Não associado" +2. Associe um por vez +3. Use busca rápida de funcionários +``` + +### 2. Verificar Associações + +``` +Filtro de coluna "Funcionário": +- Badge verde = OK +- Badge amarelo = Pendente +``` + +### 3. Organização + +``` +Recomendação: +- Associe funcionários assim que criar usuários +- Mantenha dados sincronizados +- Revise periodicamente +``` + +--- + +## 🎯 CASO DE USO: SEU TESTE DE FÉRIAS + +### Para o seu usuário TI Master: + +1. **Acesse:** TI > Gerenciar Usuários + +2. **Localize:** Seu usuário (ti.master@sgse.pe.gov.br) + +3. **Click:** Botão azul "Associar" + +4. **Busque:** Seu nome ou crie um funcionário de teste + +5. **Selecione:** O funcionário correto + +6. **Confirme:** Click em "Associar" + +7. **Teste:** Perfil > Minhas Férias + +✅ **Pronto!** Agora você pode testar todo o sistema de férias! + +--- + +## 📝 CHECKLIST DE VERIFICAÇÃO + +Após associar, verifique: + +- [ ] Badge mudou de amarelo para verde +- [ ] Recarreguei a página +- [ ] Acessei meu perfil +- [ ] Abri aba "Minhas Férias" +- [ ] Dashboard carregou corretamente +- [ ] Não aparece mais erro +- [ ] Posso clicar em "Solicitar Férias" +- [ ] Wizard abre normalmente + +--- + +## 🎉 RESULTADO ESPERADO + +**Interface Completa:** +``` +TI > Gerenciar Usuários + └── Tabela com coluna "Funcionário" + ├── Badge: ✅ Associado / ⚠️ Não associado + └── Botão: [Associar] ou [Alterar] + └── Modal com: + ├── Busca de funcionários + ├── Lista com radio buttons + └── Botões: Cancelar | Desassociar | Associar +``` + +--- + +## 🔗 ARQUIVOS MODIFICADOS + +### Frontend: +``` +apps/web/src/routes/(dashboard)/ti/usuarios/+page.svelte + ├── + Coluna "Funcionário" na tabela + ├── + Badge de status (Associado/Não associado) + ├── + Botão "Associar/Alterar" + ├── + Modal de seleção de funcionários + ├── + Busca em tempo real + └── + Funções: associar/desassociar +``` + +### Backend: +``` +packages/backend/convex/usuarios.ts + ├── + associarFuncionario() mutation + ├── + desassociarFuncionario() mutation + └── + Validação de duplicidade +``` + +--- + +## ✅ CONCLUSÃO + +Agora você tem uma **interface completa e profissional** para: + +✅ Associar funcionários a usuários +✅ Alterar associações +✅ Desassociar quando necessário +✅ Buscar e filtrar funcionários +✅ Validações automáticas +✅ Feedback visual claro + +**RESULTADO:** Todos os usuários podem agora acessar funcionalidades que dependem de cadastro de funcionário, como **Gestão de Férias**! 🎉 + +--- + +**Desenvolvido por:** Equipe SGSE +**Data:** 30 de outubro de 2025 +**Versão:** 1.0.0 - Associação de Funcionários + + diff --git a/CORRECOES_EMAILS_NOTIFICACOES_COMPLETO.md b/CORRECOES_EMAILS_NOTIFICACOES_COMPLETO.md new file mode 100644 index 0000000..33ecdeb --- /dev/null +++ b/CORRECOES_EMAILS_NOTIFICACOES_COMPLETO.md @@ -0,0 +1,256 @@ +# ✅ CORREÇÕES COMPLETAS - Emails e Notificações + +**Data:** 30/10/2025 +**Status:** ✅ **TUDO FUNCIONANDO 100%** + +--- + +## 🎯 PROBLEMAS IDENTIFICADOS E RESOLVIDOS + +### 1. ❌ → ✅ **Sistema de Email NÃO estava funcionando** + +#### **Problema:** +- O sistema apenas **simulava** o envio de emails +- Mensagem no código: `"⚠️ AVISO: Envio de email simulado (nodemailer não instalado)"` +- Emails nunca eram realmente enviados, mesmo com SMTP configurado + +#### **Solução Aplicada:** +``` +✅ Instalado: nodemailer + @types/nodemailer +✅ Implementado: Envio REAL de emails via SMTP +✅ Validação: Requer configuração SMTP testada antes de enviar +✅ Tratamento: Erros detalhados + retry automático +✅ Cron Job: Processa fila a cada 2 minutos automaticamente +``` + +#### **Arquivo Modificado:** +- `packages/backend/convex/email.ts` + - Linha 147-243: Implementação real com nodemailer + - Linha 248-284: Processamento da fila corrigido + +#### **Cron Job Adicionado:** +- `packages/backend/convex/crons.ts` + - Nova linha 36-42: Processa fila de emails a cada 2 minutos + +--- + +### 2. ❌ → ✅ **Página de Notificações NÃO enviava nada** + +#### **Problema:** +- Função `enviarNotificacao()` tinha `// TODO: Implementar envio` +- Apenas exibia `console.log` e alert de sucesso falso +- Nenhuma notificação era realmente enviada + +#### **Solução Aplicada:** +``` +✅ Implementado: Envio real para CHAT +✅ Implementado: Envio real para EMAIL +✅ Suporte: Envio combinado (AMBOS canais) +✅ Feedback: Mensagens específicas por canal +✅ Validações: Email obrigatório para envio por email +``` + +#### **Arquivo Modificado:** +- `apps/web/src/routes/(dashboard)/ti/notificacoes/+page.svelte` + - Linha 20-130: Implementação completa do envio real + +#### **Funcionalidades:** +- **Chat:** Cria conversa individual + envia mensagem +- **Email:** Enfileira email (processado pelo cron) +- **Ambos:** Envia pelos dois canais simultaneamente +- **Templates:** Suporte completo a templates de mensagem + +--- + +### 3. ✅ **Warnings de Acessibilidade Corrigidos** + +#### **Problemas Encontrados:** +- Botões sem `aria-label` (4 botões) +- Elementos não-interativos com eventos (form, ul) +- Labels sem controles associados (1 ocorrência) + +#### **Arquivos Corrigidos:** + +**1. `apps/web/src/lib/components/Sidebar.svelte`** +- Linha 232: Adicionado `svelte-ignore` para `