Skip to content

Criar módulo xml_fixer para coordenar correções e gerar relatórios #1039

@robertatakenaka

Description

@robertatakenaka

Descrição da nova funcionalidade

Como operador da migração, eu quero um utilitário de linha de comando que aplique correções automáticas em lote nos XMLs e gere relatórios detalhados para que possa corrigir problemas recorrentes em grandes volumes de arquivos de forma eficiente e rastreável.

Critérios de aceitação

  • Criar módulo /packtools/xml_fixer.py com classe XMLFixer
  • A classe deve coordenar as funções fix_inline_graphic_position e complete_pub_date
  • Deve criar backup automático antes de modificar arquivos com nomenclatura: {filename}_backup_{YYYYMMDD_HHMMSS}.xml
  • O diretório de backup deve ser configurável (padrão: ./backups)
  • Deve permitir desabilitar criação de backup via parâmetro --no-backup
  • Deve processar arquivos individuais ou todos XMLs de um diretório
  • Deve permitir selecionar quais correções aplicar via parâmetro --fixes
  • Deve gerar relatório em formato TXT (padrão) ou CSV mostrando: arquivo, timestamp, tipo de correção, xpath, ação realizada
  • Deve ter tratamento de erro robusto - se um arquivo falhar, continua processando os demais
  • Deve usar logging para mostrar progresso do processamento
  • Deve registrar comando xml_fixer no setup.py entry_points
  • Interface argpars deve aceitar: xml_fixer [arquivo|diretório] [opções]
  • Relatório TXT deve ter resumo final: total de arquivos, modificados, total de correções
  • Deve ter testes de integração cobrindo processamento de diretório e geração de relatórios
  • Sempre fazer backup
  • Nunca alterar o arquivo original

Anexos

Exemplo de uso CLI:

# Processar diretório com todas correções
xml_fixer /path/to/xmls/

# Aplicar apenas correção específica
xml_fixer /path/to/xmls/ --fixes inline-graphic

# Aplicar apenas correção específica
xml_fixer /path/to/xmls/ --fixes inline-graphic pub-date

# Gerar relatório CSV sem backup
xml_fixer article.xml --report fixes.csv --report-format csv

Referências

n/a

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions