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

333
SOLUCAO_AUTOSTART.md Normal file
View File

@@ -0,0 +1,333 @@
# 🔧 Solução: NoIdle não Inicia Automaticamente Após Reinicialização
## ❌ Problema
O cliente **noidle.exe** não permanece ativo em segundo plano após reiniciar a máquina, mesmo após instalação e ativação com a chave de ativação.
## ✅ Solução Implementada
Foram implementadas **3 camadas de proteção** para garantir que o NoIdle inicie automaticamente:
### 1. **Registro do Windows** (Método Primário)
- Adiciona entrada em `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run`
- Inicia automaticamente quando o usuário faz login
- Executa com parâmetro `--silent` para rodar em segundo plano
### 2. **Task Scheduler** (Método Secundário/Backup)
- Cria tarefa agendada `NoIdle_Monitor`
- Mais confiável que o Registry
- Reinicia automaticamente se o processo falhar (até 3 tentativas)
- Não para se o computador estiver na bateria
### 3. **Modo Silencioso** (Melhoria no Cliente)
- Suporte ao parâmetro `--silent` ou `--minimized`
- Executa sem interface gráfica
- Não requer interação do usuário
- Roda completamente em segundo plano
---
## 🚀 Como Aplicar a Solução
### Opção 1: Para Novas Instalações
O cliente atualizado (`CLIENTE_CORRIGIDO.py`) já configura tudo automaticamente:
1. Instale o NoIdle
2. Ative com a chave de ativação
3. O auto-start será configurado automaticamente
**Pronto!** O NoIdle agora iniciará automaticamente após reinicialização.
---
### Opção 2: Para Clientes Já Instalados
Se você já tem o NoIdle instalado e ele **NÃO** está iniciando automaticamente após reinicialização, use um dos scripts abaixo:
#### **Script 1: Configurar Auto-Start** (Recomendado)
```powershell
# Baixe e execute no PowerShell (como usuário normal):
.\CONFIGURAR_AUTOSTART_NOIDLE.ps1
```
**O que este script faz:**
- ✅ Configura Registro do Windows
- ✅ Configura Task Scheduler
- ✅ Verifica se já está configurado
- ✅ Pergunta se deseja iniciar agora
---
#### **Script 2: Verificar e Corrigir Problemas** (Diagnóstico Completo)
```powershell
# Baixe e execute no PowerShell:
.\VERIFICAR_E_CORRIGIR_NOIDLE.ps1
```
**O que este script faz:**
- 🔍 Verifica instalação
- 🔍 Verifica configuração (Device ID)
- 🔍 Verifica se está em execução
- 🔍 Verifica auto-start (Registry)
- 🔍 Verifica auto-start (Task Scheduler)
- 🔍 Testa conectividade com API
- 🔍 Verifica Firewall
- 🔍 Verifica logs de erros
-**Corrige automaticamente** todos os problemas encontrados
**Correção Automática:**
```powershell
.\VERIFICAR_E_CORRIGIR_NOIDLE.ps1 -AutoFix
```
---
## 📋 Verificação Manual
### Verificar se o NoIdle está rodando
```powershell
Get-Process -Name "NoIdle" -ErrorAction SilentlyContinue
```
**Resultado esperado:**
- ✅ Se aparecer um processo, está rodando
- ❌ Se não aparecer nada, **NÃO** está rodando
---
### Verificar auto-start no Registro
```powershell
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "NoIdle"
```
**Resultado esperado:**
```
NoIdle : "C:\Program Files\NoIdle\NoIdle.exe" --silent
```
---
### Verificar Task Scheduler
```powershell
Get-ScheduledTask -TaskName "NoIdle_Monitor" -ErrorAction SilentlyContinue
```
**Resultado esperado:**
-`State: Ready` ou `State: Running`
- ❌ Se retornar erro, Task Scheduler não está configurado
---
### Testar conectividade com API
```powershell
Invoke-WebRequest -Uri "https://admin.noidle.tech/api/devices/heartbeat" -Method POST -Body '{"device_id":"TEST"}' -ContentType "application/json"
```
**Resultado esperado:**
-`StatusCode: 200` = API está acessível
- ❌ Erro = Problema de rede/firewall
---
## 🔧 Correção Manual (Se os Scripts Falharem)
### Passo 1: Configurar Registro do Windows
```powershell
$RegKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
$ExePath = "C:\Program Files\NoIdle\NoIdle.exe"
$Command = "`"$ExePath`" --silent"
Set-ItemProperty -Path $RegKey -Name "NoIdle" -Value $Command -Type String -Force
```
### Passo 2: Criar Task Scheduler
```powershell
$ExePath = "C:\Program Files\NoIdle\NoIdle.exe"
$action = New-ScheduledTaskAction -Execute "`"$ExePath`"" -Argument '--silent'
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Limited
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) -ExecutionTimeLimit (New-TimeSpan -Days 0)
Register-ScheduledTask -TaskName "NoIdle_Monitor" -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description "Monitora atividades do usuário para o sistema NoIdle" -Force
```
### Passo 3: Iniciar manualmente
```powershell
Start-Process -FilePath "C:\Program Files\NoIdle\NoIdle.exe" -ArgumentList "--silent" -WindowStyle Hidden
```
---
## 🧪 Como Testar
### Teste 1: Iniciar Manualmente
```powershell
# Parar processo atual (se estiver rodando)
Stop-Process -Name "NoIdle" -Force -ErrorAction SilentlyContinue
# Iniciar em modo silencioso
Start-Process -FilePath "C:\Program Files\NoIdle\NoIdle.exe" -ArgumentList "--silent" -WindowStyle Hidden
# Aguardar 3 segundos
Start-Sleep -Seconds 3
# Verificar se está rodando
Get-Process -Name "NoIdle"
```
**Resultado esperado:** Deve aparecer o processo NoIdle.
---
### Teste 2: Testar Após Reinicialização
1. Configure o auto-start (usando scripts acima)
2. Reinicie o computador
3. Faça login no Windows
4. Execute:
```powershell
# Aguardar alguns segundos após login
Start-Sleep -Seconds 10
# Verificar se está rodando
Get-Process -Name "NoIdle"
```
**Resultado esperado:** NoIdle deve estar rodando automaticamente.
---
## 📊 Logs e Diagnóstico
### Verificar logs do Task Scheduler
1. Abra o **Task Scheduler** (Agendador de Tarefas)
2. Navegue até: `Task Scheduler Library``NoIdle_Monitor`
3. Clique na aba **History** (Histórico)
4. Procure por erros ou execuções bem-sucedidas
---
### Verificar Event Viewer
```powershell
# Ver erros relacionados ao NoIdle nos últimos 7 dias
Get-EventLog -LogName Application -Source "*NoIdle*" -After (Get-Date).AddDays(-7) -ErrorAction SilentlyContinue | Where-Object { $_.EntryType -eq "Error" }
```
---
## 🔍 Troubleshooting
### Problema: "NoIdle inicia mas fecha imediatamente"
**Causa:** Provavelmente o Device ID não está configurado.
**Solução:**
1. Execute o NoIdle **sem** `--silent` pela primeira vez
2. Insira a chave de ativação
3. Após ativação, ele criará o arquivo de configuração
4. Depois pode usar `--silent`
---
### Problema: "Task Scheduler não funciona"
**Causa:** Pode ser permissão ou política de grupo.
**Solução:**
1. Use apenas o método do Registry (funciona sem admin)
2. Verifique se o usuário tem permissão para criar tarefas agendadas
3. Consulte o administrador do sistema
---
### Problema: "NoIdle não consegue conectar à API"
**Causa:** Firewall, proxy ou rede corporativa bloqueando.
**Solução:**
1. Verifique se `https://admin.noidle.tech` está acessível
2. Adicione exceção no firewall
3. Configure proxy se necessário
4. Contate o administrador de rede
---
### Problema: "Quero remover o auto-start"
**Solução:**
```powershell
# Método 1: Usar o script
.\CONFIGURAR_AUTOSTART_NOIDLE.ps1 -Remove
# Método 2: Manual
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "NoIdle"
Unregister-ScheduledTask -TaskName "NoIdle_Monitor" -Confirm:$false
```
---
## 📞 Suporte
Se o problema persistir após seguir todos os passos:
1. Execute o script de diagnóstico e salve a saída:
```powershell
.\VERIFICAR_E_CORRIGIR_NOIDLE.ps1 | Out-File -FilePath "diagnostico.txt"
```
2. Verifique se o executável está correto:
```powershell
Get-Item "C:\Program Files\NoIdle\NoIdle.exe"
```
3. Verifique se a configuração existe:
```powershell
Get-Content "$env:APPDATA\NoIdle\config.json"
```
4. Envie as informações para o suporte.
---
## 📚 Arquivos Relacionados
- `CLIENTE_CORRIGIDO.py` - Cliente Python atualizado com modo silencioso
- `CONFIGURAR_AUTOSTART_NOIDLE.ps1` - Script para configurar auto-start
- `VERIFICAR_E_CORRIGIR_NOIDLE.ps1` - Script de diagnóstico e correção
- `INSTALADOR_POWERSHELL.ps1` - Instalador completo
---
## ✅ Resumo da Solução
| Componente | Status | Descrição |
|------------|--------|-----------|
| Cliente Python | ✅ Atualizado | Suporte a `--silent` |
| Registry Auto-Start | ✅ Implementado | Método primário |
| Task Scheduler | ✅ Implementado | Método secundário (mais robusto) |
| Script de Configuração | ✅ Criado | `CONFIGURAR_AUTOSTART_NOIDLE.ps1` |
| Script de Diagnóstico | ✅ Criado | `VERIFICAR_E_CORRIGIR_NOIDLE.ps1` |
| Documentação | ✅ Criada | Este arquivo |
---
**O problema de não iniciar automaticamente após reinicialização está RESOLVIDO!** 🎉
Para novos clientes, basta instalar e ativar. Para clientes existentes, executar o script de configuração ou correção.