fix: restaura a chave "text" em Abstract.data - #1261
Merged
robertatakenaka merged 1 commit intoJul 30, 2026
Merged
Conversation
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
approved these changes
Jul 30, 2026
This was referenced Jul 31, 2026
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que esse PR faz?
Restaura a chave
"text"emAbstract.data(packtools/sps/models/v2/abstract.py), removida sem intenção pelo PR #1064.Histórico do problema:
bb3f0a2, 27/01/2026) adicionou a propertytexte a chave"text"emAbstract.data, com testes cobrindo resumo estruturado (<sec>) e simples (<p>).3827104, 12/02/2026, "Implementa validação completa de abstracts conforme SPS 1.10") substituiu a linha"text": self.text,porgraphic_href/fig_id/captionao adicionar suporte a Visual Abstract — sem perceber que isso derrubava o fix anterior. A propertytextem si nunca foi removida, só ficou órfã, sem ser incluída no dict retornado pordata.test_data_contains_text_key,test_data_text_value_with_sections,test_data_text_value_without_sections) ficaram falhando emmasterdesde então, sem bloquear merges subsequentes. Isso também zerou o texto do resumo de qualquer artigo processado com packtools ≥ 4.15.0 para consumidores externos como o scms-upload (ver [Migração de Artigos XMLs] Casos onde o texto do resumo não aparecem scms-upload#1031).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, propertydatada classeAbstract(linha ~277).Como este poderia ser testado manualmente?
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 todatests/sps/models/v2/(excetotest_notes.py, que já falha na coleta emmasterpor umModuleNotFoundErrornão relacionado a este PR) etests/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 campoabstract/abstractsdo 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 dep/sectionsquando a chavetextestá 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
textSegurança da informação (NSI.04)
Este PR manipula dados sensíveis ou pessoais (LGPD)?
Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?
Este PR introduz, atualiza ou remove dependências de terceiros?
Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?
Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?
Este PR expõe novos endpoints, telas ou serviços?
Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?