Skip to content

fix: omite VOL./issue vazio no rodapé do PDF quando o XML não tem o dado - #1326

Open
Rossi-Luciano wants to merge 1 commit into
scieloorg:masterfrom
Rossi-Luciano:fix/pdf-footer-empty-vol-issue-parens
Open

fix: omite VOL./issue vazio no rodapé do PDF quando o XML não tem o dado#1326
Rossi-Luciano wants to merge 1 commit into
scieloorg:masterfrom
Rossi-Luciano:fix/pdf-footer-empty-vol-issue-parens

Conversation

@Rossi-Luciano

@Rossi-Luciano Rossi-Luciano commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

O que esse PR faz?

Corrige o rodapé de páginas geradas pelo pdf_generator: quando o artigo não tem <volume> ou <issue> no XML (comum em artigos ahead-of-print/continuous publication), o rodapé imprimia o campo vazio mesmo assim — VOL. 86 () 2026: e301043 (parênteses vazios, sem issue) ou VOL. (67) 2023: e236720 (espaço duplo, sem volume).

docx_second_footer_pipe, docx_page_vol_issue_year_pipe e docx_supplementary_material_pipe montavam essa string com o mesmo f-string fixo em três lugares. Extraí um helper _format_vol_issue_year(footer_data) que omite o rótulo VOL. quando falta volume e os parênteses quando falta issue, e passei a reutilizá-lo nos três pontos.

Onde a revisão poderia começar?

packtools/sps/formats/pdf/pipeline/docx.py — a função _format_vol_issue_year (helpers privados, final do arquivo) e os três pontos que passaram a chamá-la.

Como este poderia ser testado manualmente?

python -m packtools.sps.formats.pdf_generator \
  -i <artigo-sem-issue-ou-volume>.xml \
  -l layout.docx \
  -o saida.pdf \
  --libreoffice-binary libreoffice

Conferir o rodapé da página 1 e das páginas internas.

Algum cenário de contexto que queira dar?

Encontrado revisando visualmente o corpus de teste de 26 artigos reais (layout_examples_rafael/corpus/): a5.xml (Brazilian Journal of Biology) não tem <issue> no front matter; a18.xml (Cadernos Pagu) não tem <volume>. Os dois casos reais de dado ausente que motivaram a correção.

Screenshots

item2_before_after

Quais são os tickets relevantes?

Nenhuma issue aberta associada; achado durante revisão visual do corpus de teste do gerador de PDF.

Referências

N/A


Segurança da informação (NSI.04)

Seção obrigatória. Marque as opções aplicáveis e justifique quando necessário. Referência: NSI.04 - Norma de Desenvolvimento Seguro.

Este PR manipula dados sensíveis ou pessoais (LGPD)?

  • Sim — descreva os controles de proteção aplicados (criptografia, mascaramento, anonimização, etc.):
  • Não

Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?

  • Sim — descreva o que mudou e por quê:
  • Não

Este PR introduz, atualiza ou remove dependências de terceiros?

  • Sim — as novas dependências foram verificadas no SBOM/Trivy sem vulnerabilidades críticas/altas em aberto?
    • Verificado e aprovado
    • Pendente / vulnerabilidade aceita com justificativa:
  • Não

Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?

  • Sim — link do job:
  • Não aplicável a este PR (justifique): mudança isolada de formatação de string, sem I/O externo ou entrada não confiável

Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?

  • Sim — confirme que há sanitização/parametrização (prepared statements, escaping, etc.):
  • Não

Este PR expõe novos endpoints, telas ou serviços?

  • Sim — HTTPS obrigatório está garantido e o acesso segue o princípio de menor privilégio?
  • Não

Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?

  • Não, nenhum segredo foi commitado
  • Sim (bloquear merge e corrigir antes de prosseguir)

🤖 Generated with Claude Code

https://claude.ai/code/session_01X8r2LRJ3PGTT9vLaPtb373

docx_second_footer_pipe, docx_page_vol_issue_year_pipe e
docx_supplementary_material_pipe montavam "VOL. {volume} ({issue})
{year}: {location}" sempre com os parenteses do issue, mesmo quando
footer_data['issue'] vinha vazio (artigos ahead-of-print/continuous
publication sem numero de fasciculo, ex.: a5.xml do corpus de teste,
que so tem <volume>). Resultado visivel: "VOL. 86 () 2026: e301043".

O mesmo padrao quebra na ausencia de volume (ex.: a18.xml, que so tem
<issue>): "VOL.  (67) 2023: e236720", com espaco duplo.

Adiciona _format_vol_issue_year(footer_data), reaproveitada nos tres
pontos, que omite o rotulo "VOL." quando falta volume e os parenteses
quando falta issue.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X8r2LRJ3PGTT9vLaPtb373
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant