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">
O template "monitoramento_alerta_sistema" não foi encontrado no banco de dados.
</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">
💡 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>
</div>
{/if}

View File

@@ -163,6 +163,7 @@ export const verificarConfiguracaoAlertas = query({
}),
v.null()
),
todosTemplatesCodigos: v.optional(v.array(v.string())), // Para debug
roleTiMasterExiste: v.boolean(),
usuariosTiMaster: v.array(
v.object({
@@ -193,12 +194,36 @@ export const verificarConfiguracaoAlertas = query({
// 1. Verificar template
let template = null;
try {
// Tentar buscar usando índice
template = await ctx.db
.query('templatesMensagens')
.withIndex('by_codigo', (q) => q.eq('codigo', 'monitoramento_alerta_sistema'))
.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) {
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
@@ -249,7 +274,17 @@ export const verificarConfiguracaoAlertas = query({
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 emailsFalha = 0;
try {
@@ -260,7 +295,7 @@ export const verificarConfiguracaoAlertas = query({
console.warn('Erro ao buscar emails:', error);
}
// 6. Verificar alertas
// 7. Verificar alertas
let alertasAtivos = 0;
let alertasComEmail = 0;
try {
@@ -283,6 +318,7 @@ export const verificarConfiguracaoAlertas = query({
htmlCorpo: template.htmlCorpo
}
: null,
todosTemplatesCodigos: todosTemplatesCodigos.length > 0 ? todosTemplatesCodigos : undefined,
roleTiMasterExiste: !!roleTiMaster,
usuariosTiMaster,
configSmtpAtiva: !!configSmtp,
@@ -306,6 +342,7 @@ export const verificarConfiguracaoAlertas = query({
return {
templateExiste: false,
templateInfo: null,
todosTemplatesCodigos: undefined,
roleTiMasterExiste: false,
usuariosTiMaster: [],
configSmtpAtiva: false,