Skip to main content

CLI para geração de estrutura de projetos RPA

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

rpa-arc

PyPI - Version PyPI - Python Version PyPI - License PyPI - Status

rpa-arc é a ferramenta definitiva para iniciar projetos RPA em Python. Com um único comando, ela cria uma arquitetura robusta, escalável e pronta para produção.

"Sem firula, na lata: one command and you are ready to automate."

🚀 Por que rpa-arc?

  • Zero Config: Esqueça o boilerplate. Instale e rode.
  • Padronização: Todos os bots da sua equipe seguindo a mesma estrutura.
  • Features Enterprise: Logs rotacionados, Driver com auto-healing, API Client com retry.
  • Flexível: Suporta desde scripts simples até arquiteturas complexas em containers.

📦 Instalação

pip install rpa-arc

🛠️ Uso

Criar Novo Projeto

Para criar um novo projeto em uma pasta específica:

rpa-arc meu-novo-bot

Isso criará a pasta meu-novo-bot/ com toda a estrutura dentro.

Na Pasta Atual

Se você já criou a pasta e quer apenas popular a estrutura nela:

# Estando dentro da pasta do projeto
rpa-arc

Opções Avançadas

  • -f, --force: Adiciona arquivos faltantes sem sobrescrever os existentes. Útil para atualizar projetos antigos.
  • -m, --minimal: Cria uma versão "leve" da estrutura, sem arquivos Docker e sem o módulo de API. Ideal para bots locais simples.
# Exemplo: Atualizar estrutura de um projeto existente sem perder código
rpa-arc --force

# Exemplo: Criar bot simples sem Docker/API
rpa-arc bot-simples --minimal

📂 Estrutura Gerada

Abaixo, a arquitetura completa gerada pela ferramenta:

meu-projeto/
├── src/
│   ├── app/
│   │   └── app.py           # Onde seu código de negócio reside
│   ├── core/
│   │   ├── logger.py        # Logger configurado com TimedRotatingFileHandler
│   │   └── driver.py        # Wrapper do Selenium com gestão avançada
│   ├── api/
│   │   └── Api.py           # (Opcional) Cliente HTTP com Retry e Auth JWT
│   ├── integracoes/         # Espaço para integrações com sistemas terceiros
│   └── utils/               # Funções auxiliares
├── config/
│   └── config.py            # Configurações centralizadas com Pydantic BaseSettings
├── dados/                   # Diretório padrão para downloads e inputs
├── logs/                    # Logs gerados (ignorados no git)
├── tests/                   # Testes unitários
├── .env                     # Variáveis de ambiente (template)
├── .gitignore               # Ignora venv, logs, pycache, etc.
├── Dockerfile               # (Opcional) Pronto para deploy
├── main.py                  # Entrypoint simples
├── readme.md                # Documentação inicial do seu bot
└── requirements.txt         # Dependências do projeto

✨ Funcionalidades do Core

1. Gerenciador de Navegador (src.core.driver)

O GerenciadorNavegador não é apenas um wrapper do Selenium. Ele resolve as dores de cabeça comuns de RPA:

  • Gestão de Temp Files: Cria perfis de usuário temporários (user-data-dir) isolados para evitar conflitos de cache/sessão entre execuções paralelas.
  • Auto-Cleanup: Limpa diretórios temporários antigos e mata processos órfãos do Chrome.
  • Modo Headless: Detecta ambiente Linux e ativa headless automaticamente se necessário.
  • Fallback: Se o diretório de perfil falhar, ele tenta um modo de recuperação automaticamente.
from src.core.driver import GerenciadorNavegador

# Inicia navegador (baixa driver automaticamente se necessário)
nav = GerenciadorNavegador()
driver = nav.obter_navegador()

driver.get("https://google.com")

2. Logger Robusto (src.core.logger)

Logs são a vida do RPA. O nosso logger já vem com:

  • Rotação Diária: Arquivos separados por dia (2024-02-01.log).
  • Timezone Aware: Configurado para America/Sao_Paulo por padrão (ajustável via .env).
  • Dual Output: Escreve no arquivo e no console simultaneamente.
from src.core.logger import Logger

log = Logger().get_logger()
log.info("Processo iniciado")
log.error("Falha ao encontrar seletor X")

3. Configuração Centralizada (config.config)

O arquivo config/config.py utiliza Pydantic BaseSettings para gerenciar todas as configurações da aplicação de forma tipo-segura:

  • Validação automática: Pydantic valida tipos e valores ao carregar do .env
  • Defaults inteligentes: Valores padrão sensatos para cada variável
  • Carregamento de .env: Automático via python-dotenv
  • Type hints: Autocomplete total na IDE
from config.config import settings

print(settings.BASE_URL_API_RPA)
print(settings.LOG_LEVEL)  # DEBUG, INFO, WARNING, ERROR

4. API Client (src.api.Api)

Disponível na estrutura completa.

Um cliente HTTP Wrapper sobre o requests que implementa:

  • Auth JWT: Gerencia tokens Bearer e renova automaticamente se expirados (via método CheckToken).
  • Smart Retry: Tenta novamente em caso de falhas de rede ou Rate Limit (429), com backoff exponencial.
  • Integração S3: Métodos prontos para upload de arquivos de log.

⚙️ Configuração (.env e config.py)

O sistema utiliza dois arquivos de configuração em conjunto:

1. .env (na raiz)

Contém as variáveis de ambiente. Um template é gerado automaticamente:

# Credenciais da API (se usar)
BASE_URL_API_RPA="https://api..."
USERNAME_API_RPA=user
PASSWORD_API_RPA=pass

# Configuração de Log
LOG_LEVEL=DEBUG
LOG_TZ=America/Sao_Paulo

# Chrome RPA
RPA_MAX_CHROME_TABS=10
RPA_MAX_CHROME_PROCESSES=50
RPA_CHROME_MONITOR_INTERVAL_SECONDS=5

2. config/config.py (Pydantic BaseSettings)

Carrega e valida as variáveis do .env com type safety:

from config.config import settings

# Acesso às configurações (type-safe)
base_url = settings.BASE_URL_API_RPA
log_level = settings.LOG_LEVEL
max_tabs = settings.RPA_MAX_CHROME_TABS

Todas as variáveis carregam do .env e têm valores padrão sensatos definidos.

🐳 Docker

A estrutura completa já inclui um Dockerfile otimizado baseado em python:3.12-slim. Ele instala as dependências de sistema necessárias para o Chrome rodar em ambiente Linux (Debian/Ubuntu), incluindo fontes e libs gráficas.

Para rodar:

docker build -t meu-bot .
docker run --rm meu-bot

📋 Changelog

v0.2.0+ (Recentes)

  • config.py automático: O arquivo config/config.py é criado automaticamente com classe Pydantic Settings para gerenciamento de configurações.
  • Suporte a Pydantic BaseSettings: Validação de tipo e valores automática via .env.

v0.1.0 (Base)

  • Estrutura base com logger, driver, API client e CLI.
  • Suporte a Docker e arquivos de CI/CD.

🤝 Contribuição

Sua ajuda é bem-vinda!

  1. Fork o projeto.
  2. Crie uma branch (git checkout -b feature/NovaFeature).
  3. Commit (git commit -m 'Add NovaFeature').
  4. Push (git push origin feature/NovaFeature).
  5. Abra um Pull Request.

📝 Licença

MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rpa_arc-0.9.0.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rpa_arc-0.9.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file rpa_arc-0.9.0.tar.gz.

File metadata

  • Download URL: rpa_arc-0.9.0.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for rpa_arc-0.9.0.tar.gz
Algorithm Hash digest
SHA256 872095595cc42f7dd015dde44d0c6252d1a28dd6b8f1ce5dae9b0aaa2fa4143f
MD5 bf77917fd71408e2143755f8c20fcfa7
BLAKE2b-256 6f1c4acf03cd8213346b258785e796bf70fc42b146bd0d3306054c3479812c53

See more details on using hashes here.

File details

Details for the file rpa_arc-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: rpa_arc-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for rpa_arc-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6cc44cbc76c9a0fbe4077f5de4db3e8031781d01cc8b203d5e76cb2747d51e69
MD5 f269d9491ec16f3917dc70b5aede5e26
BLAKE2b-256 81f59efe8cc5da7ad40a7dbff9bdcfd9b26cbb1b02f5350ef08e3d4fb4eb7ce3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page