const { query } = require('./config/database'); (async () => { try { const deviceName = process.argv[2] || 'DESKTOP-BC16GDH'; console.log(`\n🔍 Verificando status do dispositivo: ${deviceName}\n`); // Buscar informaçÔes do dispositivo const deviceResult = await query( `SELECT device_id, device_name, is_active, last_seen, created_at, (SELECT name FROM users WHERE id = devices.user_id) as user_name FROM devices WHERE device_name = $1`, [deviceName] ); if (deviceResult.rows.length === 0) { console.log(`❌ Dispositivo "${deviceName}" nĂŁo encontrado no banco de dados\n`); process.exit(1); } const device = deviceResult.rows[0]; console.log('đŸ“± InformaçÔes do Dispositivo:'); console.log(` Nome: ${device.device_name}`); console.log(` Device ID: ${device.device_id}`); console.log(` Status (is_active): ${device.is_active ? '✅ Ativo' : '❌ Inativo'}`); console.log(` Último Heartbeat: ${device.last_seen ? new Date(device.last_seen).toLocaleString('pt-BR') : '❌ Nunca'}`); console.log(` Criado em: ${new Date(device.created_at).toLocaleString('pt-BR')}`); console.log(` UsuĂĄrio vinculado: ${device.user_name || 'Nenhum'}`); // Calcular status real baseado em last_seen let realStatus = false; let statusMessage = ''; if (device.last_seen) { const lastSeenDate = new Date(device.last_seen); const now = new Date(); const diffMinutes = Math.floor((now - lastSeenDate) / 1000 / 60); if (diffMinutes <= 5) { realStatus = true; statusMessage = `✅ ONLINE (Ășltimo heartbeat hĂĄ ${diffMinutes} minuto(s))`; } else { realStatus = false; statusMessage = `❌ OFFLINE (Ășltimo heartbeat hĂĄ ${diffMinutes} minuto(s) - mais de 5 minutos)`; } } else { realStatus = false; statusMessage = '❌ OFFLINE (nunca recebeu heartbeat)'; } console.log(`\n📊 Status Real: ${statusMessage}`); // Verificar atividades recentes const activitiesResult = await query( `SELECT COUNT(*) as total, MAX(timestamp) as ultima_atividade, MIN(timestamp) as primeira_atividade FROM activities WHERE device_id = (SELECT id FROM devices WHERE device_name = $1)`, [deviceName] ); if (activitiesResult.rows[0].total > 0) { const activities = activitiesResult.rows[0]; console.log(`\n📈 Atividades Registradas:`); console.log(` Total: ${activities.total}`); console.log(` Primeira: ${new Date(activities.primeira_atividade).toLocaleString('pt-BR')}`); console.log(` Última: ${new Date(activities.ultima_atividade).toLocaleString('pt-BR')}`); const lastActivityDate = new Date(activities.ultima_atividade); const now = new Date(); const diffHours = Math.floor((now - lastActivityDate) / 1000 / 60 / 60); const diffMinutes = Math.floor((now - lastActivityDate) / 1000 / 60) % 60; if (diffHours > 0) { console.log(` ⚠ Última atividade hĂĄ ${diffHours}h ${diffMinutes}min`); } else { console.log(` ✅ Última atividade hĂĄ ${diffMinutes}min`); } } else { console.log(`\n⚠ Nenhuma atividade registrada para este dispositivo`); } // Verificar Ășltimas 5 atividades const recentActivities = await query( `SELECT timestamp, application_name, window_title, idle_time_seconds FROM activities WHERE device_id = (SELECT id FROM devices WHERE device_name = $1) ORDER BY timestamp DESC LIMIT 5`, [deviceName] ); if (recentActivities.rows.length > 0) { console.log(`\n📋 Últimas 5 Atividades:`); recentActivities.rows.forEach((activity, index) => { console.log(` ${index + 1}. ${new Date(activity.timestamp).toLocaleString('pt-BR')} - ${activity.application_name} - ${activity.window_title.substring(0, 50)}`); }); } console.log('\n'); process.exit(0); } catch (error) { console.error('❌ Erro:', error.message); process.exit(1); } })();