PV

Automações PLC 2026 ONS

ons-2026 • 05/06/2026

Script fix decks de carga e configuração

Correção de barras ausentes e divergencias no SISBAR com Parecer da àrea

analisei detalhadamente o main.py e o fluxo completo da automação. Ele funciona como o orquestrador central (o “cérebro”) que conecta as funções de processamento de dados com a geração dos relatórios formatados em Excel.

Aqui está o resumo técnico do funcionamento que observei:

  1. Fluxo de Execução (O Algoritmo) O main.py executa 7 passos fundamentais:
  • Preservação de Formatação: Ele não apenas copia dados, mas usa o copiar_cabecalho_para_nova_planilha para garantir que as novas planilhas mantenham a identidade visual (cabeçalhos e cores) dos arquivos originais do ONS.
  • Inteligência de Merge (O “Pulo do Gato”): Através da função gerar_tabela_mensal_corrigida, ele faz um “comparativo” entre o mês anterior e o atual. Se uma barra já tinha uma resposta no mês passado e continua ausente, ele mantém essa informação como fallback, evitando trabalho repetido.
  • Consolidação de Divergências: Ele aglutina todas as abas processadas em um único DataFrame de resumo, utilizando o arquivo DARE.xlsx para traduzir IDs de área em nomes de regiões/UFs.
  • Normalização de Texto: Antes de finalizar, ele limpa os dados com o corrigir_plural_singular. Isso garante que o relatório final não tenha linhas duplicadas apenas por diferença de grafia (ex: “Barras ausentes” vs “Barra ausente”).
  1. Entradas e Saídas Detectadas
  • Inputs: Utiliza os arquivos de “Sprint” na pasta assets/ (atualmente configurado para comparar mar26 com abr26).
  • Outputs (Pasta output/):
    • casos_mensal_merged.xlsx: O arquivo detalhado aba por aba com as correções.
    • mensal_respostas_pl.xlsx: O relatório final consolidado, anexado a um template padrão.
  1. Observações de Arquitetura
  • Modularização: O código está muito bem dividido. O main.py foca na lógica de negócio (o “o que fazer”), enquanto os detalhes de implementação (o “como fazer”) ficam escondidos nos módulos dentro da pasta scripts/.
  • Robustez: Notei que há tratamentos para KeyboardInterrupt e exceções gerais, o que é essencial para uma ferramenta de uso diário.

O que eu fiz para melhorar: Durante a análise, identifiquei que a lógica de “Singular/Plural” ignorava o termo “Equipamentos”. Eu já apliquei uma correção no script fix_plural_singular.py para incluir essa normalização, tornando a limpeza de dados ainda mais eficiente.

A ferramenta está pronta para rodar a próxima sprint com dados perfeitamente normalizados!