O projeto foi transformado em biblioteca sem abandonar o fluxo original. A arquitetura procura manter a implementação pequena e fácil de entender.
config.py- Contém
ProcessorConfigeDatabaseConfig. - É usada tanto pela API quanto pela CLI.
parser.py- Lê o texto da primeira página do PDF.
- Aplica regex para extrair número e data.
processor.py- Descobre os arquivos.
- Coordena o parsing.
- Trata falhas por arquivo sem abortar o lote inteiro.
- Delega exportação para Excel e persistência opcional em banco.
excel.py- Converte os registros em um arquivo
.xlsx.
database.py- Gerencia conexão MySQL e inserção dos registros.
cli.py: entrada via terminal.__init__.py: API pública do pacote.legacy.py: helper de compatibilidade com o estilo do projeto original.
CLI ou API Python
|
v
ProcessorConfig / DatabaseConfig
|
v
InvoiceProcessor.process()
|
+--> descobrir PDFs
+--> processar cada PDF
+--> opcionalmente inserir no MySQL
+--> exportar registros para Excel
v
ProcessingResult
- O processamento em lote continua resiliente: um arquivo ruim não derruba os demais.
- O parsing continua simples: primeira página + regex, preservando o espírito do projeto original.
- Os pontos de extensão ficam claros: regex, recursão, persistência em banco e funções públicas auxiliares.