feat: enhance email monitoring and management features
- Added a new section for monitoring email status, allowing users to track the email queue and identify sending issues. - Updated the backend to support new internal queries for listing pending emails and retrieving email configurations. - Refactored email-related mutations to improve error handling and streamline the email sending process. - Enhanced the overall email management experience by providing clearer feedback and monitoring capabilities.
This commit is contained in:
10
packages/backend/convex/_generated/api.d.ts
vendored
10
packages/backend/convex/_generated/api.d.ts
vendored
@@ -9,7 +9,10 @@
|
||||
*/
|
||||
|
||||
import type * as actions_email from "../actions/email.js";
|
||||
import type * as actions_linkPreview from "../actions/linkPreview.js";
|
||||
import type * as actions_pushNotifications from "../actions/pushNotifications.js";
|
||||
import type * as actions_smtp from "../actions/smtp.js";
|
||||
import type * as actions_utils_nodeCrypto from "../actions/utils/nodeCrypto.js";
|
||||
import type * as atestadosLicencas from "../atestadosLicencas.js";
|
||||
import type * as ausencias from "../ausencias.js";
|
||||
import type * as autenticacao from "../autenticacao.js";
|
||||
@@ -31,6 +34,8 @@ import type * as logsAtividades from "../logsAtividades.js";
|
||||
import type * as logsLogin from "../logsLogin.js";
|
||||
import type * as monitoramento from "../monitoramento.js";
|
||||
import type * as permissoesAcoes from "../permissoesAcoes.js";
|
||||
import type * as preferenciasNotificacao from "../preferenciasNotificacao.js";
|
||||
import type * as pushNotifications from "../pushNotifications.js";
|
||||
import type * as roles from "../roles.js";
|
||||
import type * as saldoFerias from "../saldoFerias.js";
|
||||
import type * as seed from "../seed.js";
|
||||
@@ -59,7 +64,10 @@ import type {
|
||||
*/
|
||||
declare const fullApi: ApiFromModules<{
|
||||
"actions/email": typeof actions_email;
|
||||
"actions/linkPreview": typeof actions_linkPreview;
|
||||
"actions/pushNotifications": typeof actions_pushNotifications;
|
||||
"actions/smtp": typeof actions_smtp;
|
||||
"actions/utils/nodeCrypto": typeof actions_utils_nodeCrypto;
|
||||
atestadosLicencas: typeof atestadosLicencas;
|
||||
ausencias: typeof ausencias;
|
||||
autenticacao: typeof autenticacao;
|
||||
@@ -81,6 +89,8 @@ declare const fullApi: ApiFromModules<{
|
||||
logsLogin: typeof logsLogin;
|
||||
monitoramento: typeof monitoramento;
|
||||
permissoesAcoes: typeof permissoesAcoes;
|
||||
preferenciasNotificacao: typeof preferenciasNotificacao;
|
||||
pushNotifications: typeof pushNotifications;
|
||||
roles: typeof roles;
|
||||
saldoFerias: typeof saldoFerias;
|
||||
seed: typeof seed;
|
||||
|
||||
@@ -28,11 +28,19 @@ export const enviar = action({
|
||||
const configRaw = await ctx.runQuery(internal.email.getActiveEmailConfig, {});
|
||||
|
||||
if (!configRaw) {
|
||||
console.error("❌ Configuração SMTP não encontrada ou inativa para email:", email.destinatario);
|
||||
return {
|
||||
sucesso: false,
|
||||
erro: "Configuração de email não encontrada ou inativa",
|
||||
erro: "Configuração de email não encontrada ou inativa. Verifique as configurações SMTP no painel de TI.",
|
||||
};
|
||||
}
|
||||
|
||||
console.log("📧 Tentando enviar email:", {
|
||||
para: email.destinatario,
|
||||
assunto: email.assunto,
|
||||
servidor: configRaw.servidor,
|
||||
porta: configRaw.porta,
|
||||
});
|
||||
|
||||
// Descriptografar senha usando função compatível com Node.js
|
||||
let senhaDescriptografada: string;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
"use node";
|
||||
/**
|
||||
* Utilitários de criptografia compatíveis com Node.js
|
||||
* Para uso em actions que rodam em ambiente Node.js
|
||||
|
||||
@@ -370,7 +370,7 @@ export const criarSolicitacao = mutation({
|
||||
<li><strong>Motivo:</strong> ${args.motivo}</li>
|
||||
</ul>
|
||||
<p>Por favor, acesse o sistema para aprovar ou reprovar esta solicitação.</p>`,
|
||||
enviadoPorId: funcionarioUsuario._id,
|
||||
enviadoPor: funcionarioUsuario._id,
|
||||
});
|
||||
|
||||
// Criar ou obter conversa entre gestor e funcionário
|
||||
@@ -486,7 +486,7 @@ export const aprovar = mutation({
|
||||
<li><strong>Período:</strong> ${new Date(solicitacao.dataInicio).toLocaleDateString("pt-BR")} até ${new Date(solicitacao.dataFim).toLocaleDateString("pt-BR")}</li>
|
||||
<li><strong>Motivo:</strong> ${solicitacao.motivo}</li>
|
||||
</ul>`,
|
||||
enviadoPorId: args.gestorId,
|
||||
enviadoPor: args.gestorId,
|
||||
});
|
||||
|
||||
// Criar ou obter conversa
|
||||
@@ -605,7 +605,7 @@ export const reprovar = mutation({
|
||||
<li><strong>Motivo:</strong> ${solicitacao.motivo}</li>
|
||||
<li><strong>Motivo da Reprovação:</strong> ${args.motivoReprovacao}</li>
|
||||
</ul>`,
|
||||
enviadoPorId: args.gestorId,
|
||||
enviadoPor: args.gestorId,
|
||||
});
|
||||
|
||||
// Criar ou obter conversa
|
||||
|
||||
@@ -370,10 +370,10 @@ export const enviarMensagem = mutation({
|
||||
variaveis: {
|
||||
remetente: usuarioAtual.nome,
|
||||
mensagem: descricao,
|
||||
conversaId: args.conversaId,
|
||||
conversaId: args.conversaId.toString(),
|
||||
urlSistema,
|
||||
},
|
||||
enviadoPorId: usuarioAtual._id,
|
||||
enviadoPor: usuarioAtual._id,
|
||||
}).catch((error) => {
|
||||
console.error(`Erro ao agendar email para usuário ${participanteId}:`, error);
|
||||
});
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user