Skip to content

fix: restaura a chave "text" em Abstract.data - #1261

Merged
robertatakenaka merged 1 commit into
scieloorg:masterfrom
Rossi-Luciano:fix/restore-abstract-text-key
Jul 30, 2026
Merged

fix: restaura a chave "text" em Abstract.data#1261
robertatakenaka merged 1 commit into
scieloorg:masterfrom
Rossi-Luciano:fix/restore-abstract-text-key

Conversation

@Rossi-Luciano

Copy link
Copy Markdown
Contributor

O que esse PR faz?

Restaura a chave "text" em Abstract.data (packtools/sps/models/v2/abstract.py), removida sem intenção pelo PR #1064.

Histórico do problema:

Este PR restaura só a linha "text": self.text,, mantendo os campos de Visual Abstract adicionados pelo #1064.

Onde a revisão poderia começar?

packtools/sps/models/v2/abstract.py, property data da classe Abstract (linha ~277).

Como este poderia ser testado manualmente?

pytest tests/sps/models/v2/test_abstract.py -v

Os 3 testes que estavam falhando (test_data_contains_text_key, test_data_text_value_with_sections, test_data_text_value_without_sections) voltam a passar. Também rodei toda tests/sps/models/v2/ (exceto test_notes.py, que já falha na coleta em master por um ModuleNotFoundError não relacionado a este PR) e tests/sps/validation/test_article_abstract.py: 71 passed, 1 skipped, sem regressões.

Algum cenário de contexto que queira dar?

Esse "vaivém" (adicionado em #1072, removido em #1064) provavelmente aconteceu porque a branch do #1064 foi criada antes do #1072 ser mesclado e não foi rebaseada antes do merge — o diff substituiu a linha original sem considerar que ela já tinha sido reintroduzida por outro PR nesse meio-tempo.

O impacto em produção: qualquer artigo publicado via scms-upload com packtools ≥ 4.15.0 (produção roda 4.16.4) desde 12/02/2026 teve o campo abstract/abstracts do payload de publicação vazio, mesmo com o XML contendo o resumo corretamente estruturado em <p>/<sec>. Já existe um fix defensivo do lado scms-upload (scieloorg/scms-upload#1034) com um fallback que recompõe o texto a partir de p/sections quando a chave text está ausente — mas a causa raiz é esta, e vale corrigir aqui para beneficiar outros consumidores do packtools também.

Screenshots

Não aplicável (correção de modelo de dados, sem interface).

Quais são os tickets relevantes?

Referências


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

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

  • Não

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

  • Não

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

  • Não

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

  • Não aplicável a este PR — mudança de uma linha em um dict já existente, sem nova superfície de ataque

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

  • Não

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

  • Não

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

  • Não, nenhum segredo foi commitado

A chave "text" de Abstract.data (packtools/sps/models/v2/abstract.py)
tinha sido adicionada pelo PR scieloorg#1072 (commit bb3f0a2, 27/01/2026), com
testes cobrindo o caso estruturado (<sec>) e o caso simples (<p>).
Dezesseis dias depois, o PR scieloorg#1064 (commit 3827104, 12/02/2026,
"Implementa validação completa de abstracts conforme SPS 1.10")
substituiu essa linha por graphic_href/fig_id/caption ao adicionar
suporte a Visual Abstract - sem perceber que isso derrubava o fix
anterior. A property `text` em si nunca foi removida, só ficou órfã,
sem ser incluída no dict retornado por `data`.

Como consequência, os 3 testes adicionados pelo PR scieloorg#1072 para essa
chave (test_data_contains_text_key, test_data_text_value_with_sections,
test_data_text_value_without_sections, em
tests/sps/models/v2/test_abstract.py) ficaram falhando em master desde
então, sem que isso bloqueasse merges. Isso também apagou o texto do
resumo de qualquer artigo/coleção processado com packtools >= 4.15.0,
consumido por integrações externas como o scms-upload (ver
scieloorg/scms-upload#1031).

Restaura apenas a linha "text": self.text, mantendo os campos de
Visual Abstract adicionados pelo PR scieloorg#1064. Os 3 testes voltam a
passar; toda a suíte de tests/sps/models/v2/ e
tests/sps/validation/test_article_abstract.py continua passando.

Refs: scieloorg/scms-upload#1031, scieloorg#1064, scieloorg#1072

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@robertatakenaka
robertatakenaka merged commit b586ba9 into scieloorg:master Jul 30, 2026
2 checks passed
Rossi-Luciano added a commit to Rossi-Luciano/scms-upload that referenced this pull request Aug 3, 2026
document.py voltava a extrair texto de abstract manualmente
(packtools.sps.validation.models.abstract.Abstract + XPath e fallback
próprios) porque o packtools 4.16.8 não expunha a chave "text" e nunca
lia resumos sem wrapper <p>/<sec> (caso legado da coleção URY).

Os dois problemas foram corrigidos no packtools:
- chave "text" restaurada em scieloorg/packtools#1261 (4.16.9)
- texto sem <p>/<sec> extraído em scieloorg/packtools#1272 (4.16.11)

Com o pin subindo para 4.16.11, get_abstracts() volta a usar
XMLAbstracts(self.xmltree).get_abstracts() diretamente, transparente,
como antes deste bug — sem duplicar lógica de extração que pertence ao
packtools, conforme apontado no review de scieloorg#1034.

Refs: scieloorg#1031, scieloorg/packtools#1261, scieloorg/packtools#1272
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants