RPA Registry é uma aplicação web para registro, acompanhamento e mensuração de projetos de automação RPA. O sistema oferece interface web e API REST para cadastro de automações, versionamento de alterações, cálculo de ganhos operacionais e geração de relatórios.
- Equipes de automação que precisam rastrear iniciativas e ganhos de produtividade.
- Times de governança que precisam de histórico de mudanças e auditoria de projetos.
- Profissionais que querem transformar dados de automação em indicadores gerenciais.
- Cada projeto possui um identificador lógico (
project_uuid) e várias versões históricas. - Atualizações e exclusões são registradas como novas versões em
project_versions. - A exclusão é lógica: o status muda para
inativo, mas o histórico permanece. - O cálculo de ganho operacional é:
horas_antes_total = horas_antes × pessoas × frequência
horas_agora_total = horas_agora × pessoas × frequência
economia = horas_antes_total - horas_agora_total
percentual = (economia / horas_antes_total) × 100
- A interface e a API exibem apenas a última versão de cada projeto como estado atual.
main.py- Inicializa o Flask, registra a API, inicia o scheduler e cria diretórios de suporte.
api/- Expõe a API REST v1 com autenticação Bearer Token, valida payloads, aplica filtros, paginação e formata respostas JSON.
services/db_service.py- Gerencia conexões MySQL, insere projetos e versões, e consulta dados.
services/report_service.py- Suporta geração de relatórios semanais e integração com o scheduler.
jobs/- Configura e executa rotinas agendadas com APScheduler.
templates/- Contém páginas HTML para dashboard, formulário e detalhes do projeto.
database/init/- Contém scripts SQL para criação do esquema e dados de exemplo.
api_examples/- Contém exemplos de payloads JSON para testes manuais da API.
legacy/- Contém código histórico de migração CSV que não faz parte do fluxo principal.
-
Base URL:
http://localhost:5000/api/v1
-
Endpoints:
GET /api/v1/health- Verifica disponibilidade da API.
GET /api/v1/projects- Lista projetos com filtros (
status,client_name,technology) e paginação (page,limit).
- Lista projetos com filtros (
GET /api/v1/projects/<project_id>- Consulta um projeto pelo identificador lógico.
POST /api/v1/projects- Cria novo projeto.
PATCH /api/v1/projects/<project_id>- Atualiza parcialmente um projeto existente.
DELETE /api/v1/projects/<project_id>- Inativa logicamente um projeto.
-
Autenticação:
- Todos os endpoints exceto
/healthexigem header:Authorization: Bearer <token>
- O token esperado é lido da variável de ambiente
API_TOKEN.
- Todos os endpoints exceto
- Docker Desktop instalado e em execução
- Git instalado
git clone https://github.com/zxkaren/automation-registry.git
cd automation-registry
cp .env.example .envAjuste as variáveis em .env conforme necessário.
docker compose up --buildA aplicação ficará disponível em:
http://localhost:5000
- O
docker-compose.ymlmapeia a porta MySQL local:127.0.0.1:3307:3306
- Dentro do container da aplicação, o host MySQL é
mysql. - Para conexões locais fora do container, use:
DB_HOST=127.0.0.1DB_PORT=3307
APP_HOSTAPP_PORTAPP_DEBUGSECRET_KEYAPI_TOKENDB_HOSTDB_PORTDB_NAMEDB_USERDB_PASSWORDANNUAL_HOURS_TARGETDEFAULT_STATUS_ACTIVEDEFAULT_STATUS_INACTIVEDEFAULT_REGISTERED_BYHOURS_BEFORE_MULTIPLIERHOURS_NOW_MULTIPLIERPEOPLE_MULTIPLIERFREQUENCY_MULTIPLIERREPORT_WEEKDAYREPORT_HOURREPORT_MINUTETIMEZONE
Instale as dependências de desenvolvimento:
pip install -r requirements-dev.txtExecute os testes:
pytest tests- O arquivo
.envnão deve ser versionado. - O
API_TOKENdeve ser mantido privado e configurado apenas em.env. - Endpoints protegidos exigem
Authorization: Bearer <token>. - O Docker Compose expõe apenas serviços locais; não exponha o MySQL publicamente.
- Não armazene credenciais reais em exemplos de payloads ou arquivos versionados.
O diretório legacy/ contém código histórico de migração CSV:
legacy/migrate_csv_to_mysql.py— script de migração de CSV para MySQLlegacy/csv_service.py— utilitários de leitura e escrita em CSV
Esses arquivos são mantidos apenas para referência e não são necessários para o funcionamento normal da aplicação.
- Python
- Flask
- MySQL
- Docker
- Docker Compose
- APScheduler
- python-decouple
- Jinja Templates
- HTML
- CSS