Skip to content

fix: corrige idioma do resumo de sub-article traduzido (#1329) - #1334

Open
Rossi-Luciano wants to merge 3 commits into
scieloorg:masterfrom
Rossi-Luciano:fix/1329-sub-article-abstract-lang
Open

fix: corrige idioma do resumo de sub-article traduzido (#1329)#1334
Rossi-Luciano wants to merge 3 commits into
scieloorg:masterfrom
Rossi-Luciano:fix/1329-sub-article-abstract-lang

Conversation

@Rossi-Luciano

Copy link
Copy Markdown
Contributor

O que esse PR faz?

Corrige XMLAbstracts.get_abstracts() (packtools/sps/validation/models/abstract.py), que rotulava incorretamente o idioma do resumo (<abstract>) de um <sub-article> traduzido — o resumo saía com o idioma do artigo principal em vez do idioma do sub-article. Isso corrompia o campo language consumido pelo Upload/scms-upload na página de TOC do fascículo, fazendo dois resumos em idiomas diferentes aparecerem com a mesma etiqueta de idioma.

Onde a revisão poderia começar?

packtools/sps/validation/models/abstract.py, método XMLAbstracts.get_abstracts(). O xpath original usava .// sobre o documento inteiro, misturando abstracts de sub-article com os do artigo principal; e quando o <abstract> do sub-article não tinha xml:lang próprio, caía no fallback self.lang (o idioma do artigo principal, não o do sub-article).

Como este poderia ser testado manualmente?

from lxml import etree
from packtools.sps.validation.models.abstract import XMLAbstracts

tree = etree.parse("caminho/para/artigo-com-sub-article-traduzido.xml")
for item in XMLAbstracts(tree).abstracts:
    print(item["lang"], "->", item["text"][:60])

Reproduzido e verificado localmente contra o XML real citado na issue (1518-8787-rsp-56-9.xml, de scieloorg/scms-upload): antes do fix, os dois resumos saíam como en/en; depois do fix, saem como en/pt.

Algum cenário de contexto que queira dar?

Relatado pela Roberta Takenaka em #1329: ao reprocessar o fascículo v56 da RSP no Upload, o resumo em português de um artigo apareceu marcado como inglês na página de TOC. O problema só ocorre com artigos vindos de XML com <sub-article> de tradução (não ocorre com artigos HTML, que passam por outro caminho de código).

Como efeito colateral positivo, o fix também corrige kwds vazios em resumos de sub-article (a busca de kwd-group usa o mesmo lang que estava incorreto).

Fora do escopo deste PR: packtools/sps/models/article_abstract.py::ArticleAbstract.get_sub_article_abstract tem bugs semelhantes e independentes, mas não está no caminho de código exercitado por esta issue — ficará para uma issue de follow-up.

Screenshots

Não aplicável (mudança de lógica interna, sem interface visual no packtools).

Quais são os tickets relevantes?

Closes #1329

Referências


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): pipeline de CI roda automaticamente ao abrir o PR

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)

get_abstracts() buscava abstract/trans-abstract em todo o documento via
.//, misturando os do sub-article com os do artigo principal. Quando o
<abstract> do sub-article não tinha xml:lang próprio (o idioma fica no
<sub-article xml:lang="..."> pai), o código caía no fallback self.lang,
que é o idioma do artigo principal, não o do sub-article.

Agora o método separa a busca em dois ramos: um para o artigo principal
(excluindo qualquer coisa dentro de sub-article) e outro para abstracts
de sub-article, resolvendo o lang a partir do próprio nó ou do
sub-article que o contém, nunca do artigo principal.
…icle (scieloorg#1329)

Cobre o caso relatado na issue: abstract de sub-article sem xml:lang
próprio deve usar o idioma do sub-article que o contém, não o do
artigo principal. Inclui um caso com múltiplos sub-articles (fixture
existente en/pt/es) e uma checagem de que XMLAbstractsValidation
continua funcionando com abstracts de sub-article presentes.
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.

[Modelos] Tradução do resumo com idioma incorreto

2 participants