feat: enhance alert diagnostics by adding template listing for improved user feedback; implement fallback template search in backend for better error handling and logging

This commit is contained in:
2025-12-10 06:54:28 -03:00
parent 9f523d99a5
commit 56dffbaad7
2 changed files with 46 additions and 4 deletions

View File

@@ -77,8 +77,13 @@
<p class="text-sm text-base-content/70"> <p class="text-sm text-base-content/70">
O template "monitoramento_alerta_sistema" não foi encontrado no banco de dados. O template "monitoramento_alerta_sistema" não foi encontrado no banco de dados.
</p> </p>
{#if config.todosTemplatesCodigos && config.todosTemplatesCodigos.length > 0}
<p class="text-xs text-base-content/60 mt-2">
<strong>Templates encontrados no banco:</strong> {config.todosTemplatesCodigos.join(', ')}
</p>
{/if}
<p class="text-xs text-warning mt-1"> <p class="text-xs text-warning mt-1">
💡 Execute a mutation "criarTemplatesPadrao" para criar os templates do sistema. 💡 Para criar os templates padrão, acesse a página de <a href="/ti/notificacoes" class="link link-primary">Notificações</a> e use o botão "Criar Templates Padrão", ou execute a mutation <code class="text-xs">criarTemplatesPadrao</code> via Convex Dashboard.
</p> </p>
</div> </div>
{/if} {/if}

View File

@@ -163,6 +163,7 @@ export const verificarConfiguracaoAlertas = query({
}), }),
v.null() v.null()
), ),
todosTemplatesCodigos: v.optional(v.array(v.string())), // Para debug
roleTiMasterExiste: v.boolean(), roleTiMasterExiste: v.boolean(),
usuariosTiMaster: v.array( usuariosTiMaster: v.array(
v.object({ v.object({
@@ -193,12 +194,36 @@ export const verificarConfiguracaoAlertas = query({
// 1. Verificar template // 1. Verificar template
let template = null; let template = null;
try { try {
// Tentar buscar usando índice
template = await ctx.db template = await ctx.db
.query('templatesMensagens') .query('templatesMensagens')
.withIndex('by_codigo', (q) => q.eq('codigo', 'monitoramento_alerta_sistema')) .withIndex('by_codigo', (q) => q.eq('codigo', 'monitoramento_alerta_sistema'))
.first(); .first();
// Se não encontrou com índice, tentar busca direta
if (!template) {
const todosTemplates = await ctx.db.query('templatesMensagens').collect();
template = todosTemplates.find(
(t) => t.codigo?.toLowerCase() === 'monitoramento_alerta_sistema'.toLowerCase()
) || null;
}
if (template) {
console.log('✅ Template encontrado:', template.codigo, template.nome);
} else {
console.warn('⚠️ Template monitoramento_alerta_sistema não encontrado no banco');
}
} catch (error) { } catch (error) {
console.warn('Erro ao buscar template:', error); console.error('Erro ao buscar template:', error);
// Tentar busca alternativa sem índice
try {
const todosTemplates = await ctx.db.query('templatesMensagens').collect();
template = todosTemplates.find(
(t) => t.codigo?.toLowerCase() === 'monitoramento_alerta_sistema'.toLowerCase()
) || null;
} catch (fallbackError) {
console.error('❌ Erro na busca alternativa:', fallbackError);
}
} }
// 2. Verificar role TI_MASTER // 2. Verificar role TI_MASTER
@@ -249,7 +274,17 @@ export const verificarConfiguracaoAlertas = query({
console.warn('Erro ao buscar configuração SMTP:', error); console.warn('Erro ao buscar configuração SMTP:', error);
} }
// 5. Verificar fila de emails // 5. Listar todos os templates para debug (opcional)
let todosTemplatesCodigos: string[] = [];
try {
const todosTemplates = await ctx.db.query('templatesMensagens').collect();
todosTemplatesCodigos = todosTemplates.map((t) => t.codigo || '').filter(Boolean);
console.log('📋 Templates encontrados no banco:', todosTemplatesCodigos);
} catch (error) {
console.warn('Erro ao listar templates para debug:', error);
}
// 6. Verificar fila de emails
let emailsPendentes = 0; let emailsPendentes = 0;
let emailsFalha = 0; let emailsFalha = 0;
try { try {
@@ -260,7 +295,7 @@ export const verificarConfiguracaoAlertas = query({
console.warn('Erro ao buscar emails:', error); console.warn('Erro ao buscar emails:', error);
} }
// 6. Verificar alertas // 7. Verificar alertas
let alertasAtivos = 0; let alertasAtivos = 0;
let alertasComEmail = 0; let alertasComEmail = 0;
try { try {
@@ -283,6 +318,7 @@ export const verificarConfiguracaoAlertas = query({
htmlCorpo: template.htmlCorpo htmlCorpo: template.htmlCorpo
} }
: null, : null,
todosTemplatesCodigos: todosTemplatesCodigos.length > 0 ? todosTemplatesCodigos : undefined,
roleTiMasterExiste: !!roleTiMaster, roleTiMasterExiste: !!roleTiMaster,
usuariosTiMaster, usuariosTiMaster,
configSmtpAtiva: !!configSmtp, configSmtpAtiva: !!configSmtp,
@@ -306,6 +342,7 @@ export const verificarConfiguracaoAlertas = query({
return { return {
templateExiste: false, templateExiste: false,
templateInfo: null, templateInfo: null,
todosTemplatesCodigos: undefined,
roleTiMasterExiste: false, roleTiMasterExiste: false,
usuariosTiMaster: [], usuariosTiMaster: [],
configSmtpAtiva: false, configSmtpAtiva: false,