Componentes do Framework¶
O BeaPro é organizado em módulos focados, cada um responsável por um aspecto específico do ciclo de vida da automação.
bot.py: Orquestrador Principal¶
O ponto de entrada da automação. Ele coordena o fluxo de execução completo:
- Chama
initialize()para configurar o ambiente - Itera pelos itens da fonte de dados
- Chama
process_item(item)para cada item - Trata exceções automaticamente
- Chama
finalize()para limpar e reportar resultados
Geralmente você não precisa modificar bot.py: sua lógica de automação vai em framework/process.py.
/process.py: Lógica de Automação¶
É aqui que você adiciona seus passos de automação.
A função process_item(item) é chamada uma vez por item na sua fonte de dados. Acesse os campos do item usando chaves de dicionário:
def process_item(item):
name = item['name']
email = item['email']
# ... seus passos de automação aqui
/state.py: Gerenciamento de Estado¶
Gerencia o estado de execução compartilhado entre todos os módulos:
- Contadores de sucesso e erro
- Item sendo processado atualmente
- Instâncias do bot (
WebBot,DesktopBot) - Verificação de interrupção
- Cálculo do status da tarefa (
SUCCESS,FAILED,PARTIALLY_COMPLETED)
O objeto STATE é importado onde quer que o estado compartilhado seja necessário.
/exceptions.py: Tipos de Exceção¶
Define três tipos de exceção personalizados que controlam como o loop de execução responde a erros:
| Exceção | Quando Usar | Comportamento |
|---|---|---|
BusinessException |
Erros de validação, dados inválidos, falhas esperadas | Registra o erro, continua para o próximo item |
SystemException |
Falhas técnicas, travamentos da aplicação | Registra o erro, reinicia a inicialização, continua |
InterruptException |
Solicitação de interrupção do Orchestrator | Registra um aviso, para a execução graciosamente |
from framework.exceptions import BusinessException, SystemException
if not item.get('email'):
raise BusinessException("E-mail não encontrado")
if not app_is_running():
raise SystemException("A aplicação alvo não está respondendo")
/datasources.py: Fontes de Dados¶
Fornece duas classes de fonte de dados prontas para uso e uma classe base para implementações personalizadas.
CSVSource¶
Lê itens de um arquivo CSV, retornando cada linha como um dicionário com as colunas como chaves.
- Gera um CSV de resultado com colunas
STATUS,MESSAGEeTIMESTAMP - Reporta sucesso e falha por item automaticamente
DatapoolSource¶
Busca itens de um Datapool do BotCity no Orchestrator.
- Reporta o status do item de volta ao Orchestrator automaticamente
- Suporta o ciclo de vida completo do Datapool
Fontes de Dados Personalizadas¶
Estenda BaseSource e implemente __iter__, __next__, report_success e report_error para conectar a qualquer banco de dados, API ou sistema externo.
/initialize.py: Inicialização¶
Configura o ambiente de automação no início de cada execução e após uma reinicialização disparada por uma SystemException:
- Cria as pastas
output/etemp/ - Configura o logging
- Inicializa
WebBotouDesktopBot - Abre a aplicação alvo e realiza os passos de login necessários
Personalize init_webbot() para configurar o navegador:
/finalize.py: Finalização¶
Executado ao final de cada execução para encerrar graciosamente:
- Fecha navegadores e aplicações abertas
- Faz upload dos arquivos de resultado (logs, CSVs, screenshots) para o BotCity Orchestrator
- Envia o relatório final de status da tarefa (
SUCCESS,FAILEDouPARTIALLY_COMPLETED)
/status_handling.py: Handlers de Exceção¶
Contém os handlers invocados pelo bot.py quando cada tipo de exceção ocorre:
- Registra erros com contexto completo
- Envia alertas ao BotCity Orchestrator (
ERRORpara falhas,WARNpara interrupções) - Captura screenshots em caso de erros e salva em
temp/ - Reporta sucesso ou falha de volta à fonte de dados
Personalize esses handlers para adicionar notificações por e-mail, atualizações em bancos de dados externos, lógica de retry ou alertas específicos do negócio.
/logger.py: Logging¶
Configura saída de log dupla para cada execução:
- Logs em arquivo: Gravados em
output/Log_BotCity_task-{task_id}_date-{timestamp}.log - Logs do Orchestrator: Transmitidos em tempo real para o Log de Execução do BotCity Orchestrator
As entradas de log incluem timestamps, nomes de módulos e funções para rastreamento e depuração facilitados.
Arquivos de Saída¶
Todos os arquivos de saída são gravados na pasta output/ e automaticamente enviados ao BotCity Orchestrator como Arquivos de Resultado ao final da execução.
| Arquivo | Descrição |
|---|---|
Log_BotCity_task-{id}_date-{ts}.log |
Log completo de execução com timestamps |
CSV_BotCity_task-{id}_date-{ts}.csv |
Dados originais mais colunas STATUS, MESSAGE e TIMESTAMP se um CSV for utilizado |
temp/*.png |
Screenshots capturadas automaticamente em exceções |