🚀 Auto-deploy: melhoria no snap e medição AR em 22/05/2026 21:38:44

This commit is contained in:
2026-05-22 21:38:44 +00:00
parent c85dc85936
commit c93e56640d
5 changed files with 133 additions and 21 deletions
+44 -15
View File
@@ -1,26 +1,55 @@
import { supabase } from '@/integrations/supabase/client';
const logBuffer: any[] = [];
let channelSubscribed = false;
const logChannel = supabase.channel('global-app-logs', {
config: { broadcast: { self: true, ack: false } },
});
logChannel.subscribe();
logChannel.subscribe((status) => {
console.log(`[RemoteLogger] Status do canal de log: ${status}`);
if (status === 'SUBSCRIBED') {
channelSubscribed = true;
console.log(`[RemoteLogger] Inscrito com sucesso. Enviando ${logBuffer.length} logs acumulados...`);
// Envia o buffer acumulado
while (logBuffer.length > 0) {
const payload = logBuffer.shift();
logChannel.send({
type: 'broadcast',
event: 'log',
payload,
}).catch(err => {
console.error('[RemoteLogger] Erro ao enviar log em buffer:', err);
});
}
}
});
export function sendRemoteLog(level: 'info' | 'warn' | 'error', message: string, data?: any) {
console.log(`[RemoteLog] [${level}] ${message}`, data || '');
logChannel.send({
type: 'broadcast',
event: 'log',
payload: {
level,
message,
data: data ? JSON.parse(JSON.stringify(data)) : null,
timestamp: new Date().toISOString(),
userAgent: navigator.userAgent,
},
}).catch(err => {
console.error('Falha ao enviar log remoto:', err);
});
const consoleFn = level === 'error' ? console.error : level === 'warn' ? console.warn : console.log;
consoleFn(`[RemoteLog] [${level}] ${message}`, data || '');
const payload = {
level,
message,
data: data ? JSON.parse(JSON.stringify(data)) : null,
timestamp: new Date().toISOString(),
userAgent: typeof navigator !== 'undefined' ? navigator.userAgent : 'NodeJS',
};
if (channelSubscribed) {
logChannel.send({
type: 'broadcast',
event: 'log',
payload,
}).catch(err => {
console.error('[RemoteLogger] Falha ao enviar log remoto, enfileirando...', err);
logBuffer.push(payload);
});
} else {
logBuffer.push(payload);
}
}
// Captura global de erros em tempo de execução