Sistema inteligente de monitoramento de produtividade em Python
Monitoramento local, logs estruturados, presença via webcam, idle tracker e arquitetura preparada para evolução corporativa.
O WorkWatch é um sistema inteligente de monitoramento de produtividade desenvolvido em Python, criado para acompanhar atividades realizadas no computador de forma contínua, estruturada e expansível.
A proposta do projeto é registrar eventos importantes do ambiente de trabalho, como janela ativa, programa em uso, presença física via webcam, tempo de inatividade e logs consolidados em CSV. Esses dados formam uma base técnica para futuras análises, dashboards, relatórios corporativos e integração com inteligência artificial.
O projeto nasceu como estudo prático e portfólio, mas foi estruturado com visão de produto: modular, extensível, documentado e preparado para evoluir para um cenário profissional.
O WorkWatch responde a uma pergunta central:
Como medir, registrar e analisar a produtividade real de uso do computador de forma organizada, leve e evolutiva?
A partir dessa ideia, o sistema busca entregar uma base sólida para:
|
Capturar janelas, programas, presença e inatividade sem depender de serviços externos. |
Gerar logs estruturados para análise futura em Python, Excel, Power BI, dashboards ou IA. |
|
Separar responsabilidades em módulos independentes, facilitando manutenção e evolução. |
Criar uma base técnica que possa evoluir para relatórios, gestão, auditoria e conformidade com LGPD. |
| Pilar | Status | Nível Atual | Descrição |
|---|---|---|---|
| Monitoramento de janelas | ✅ | MVP funcional | Captura janela ativa, programa executável e mudanças de foco. |
| Detector de presença | ✅ | MVP funcional | Detecta presença via webcam com OpenCV + cvzone/MediaPipe. |
| Idle Tracker | ✅ | MVP funcional | Identifica inatividade usando API nativa do Windows. |
| Logs em CSV | ✅ | Funcional | Registra eventos consolidados em storage/logs.csv. |
| Configuração via JSON | ✅ | Funcional | Permite ativar/desativar módulos e ajustar intervalos. |
| Arquitetura multi-thread | ✅ | Funcional | Cada monitor roda em thread separada, sem travar a aplicação. |
| Dashboard local | 🧩 | Planejado | Visualização gráfica dos dados coletados. |
| Classificação de produtividade | 🧩 | Planejado | Classificação de apps e sites como produtivos, neutros ou distrativos. |
| Relatórios automáticos | 🧩 | Planejado | Exportação futura em PDF, PNG ou painel web. |
| Integração com IA | 🧩 | Planejado | Análise inteligente de padrões de comportamento e produtividade. |
O módulo de janelas acompanha a aplicação ativa no computador e registra mudanças relevantes de foco.
O que ele identifica:
- Título da janela ativa.
- Programa executável em uso.
- Data e hora do evento.
- Mudança real de janela, evitando registros repetidos desnecessários.
Exemplo de uso prático:
- Identificar quanto tempo o usuário alternou entre VS Code, navegador, terminal, documentos e outros programas.
- Criar base para classificar atividades como produtivas, neutras ou distrativas.
O detector de presença usa webcam para identificar se o usuário está fisicamente presente diante do computador.
Recursos atuais:
- Captura de imagem via OpenCV.
- Detecção facial usando cvzone/MediaPipe.
- Registro de mudança de estado:
PRESENTEouAUSENTE. - Execução isolada em thread separada.
- Liberação segura da webcam ao encerrar o sistema.
O objetivo não é gravar ou vigiar o usuário. A webcam é usada como sensor técnico de presença, registrando apenas eventos relevantes para análise de engajamento e uso do computador.
O Idle Tracker detecta quando o usuário fica sem interagir com teclado ou mouse por determinado período.
Como funciona:
- Usa a API nativa do Windows
GetLastInputInfo. - Mede o tempo desde a última interação.
- Registra quando o usuário entra em estado
INATIVO. - Registra quando o usuário retorna para estado
ATIVO.
Benefício: permite diferenciar tempo real de uso do computador de períodos em que a máquina ficou parada.
Todos os eventos importantes são registrados em um arquivo CSV, facilitando análise futura com Python, Excel, Power BI ou dashboards.
Arquivo principal:
storage/logs.csv
Exemplo simplificado de evento:
data,hora,modulo,evento,detalhe
16/05/2026,14:25:31,window_tracker,JANELA_ATIVA,code.exe - main.py
16/05/2026,14:28:10,presence_detector,PRESENTE,rosto detectado
16/05/2026,14:35:42,idle_tracker,INATIVO,sem interação por 60 segundosCada módulo de monitoramento roda em sua própria thread, permitindo execução paralela e evitando travamentos.
Vantagens:
- O monitoramento de janelas não trava a webcam.
- A webcam não impede o Idle Tracker de funcionar.
- O encerramento do sistema fica mais controlado.
- A aplicação se torna preparada para crescer com módulos independentes.
Ao pressionar CTRL + C, o sistema realiza um encerramento limpo:
- Sinaliza parada para as threads.
- Finaliza os monitores com segurança.
- Libera a webcam.
- Evita erros de interrupção mal tratados.
O WorkWatch foi pensado com separação de responsabilidades. Cada pasta possui uma função clara, facilitando manutenção, leitura e evolução.
WorkWatch/
│
├── README.md # Documentação principal do projeto
├── assets/
│ └── banner_Work.png # Banner visual do README
│
├── main.py # Orquestrador principal das threads e do shutdown limpo
│
├── config.json # Configurações gerais do sistema
│
├── monitor/
│ ├── window_tracker.py # Monitoramento da janela ativa
│ ├── presence_detector.py # Detecção de presença via webcam
│ ├── idle_tracker.py # Detecção de inatividade por teclado/mouse
│ └── multitask_analyzer.py # Planejado: análise de troca rápida de janelas
│
├── storage/
│ └── logs.csv # Arquivo consolidado de eventos
│
├── analyzer/
│ └── content_classifier.py # Planejado: classificação de produtividade
│
├── reports/
│ └── report_generator.py # Planejado: geração de relatórios
│
├── dashboard/
│ └── app.py # Planejado: dashboard local
│
└── utils/
├── config.py # Planejado: utilitário de configuração
└── logger.py # Planejado: utilitário centralizado de logs
flowchart TD
A[🚀 Início do sistema] --> B[⚙️ Carrega config.json]
B --> C{Módulos habilitados?}
C --> D[🪟 Thread: Monitor de Janelas]
C --> E[🎥 Thread: Detector de Presença]
C --> F[⏱️ Thread: Idle Tracker]
D --> G[🧾 Logs em CSV]
E --> G
F --> G
G --> H[📊 Base de análise]
H --> I[📈 Dashboard futuro]
H --> J[📄 Relatórios]
H --> K[🤖 Análise com IA]
classDef start fill:#020617,stroke:#00D9FF,color:#FFFFFF,stroke-width:2px;
classDef module fill:#0F172A,stroke:#38BDF8,color:#FFFFFF,stroke-width:2px;
classDef data fill:#111827,stroke:#22C55E,color:#FFFFFF,stroke-width:2px;
classDef future fill:#1E1B4B,stroke:#A855F7,color:#FFFFFF,stroke-width:2px;
class A,B,C start;
class D,E,F module;
class G,H data;
class I,J,K future;
mindmap
root((WorkWatch))
Monitoramento
Janela ativa
Programa executável
Troca de foco
Presença
Webcam
OpenCV
MediaPipe
Inatividade
Teclado
Mouse
GetLastInputInfo
Dados
CSV
Data e hora
Eventos consolidados
Evolução
Dashboard
Relatórios
Classificação de apps
IA
LGPD
| Tecnologia | Uso no Projeto |
|---|---|
| Python 3.10 | Linguagem principal do sistema. |
| pygetwindow | Captura da janela ativa. |
| psutil | Identificação de processos e programas em execução. |
| pywin32 | Acesso a recursos do Windows, PID e handle da janela. |
| OpenCV | Captura de imagem via webcam. |
| cvzone / MediaPipe | Detecção facial para presença. |
| ctypes | Acesso à API nativa do Windows para inatividade. |
| threading | Execução paralela dos módulos de monitoramento. |
| json | Configuração externa do sistema. |
| csv | Registro estruturado de eventos. |
| datetime | Registro de data e hora dos eventos. |
git clone https://github.com/Dinox75/WorkWatch.git
cd WorkWatchNo Windows:
python -m venv venv
venv\Scripts\activateCaso o projeto ainda não tenha um requirements.txt, instale manualmente as bibliotecas utilizadas:
pip install pygetwindow psutil pywin32 opencv-python cvzoneDependendo do ambiente, o
cvzonepode exigir dependências adicionais relacionadas ao MediaPipe.
python main.py- Projeto recomendado para ambiente Windows.
- O Idle Tracker usa API nativa do Windows.
- O detector de presença precisa de webcam disponível.
- A webcam deve ser liberada corretamente no encerramento.
- Bibliotecas como OpenCV, MediaPipe e pywin32 podem exigir ajustes de instalação dependendo do ambiente.
- O projeto está em desenvolvimento e pode passar por mudanças estruturais.
Com os dados registrados em CSV, o WorkWatch poderá evoluir para análises como:
|
|
|
- Melhorar o sistema centralizado de logs.
- Criar
requirements.txt. - Padronizar estrutura final dos eventos CSV.
- Criar camada de configuração em
utils/config.py. - Criar logger reutilizável em
utils/logger.py.
- Implementar detector de multitarefa.
- Criar classificador de programas produtivos, neutros e distrativos.
- Gerar relatórios simples por dia.
- Criar dashboard local com Flask ou Streamlit.
- Adicionar gráficos de atividade.
- Integrar análise com IA.
- Gerar relatórios automáticos em PDF.
- Criar alertas inteligentes.
- Implementar painel corporativo.
- Criar política de permissões e auditoria.
- Evoluir para uma solução profissional de produtividade e gestão de atividade.
O WorkWatch é um projeto de estudo e uso local. Apesar de lidar com monitoramento de atividade, seu uso deve sempre respeitar privacidade, transparência e legislação aplicável.
Para qualquer aplicação em ambiente corporativo real, é necessário considerar:
- Consentimento claro dos colaboradores.
- Política interna de monitoramento.
- Finalidade legítima e bem documentada.
- Transparência sobre quais dados são coletados.
- Segurança no armazenamento dos logs.
- Controle de acesso às informações.
- Conformidade com a LGPD.
- Auditoria e responsabilidade sobre o uso dos dados.
Monitoramento de produtividade deve ser usado para melhorar processos, apoiar gestão e entender padrões de trabalho, nunca para vigilância abusiva ou invasiva.
Este projeto reúne conceitos importantes para desenvolvimento Python e construção de sistemas reais:
- Organização modular de projeto.
- Manipulação de arquivos CSV e JSON.
- Monitoramento de processos do sistema operacional.
- Uso de webcam com OpenCV.
- Detecção facial com bibliotecas externas.
- Threads e execução paralela.
- Tratamento de encerramento com segurança.
- Separação de responsabilidades por módulos.
- Preparação de base de dados para análise futura.
- Pensamento de produto com visão de expansão.
Vinicius Lima
Estudante de Análise de Dados e Desenvolvimento de Sistemas, em evolução prática com Python, análise de dados, automação, Power BI, desenvolvimento de projetos para portfólio e soluções com visão profissional.
- GitHub:
https://github.com/Dinox75 - LinkedIn:
https://www.linkedin.com/in/vinicius-limajr/ - E-mail:
vibylima75@gmail.com - TikTok:
https://www.tiktok.com/@dinox_xv
Consulte o arquivo LICENSE deste repositório para mais informações.
16/05/2026
Desenvolvido por Vinicius Lima • Python • Monitoramento • Produtividade • Dados • Portfólio
