333 lines
7.0 KiB
Markdown
333 lines
7.0 KiB
Markdown
|
|
# NoIdle - Sistema de Monitoramento de Atividades
|
||
|
|
|
||
|
|
> **Zero Idle, Maximum Productivity**
|
||
|
|
|
||
|
|
Sistema completo de monitoramento de atividades de usuários em tempo real, incluindo cliente Windows, backend Node.js e dashboard web.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 Sobre o Projeto
|
||
|
|
|
||
|
|
NoIdle é um sistema de monitoramento de produtividade que captura e registra:
|
||
|
|
- ✅ Aplicativos ativos
|
||
|
|
- ✅ Títulos de janelas
|
||
|
|
- ✅ URLs navegadas (Chrome, Edge, Firefox)
|
||
|
|
- ✅ Tempo ocioso
|
||
|
|
- ✅ Eventos de logon/logoff
|
||
|
|
- ✅ Heartbeat de dispositivos
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🏗️ Arquitetura
|
||
|
|
|
||
|
|
```
|
||
|
|
NoIdle/
|
||
|
|
├── backend/ # API Node.js + Express + PostgreSQL
|
||
|
|
├── frontend/ # Dashboard Next.js + React
|
||
|
|
├── CLIENTE_CORRIGIDO.py # Cliente Windows (Python)
|
||
|
|
└── scripts/ # Scripts PowerShell de configuração
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Componentes
|
||
|
|
|
||
|
|
### 1. Cliente Windows (`CLIENTE_CORRIGIDO.py`)
|
||
|
|
|
||
|
|
Cliente Python que roda em segundo plano nos computadores Windows:
|
||
|
|
|
||
|
|
**Recursos:**
|
||
|
|
- ✅ Monitoramento de janelas ativas
|
||
|
|
- ✅ Captura de URLs dos navegadores
|
||
|
|
- ✅ Detecção de tempo ocioso
|
||
|
|
- ✅ Auto-start após reinicialização
|
||
|
|
- ✅ Modo silencioso (`--silent`)
|
||
|
|
- ✅ System tray icon
|
||
|
|
- ✅ Eventos de sessão (logon/logoff)
|
||
|
|
|
||
|
|
**Instalação:**
|
||
|
|
```powershell
|
||
|
|
# Ativar o cliente
|
||
|
|
.\NoIdle.exe
|
||
|
|
|
||
|
|
# Modo silencioso (após ativação)
|
||
|
|
.\NoIdle.exe --silent
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Backend (Node.js)
|
||
|
|
|
||
|
|
API REST que processa e armazena os dados.
|
||
|
|
|
||
|
|
**Tecnologias:**
|
||
|
|
- Node.js + Express
|
||
|
|
- PostgreSQL
|
||
|
|
- PM2 (gerenciamento de processos)
|
||
|
|
|
||
|
|
**Endpoints:**
|
||
|
|
- `POST /api/devices/activate` - Ativar dispositivo
|
||
|
|
- `POST /api/devices/heartbeat` - Heartbeat
|
||
|
|
- `POST /api/activity/log` - Registrar atividade
|
||
|
|
- `POST /api/activity/session` - Eventos de sessão
|
||
|
|
|
||
|
|
### 3. Frontend (Next.js)
|
||
|
|
|
||
|
|
Dashboard web para visualização e gerenciamento.
|
||
|
|
|
||
|
|
**URL:** https://admin.noidle.tech
|
||
|
|
|
||
|
|
**Recursos:**
|
||
|
|
- 📊 Dashboard de atividades em tempo real
|
||
|
|
- 👥 Gerenciamento de usuários e dispositivos
|
||
|
|
- 📈 Relatórios e estatísticas
|
||
|
|
- 🔍 Histórico de navegação
|
||
|
|
- ⏱️ Análise de tempo ocioso
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔧 Problema Resolvido: Auto-Start
|
||
|
|
|
||
|
|
### ❌ Problema
|
||
|
|
O cliente não iniciava automaticamente após reinicialização do Windows.
|
||
|
|
|
||
|
|
### ✅ Solução Implementada
|
||
|
|
|
||
|
|
**3 Camadas de Proteção:**
|
||
|
|
1. **Registro do Windows** - Método primário
|
||
|
|
2. **Task Scheduler** - Backup com auto-restart
|
||
|
|
3. **Modo Silencioso** - Execução sem interface
|
||
|
|
|
||
|
|
**Scripts de Correção:**
|
||
|
|
- `CONFIGURAR_AUTOSTART_NOIDLE.ps1` - Configurar auto-start
|
||
|
|
- `VERIFICAR_E_CORRIGIR_NOIDLE.ps1` - Diagnóstico + correção automática
|
||
|
|
|
||
|
|
**Documentação:**
|
||
|
|
- `LEIA_PRIMEIRO.md` - Guia rápido
|
||
|
|
- `SOLUCAO_AUTOSTART.md` - Documentação técnica completa
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📦 Compilação do Cliente
|
||
|
|
|
||
|
|
### Windows (Recomendado)
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# Usando script automatizado
|
||
|
|
.\BUILD_NOIDLE.ps1
|
||
|
|
|
||
|
|
# Ou manualmente
|
||
|
|
pip install pyinstaller pywin32 psutil requests pystray pillow schedule
|
||
|
|
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py
|
||
|
|
```
|
||
|
|
|
||
|
|
### Linux (Docker)
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Usando script automatizado
|
||
|
|
./BUILD_LINUX.sh
|
||
|
|
|
||
|
|
# Ou manualmente
|
||
|
|
docker run --rm -v $(pwd):/src cdrx/pyinstaller-windows:python3 \
|
||
|
|
/bin/bash -c "pip install pywin32 psutil requests pystray pillow schedule && \
|
||
|
|
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py"
|
||
|
|
```
|
||
|
|
|
||
|
|
**Documentação:** Ver `BUILD_CLIENTE.md` para detalhes completos.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📚 Documentação
|
||
|
|
|
||
|
|
### Para Usuários Finais
|
||
|
|
- **`LEIA_PRIMEIRO.md`** - Comece por aqui!
|
||
|
|
- **`GUIA_RAPIDO_AUTOSTART.md`** - Guia rápido de resolução de problemas
|
||
|
|
|
||
|
|
### Para Suporte Técnico
|
||
|
|
- **`SOLUCAO_AUTOSTART.md`** - Troubleshooting completo
|
||
|
|
- **`VERIFICAR_E_CORRIGIR_NOIDLE.ps1`** - Script de diagnóstico
|
||
|
|
|
||
|
|
### Para Desenvolvedores
|
||
|
|
- **`BUILD_CLIENTE.md`** - Como compilar o cliente
|
||
|
|
- **`COMANDOS_BUILD.md`** - Quick reference de comandos
|
||
|
|
- **`README_SOLUCAO_AUTOSTART.md`** - Visão geral da solução
|
||
|
|
- **`CLIENT_CONFIG.md`** - Configuração da API
|
||
|
|
- **`ESPECIFICACAO_CLIENTE_WINDOWS.md`** - Especificação técnica
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Quick Start
|
||
|
|
|
||
|
|
### 1. Backend
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd backend
|
||
|
|
npm install
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Frontend
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd frontend
|
||
|
|
npm install
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. Cliente Windows
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# Compilar
|
||
|
|
.\BUILD_NOIDLE.ps1
|
||
|
|
|
||
|
|
# Testar
|
||
|
|
.\dist\NoIdle.exe
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔐 Configuração
|
||
|
|
|
||
|
|
### Backend (.env)
|
||
|
|
```env
|
||
|
|
DATABASE_URL=postgresql://user:pass@localhost:5432/noidle
|
||
|
|
PORT=3000
|
||
|
|
NODE_ENV=production
|
||
|
|
```
|
||
|
|
|
||
|
|
### Cliente (config.json)
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"device_id": "DEV-XXXX",
|
||
|
|
"api_url": "https://admin.noidle.tech/api"
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Estrutura do Banco de Dados
|
||
|
|
|
||
|
|
```sql
|
||
|
|
-- Principais tabelas
|
||
|
|
devices -- Dispositivos cadastrados
|
||
|
|
activities -- Atividades registradas
|
||
|
|
browsing_history -- Histórico de navegação
|
||
|
|
session_events -- Eventos de logon/logoff
|
||
|
|
users -- Usuários do sistema
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🛠️ Scripts PowerShell
|
||
|
|
|
||
|
|
### Configuração
|
||
|
|
- **`INSTALADOR_POWERSHELL.ps1`** - Instalador completo
|
||
|
|
- **`CONFIGURAR_AUTOSTART_NOIDLE.ps1`** - Configurar auto-start
|
||
|
|
|
||
|
|
### Diagnóstico
|
||
|
|
- **`VERIFICAR_E_CORRIGIR_NOIDLE.ps1`** - Diagnóstico completo
|
||
|
|
- **`DIAGNOSTICO_CLIENTE_WINDOWS.ps1`** - Diagnóstico detalhado
|
||
|
|
- **`VERIFICAR_CLIENTE_SIMPLES.ps1`** - Verificação rápida
|
||
|
|
|
||
|
|
### Build
|
||
|
|
- **`BUILD_NOIDLE.ps1`** - Build automatizado (Windows)
|
||
|
|
- **`BUILD_LINUX.sh`** - Build automatizado (Linux)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🧪 Testes
|
||
|
|
|
||
|
|
### Testar Cliente
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
# Iniciar em modo silencioso
|
||
|
|
.\NoIdle.exe --silent
|
||
|
|
|
||
|
|
# Verificar processo
|
||
|
|
Get-Process -Name "NoIdle"
|
||
|
|
|
||
|
|
# Verificar auto-start
|
||
|
|
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "NoIdle"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Testar API
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Heartbeat
|
||
|
|
curl -X POST https://admin.noidle.tech/api/devices/heartbeat \
|
||
|
|
-H "Content-Type: application/json" \
|
||
|
|
-d '{"device_id":"TEST"}'
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📦 Distribuição
|
||
|
|
|
||
|
|
### Pacote Completo
|
||
|
|
|
||
|
|
```
|
||
|
|
NoIdle-v1.0.zip
|
||
|
|
├── NoIdle.exe
|
||
|
|
├── CONFIGURAR_AUTOSTART_NOIDLE.ps1
|
||
|
|
├── VERIFICAR_E_CORRIGIR_NOIDLE.ps1
|
||
|
|
├── GUIA_RAPIDO_AUTOSTART.md
|
||
|
|
└── LEIA_PRIMEIRO.md
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔄 Changelog
|
||
|
|
|
||
|
|
### v1.0 (2025-11-16)
|
||
|
|
- ✅ Cliente com modo silencioso
|
||
|
|
- ✅ Auto-start robusto (Registry + Task Scheduler)
|
||
|
|
- ✅ Scripts de diagnóstico e correção
|
||
|
|
- ✅ Documentação completa
|
||
|
|
- ✅ Build scripts para Windows e Linux
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🤝 Contribuindo
|
||
|
|
|
||
|
|
1. Fork o projeto
|
||
|
|
2. Crie uma branch (`git checkout -b feature/nova-funcionalidade`)
|
||
|
|
3. Commit suas mudanças (`git commit -m 'Adiciona nova funcionalidade'`)
|
||
|
|
4. Push para a branch (`git push origin feature/nova-funcionalidade`)
|
||
|
|
5. Abra um Pull Request
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📄 Licença
|
||
|
|
|
||
|
|
Proprietary - Todos os direitos reservados
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 👨💻 Autor
|
||
|
|
|
||
|
|
**Sérgio Corrêa**
|
||
|
|
- Repositório: https://meurepositorio.com/sergio.correa/NoIdle
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🆘 Suporte
|
||
|
|
|
||
|
|
Para problemas ou dúvidas:
|
||
|
|
1. Consulte `LEIA_PRIMEIRO.md`
|
||
|
|
2. Execute `VERIFICAR_E_CORRIGIR_NOIDLE.ps1`
|
||
|
|
3. Verifique a documentação em `/docs`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Status do Projeto
|
||
|
|
|
||
|
|
- ✅ Backend: Funcionando
|
||
|
|
- ✅ Frontend: Funcionando
|
||
|
|
- ✅ Cliente Windows: Funcionando
|
||
|
|
- ✅ Auto-start: Resolvido
|
||
|
|
- ✅ Documentação: Completa
|
||
|
|
- ✅ Build Scripts: Prontos
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**NoIdle - Zero Idle, Maximum Productivity** 🚀
|
||
|
|
|