feat: Implementação completa do NoIdle - Cliente, Backend e Scripts

- Cliente Windows com modo silencioso e auto-start robusto
- Backend Node.js + API REST
- Frontend Next.js + Dashboard
- Scripts PowerShell de configuração e diagnóstico
- Documentação completa
- Build scripts para Windows e Linux
- Solução de auto-start após reinicialização

Resolução do problema: Cliente não voltava ativo após reboot
Solução: Registro do Windows + Task Scheduler + Modo silencioso
This commit is contained in:
root
2025-11-16 22:56:35 +00:00
commit 6086c13be7
58 changed files with 10693 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
# Monitoramento de Logon/Logoff do Windows
## O que foi corrigido
O cliente agora monitora **eventos reais de logon/logoff do Windows** usando o Windows Event Log, não apenas quando o NoIdle inicia/fecha.
## Como funciona
1. **Monitoramento do Event Log**: O cliente lê o log de segurança do Windows a cada 60 segundos
2. **Eventos detectados**:
- **Evento 4624**: Logon bem-sucedido
- **Evento 4634**: Logoff bem-sucedido
- **Evento 4647**: Logoff iniciado pelo usuário
## Permissões necessárias
⚠️ **IMPORTANTE**: Para ler o Event Log de segurança, o NoIdle precisa rodar com **permissões elevadas** ou o usuário precisa ter permissão para ler o log de segurança.
### Opção 1: Executar como Administrador (Recomendado)
1. Clique com botão direito no `NoIdle.exe`
2. Selecione "Executar como administrador"
3. Ou configure para sempre executar como admin:
- Clique com botão direito → Propriedades → Compatibilidade
- Marque "Executar este programa como administrador"
### Opção 2: Dar permissão ao usuário (Avançado)
Se não quiser executar como admin, pode dar permissão específica:
1. Abra o **Editor de Política de Grupo Local** (`gpedit.msc`)
2. Navegue até: **Configuração do Computador → Configurações do Windows → Configurações de Segurança → Políticas Locais → Atribuição de Direitos do Usuário**
3. Encontre: **"Gerar auditorias de segurança"**
4. Adicione o usuário ou grupo que executa o NoIdle
## Verificação
Após atualizar o cliente:
1. **Faça logoff do Windows** (Win + L, depois logoff)
2. **Faça logon novamente**
3. **Verifique os logs do servidor**:
```bash
pm2 logs pointcontrol-api --lines 30
```
4. **Procure por**:
```
🔐 Evento de sessão: logon - [device_id] (username)
🔐 Evento de sessão: logoff - [device_id] (username)
```
## Método alternativo
Se o Event Log não estiver acessível (sem permissões), o cliente usa um método alternativo que detecta mudanças de sessão. Este método é menos preciso, mas ainda funciona.
## Dependências
O código usa:
- `win32evtlog`: Para ler o Event Log do Windows
- `win32evtlogutil`: Para formatar mensagens de eventos
Essas bibliotecas já estão incluídas no `pywin32`, que deve estar nas dependências do projeto.