App de bandeja (system tray) para Windows que monitora suas tarefas no Redmine em tempo real. Exibe contagens por status, lista todas as tarefas agrupadas, verifica Units/Forms, mostra métricas detalhadas de cada tarefa (tempo por status e quantidade de vezes que foi ao Refazer) e notifica quando uma tarefa muda de status. So permite uma instancia rodando por vez.
- Windows 10 ou superior
- Python 3.8 até 3.12 — https://python.org (Python 3.13+ não é suportado)
- Redmine com API REST habilitada
git clone <url-do-repositorio>
cd taskMonitor_readminepip install -r requirements.txtCrie o arquivo config.py a partir do exemplo:
copy config.exemplo.py config.pyEdite o config.py com seus dados:
SECRET_REDMINE_URL = "http://localhost:3000" # URL do seu Redmine
SECRET_API_KEY = "sua_chave_aqui" # Chave de API do RedminePara obter a chave: acesse seu Redmine > nome de usuário > Minha conta > Chave de acesso API
config.pyestá no.gitignore— nunca commite suas credenciais.
pythonw redmine_tray.pyUse pythonw (sem console) ou python (com console, útil para ver erros/logs).
Requer o PyInstaller instalado (pip install pyinstaller):
pyinstaller redmine_tray.spec --noconfirmO executável é gerado em dist\redmine_tray.exe. Ele empacota icon.png e config.py, então rebuilde sempre que alterar essas credenciais ou o ícone. Pode copiar o .exe para onde quiser (ex: área de trabalho) e rodar direto — o ícone e as credenciais são resolvidos automaticamente, sem depender do diretório de trabalho.
A configuração de status (
status_map.json) e gravada do lado do.exeem execução, então editar status pela UI (veja Configuração dos status) não precisa de rebuild.
Dê duplo clique no iniciar.bat. Ele irá automaticamente:
- Verificar se o Python está instalado
- Criar o
config.pya partir do exemplo (se não existir) e abrir o Notepad para você preencher - Instalar as dependências (
pip install -r requirements.txt) - Criar um atalho "Redmine Tray Monitor" na área de trabalho
- Iniciar o app na bandeja do sistema
Nas próximas vezes, use o atalho da área de trabalho diretamente.
Dê duplo clique no build.bat sempre que alterar o código e precisar de um novo executável. Ele automaticamente:
- Encerra qualquer instância do
redmine_tray.exeem execução - Limpa
dist/ebuild/antigos - Roda o PyInstaller (
redmine_tray.spec) - Copia o novo
.exepara a área de trabalho (%USERPROFILE%\Desktop\redmine_tray.exe) - Pergunta se deseja iniciar o app na hora
| Acao | Resultado |
|---|---|
| Clique duplo no icone | Abre popup com contagem por status |
| Botao direito > Ver tarefas | Abre popup com contagem por status |
| Botao direito > Verificar Forms | Abre janela de Units/Forms com tarefas |
| Botao direito > Listar Tarefas | Lista todas as tarefas agrupadas por status (clicavel) |
| Botao direito > Atualizar agora | Forca atualizacao imediata |
| Botao direito > Configurar Status | Abre a janela para editar o mapeamento de status (veja abaixo) |
| Botao direito > Sair | Encerra o app |
| Icone | Significado |
|---|---|
| Normal | Nenhuma mudanca desde a ultima verificacao |
| Com alerta | Houve mudanca em algum status |
Tentar abrir uma segunda instancia (ex: clicar de novo no atalho) mostra um aviso e nao abre uma bandeja duplicada.
Sempre que uma tarefa atribuida a voce mudar de status entre uma verificacao e outra, uma notificacao nativa do Windows aparece com o numero da tarefa e a transicao (ex: #10310 — Testando → Refazer). Se varias tarefas mudarem no mesmo ciclo, as 5 primeiras geram notificacao individual e o restante e resumido em uma notificacao extra.
Exibe a contagem de tarefas por status e totalizadores de Abertas e Total. Status que sofreram alteracao desde a ultima verificacao ficam destacados em vermelho.
Exibe todas as tarefas atribuidas a voce agrupadas por status. Os grupos comecam recolhidos — clique no header do status para expandir. No inicio de cada linha aparece, quando aplicavel, um badge vermelho com o numero de vezes que a tarefa foi ao status Refazer. Clique em qualquer tarefa para abrir as metricas.
Aberta ao clicar em uma tarefa na listagem. Exibe:
- Quantas vezes a tarefa foi ao status Refazer
- Status atual da tarefa (destacado em negrito)
- Tabela com tempo total e quantidade de entradas em cada status (Analisar, Fazer, Fazendo, Testar, Testando, Refazer, Refazendo, Aprovado)
Apenas uma janela de metricas pode estar aberta por vez. ESC fecha a janela.
Lista todas as Units/Forms que possuem tarefas atribuidas a voce, agrupadas por form com indicacao visual:
| Badge | Significado |
|---|---|
| Liberada | Todas as tarefas do form estao aprovadas |
| Conflito de tarefas | Ha tarefas em status de bloqueio |
| Em progresso | Tarefas em andamento sem conflito |
Cada Redmine pode ter nomes de status customizados (foi exatamente isso que causou a tarefa "Fazer" sumir do monitor em uma versao anterior). Em vez de editar codigo e recompilar, use Botao direito na bandeja > Configurar Status:
- Para cada label exibida (Fazer, Fazendo, Testar...), digite o nome exato do status no seu Redmine
- Clique em Verificar nomes para validar contra os status reais do Redmine (campos invalidos ficam destacados em vermelho)
- Clique em Salvar — aplica na proxima atualizacao automatica (ou em "Atualizar agora"), sem precisar reiniciar o app
Veja os nomes exatos em: Administracao > Status das issues, no seu Redmine.
A configuração fica salva em status_map.json, ao lado do .exe (ou na raiz do projeto, se rodando via python/pythonw). Esse arquivo é específico de cada máquina e está no .gitignore. Restaurar padrão apaga essa customização e volta aos valores padrão do código.
Editar
STATUS_MAPdiretamente emapp/settings.py(e recompilar) ainda funciona como fallback/padrão de fábrica, mas não é mais necessário no dia a dia.
O intervalo de atualizacao automatica esta definido em CHECK_INTERVAL = 30 (segundos) em app/settings.py.
- Pressione
Win + Re digiteshell:startup - Copie o atalho criado na area de trabalho para essa pasta (ou crie um novo atalho apontando para
redmine_tray.exeou pararedmine_tray.py)
| Problema | Solucao |
|---|---|
| Icone nao aparece | Verifique se pystray e Pillow foram instalados |
| Contagens sempre zero | Confirme os nomes dos status em Configurar Status (use "Verificar nomes") |
| Erro de conexao | Verifique SECRET_REDMINE_URL e se a API REST esta habilitada |
| Chave invalida | Regere a chave em "Minha conta" no Redmine |
| Python nao encontrado | Instale o Python em https://python.org e marque "Add to PATH" |
| Erro ao iniciar com Python 3.13+ | Use Python 3.12 ou inferior — versoes acima nao sao suportadas |
| "App ja esta em execucao" ao abrir | Ja existe uma instancia rodando — procure o icone na bandeja (pode estar oculto no menu de icones ocultos do Windows) |
| Notificacoes nao aparecem | Confira se as notificacoes do Windows estao habilitadas para apps em segundo plano (Configuracoes > Sistema > Notificacoes) |