Adds the missing data pipeline to export Crossref CrossMark update information (errata, retractions, partial retractions, etc.) to a dedicated crossmark_article MongoDB collection, keeping it separate from the main articles collection.
O que esse PR faz?
Stores CrossMark update type (retraction, erratum, partial_retraction, etc.) on RelatedArticle via a new crossref_update_type field, auto-populated from a JATS related-article-type → Crossref update type mapping during XML ingestion
Adds crossmark_policy URL to CrossRefConfiguration (per DOI prefix), exposed via get_crossmark_policy(prefix)
Introduces build_crossmark_data() + export_crossmark_article_to_articlemeta() in article/controller.py that assemble and upsert the document:
Configure CrossRefConfiguration with a crossmark_policy URL for a DOI prefix (e.g. 10.1590)
Ingest an article XML that contains <related-article related-article-type="retracted-article" ext-link-type="doi" xlink:href="10.1590/some-retraction"/>
Verify RelatedArticle record has crossref_update_type = "retraction"
Call export_crossmark_article_to_articlemeta(user, article) and confirm a document exists in the crossmark_article MongoDB collection with the expected structure
Algum cenário de contexto que queira dar?
The JATS related-article-type vocabulary does not align 1:1 with Crossref CrossMark update type. Ambiguous cases (corrected-article → correction, updated-article → new_version) use the closest semantic equivalent. The mapping lives in choices.JATS_TO_CROSSREF_UPDATE_TYPE and can be refined editorially. The crossref_update_type field can also be set explicitly (e.g. via <custom-meta>) to override the auto-mapped value.
Screenshots
N/A — backend-only data pipeline.
Quais são tickets relevantes?
Exportar dados referentes a crossmark para o articlemeta
This section details on the original issue you should resolve
<issue_title>Exportar dados referentes a crossmark para o articlemeta</issue_title>
<issue_description>### Descrição da tarefa
Exportar dados referentes a crossmark para o articlemeta.
Considerando que para gerar o crossmark, há certos dados que atualmente não existem no articlemeta, precisamos exportar os dados faltantes para o articlemeta, e estes dados podem ser extraídos do XML do SPS Package, dados do Journal e dados de configuração crossref / crossmark.
Então,
identifique os dados faltantes
estes dados faltantes devem ser modelados e inseridos em uma nova coleção (crossmark_article) do mongodb para evitar conflito ou perda se registrado no mesmo documento mongodb
1. addendum
Informação adicional relevante publicada após o artigo original.
Conteúdo removido (legal, segurança nacional, etc.); DOI mantido.
<crossmark...
</details>
<!-- START COPILOT CODING AGENT SUFFIX -->
- Fixes scieloorg/core#1376
<!-- START COPILOT CODING AGENT TIPS -->
---
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.
CopilotAI
changed the title
[WIP] Export missing crossmark data to articlemeta
Export crossmark data to articlemeta (crossmark_article collection)
Mar 5, 2026
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
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.
Adds the missing data pipeline to export Crossref CrossMark update information (errata, retractions, partial retractions, etc.) to a dedicated crossmark_article MongoDB collection, keeping it separate from the main articles collection.
O que esse PR faz?
{ "code": "S0000-00002025000100001", # pid_v2 "collection": "scl", "doi": "10.1590/original-doi", "crossmark_policy": "https://www.scielo.br/crossmark-policy", "updates": [ { "update_type": "retraction", "doi": "10.1590/retraction-001", "date": {"year": "2025", "month": "03"} } ] }Onde a revisão poderia começar?
article/choices.py → article/models.py (RelatedArticle) → article/sources/xmlsps.py (add_related_articles) → article/controller.py (build_crossmark_data, export_crossmark_article_to_articlemeta)
Como este poderia ser testado manualmente?
Algum cenário de contexto que queira dar?
The JATS related-article-type vocabulary does not align 1:1 with Crossref CrossMark update type. Ambiguous cases (corrected-article → correction, updated-article → new_version) use the closest semantic equivalent. The mapping lives in choices.JATS_TO_CROSSREF_UPDATE_TYPE and can be refined editorially. The crossref_update_type field can also be set explicitly (e.g. via <custom-meta>) to override the auto-mapped value.
Screenshots
N/A — backend-only data pipeline.
Quais são tickets relevantes?
Exportar dados referentes a crossmark para o articlemeta
Referências
- Crossref CrossMark schema
- JATS related-article-type attribute values
Original promptThis section details on the original issue you should resolve
<issue_title>Exportar dados referentes a crossmark para o articlemeta</issue_title>
<issue_description>### Descrição da tarefa
Exportar dados referentes a crossmark para o articlemeta.
Considerando que para gerar o crossmark, há certos dados que atualmente não existem no articlemeta, precisamos exportar os dados faltantes para o articlemeta, e estes dados podem ser extraídos do XML do SPS Package, dados do Journal e dados de configuração crossref / crossmark.
Então,
1. addendum
Informação adicional relevante publicada após o artigo original.
2. clarification
Esclarece ambiguidade ou trecho confuso sem alterar conclusões.
3. correction
Termo genérico para correção de erro não classificado abaixo.
4. corrigendum
Correção formal de erros introduzidos pelos autores.
5. erratum
Correção de erros introduzidos pela editora (tipografia, etc.).
6. expression_of_concern
Editor expressa preocupação com integridade dos dados/metodologia.
7. new_edition
Nova edição do trabalho (livro/monografia); substitui a anterior.
8. new_version
Nova versão do registro (preprint → VoR, dataset atualizado, etc.).
9. partial_retraction
Retratação de parte do artigo (seção, figura, experimento).
10. removal
Conteúdo removido (legal, segurança nacional, etc.); DOI mantido.