Files
NoIdle/CHANGELOG_CLIENTE.md

89 lines
3.1 KiB
Markdown
Raw Normal View History

# Changelog - Cliente NoIdle Corrigido
## 🔧 Correções Implementadas
### 1. **Captura de Janela Ativa Corrigida**
- ✅ Função `get_active_window_info()` agora sempre tenta capturar dados reais
- ✅ Garante que o nome do processo tenha `.exe`
- ✅ Se não conseguir o título, usa o nome do processo
-**NUNCA** retorna "System Idle" se há uma janela ativa
### 2. **Lógica de Monitoramento Melhorada**
- ✅ Sempre tenta enviar dados reais quando há janela ativa
- ✅ Só envia "[IDLE]" quando realmente não consegue capturar janela E usuário está ocioso
- ✅ Verifica se usuário está ocioso antes de marcar como idle
### 3. **Intervalo de Monitoramento Ajustado**
- ✅ Mudado de 1 minuto para **10 segundos** (mais frequente)
- ✅ Captura mudanças de aplicativo mais rapidamente
### 4. **Heartbeat Implementado**
- ✅ Envia heartbeat a cada 30 segundos para manter dispositivo ativo
- ✅ Garante que dispositivo apareça como online mesmo sem atividade
### 5. **Tratamento de Erros Melhorado**
- ✅ Melhor tratamento de exceções em todas as funções
- ✅ Logs mais informativos para debug
- ✅ Continua funcionando mesmo se uma parte falhar
### 6. **Histórico de Navegação**
- ✅ Melhor tratamento de erros ao ler histórico do Chrome/Edge
- ✅ Valida URLs antes de enviar
- ✅ Remove duplicatas e URLs inválidas
### 7. **Ativação Corrigida**
- ✅ Corrigido para salvar `device_id` corretamente após ativação
- ✅ Validação melhor do resultado da ativação
## 📋 O que foi corrigido especificamente:
### Antes (ERRADO):
```python
if idle_time > (IDLE_THRESHOLD * 60):
send_activity_log(device_id, '[IDLE]', 'System Idle', int(idle_time))
elif window_info:
send_activity_log(...)
```
**Problema:** Enviava "[IDLE]" mesmo quando havia janela ativa se o tempo ocioso fosse alto.
### Depois (CORRETO):
```python
if window_info and window_info.get('window_title') and window_info.get('process_name'):
# Sempre enviar dados reais se há janela ativa
if idle_time_seconds > IDLE_THRESHOLD:
# Ocioso mas ainda tem janela
send_activity_log(device_id, window_title, application_name, idle_time_seconds, urls)
else:
# Ativo
send_activity_log(device_id, window_title, application_name, 0, urls)
else:
# Só enviar "[IDLE]" se realmente não conseguiu capturar janela
if idle_time_seconds > IDLE_THRESHOLD:
send_activity_log(device_id, '[IDLE]', 'System Idle', idle_time_seconds, None)
```
## 🎯 Resultado Esperado
Agora o cliente deve enviar:
- ✅ Títulos reais das janelas (ex: "Visual Studio Code", "Documento - Word")
- ✅ Nomes reais dos executáveis (ex: "Code.exe", "WINWORD.EXE", "chrome.exe")
- ✅ URLs do Chrome/Edge quando disponíveis
- ✅ Eventos de logon/logoff
- ✅ Heartbeat regular
## 📦 Para Rebuild
1. Instalar dependências:
```bash
pip install pyinstaller psutil pywin32 requests pystray pillow schedule
```
2. Criar executável:
```bash
pyinstaller --onefile --windowed --icon=icon.ico --name=NoIdle CLIENTE_CORRIGIDO.py
```
3. O executável estará em `dist/NoIdle.exe`