Skip to content

Export crossmark data to articlemeta (crossmark_article collection)#1377

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/export-crossmark-data-to-articlemeta
Draft

Export crossmark data to articlemeta (crossmark_article collection)#1377
Copilot wants to merge 2 commits intomainfrom
copilot/export-crossmark-data-to-articlemeta

Conversation

Copy link
Contributor

Copilot AI commented Mar 5, 2026

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:
{
    "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"}
        }
    ]
}
  • Adds task_export_crossmark_article_to_articlemeta Celery task for async dispatch
  • Django migrations for both model changes

Onde a revisão poderia começar?

article/choices.pyarticle/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?

  1. Configure CrossRefConfiguration with a crossmark_policy URL for a DOI prefix (e.g. 10.1590)
  2. Ingest an article XML that contains <related-article related-article-type="retracted-article" ext-link-type="doi" xlink:href="10.1590/some-retraction"/>
  3. Verify RelatedArticle record has crossref_update_type = "retraction"
  4. 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-articlecorrection, updated-articlenew_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

Original prompt

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.

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="addendum">
      <doi>10.1590/addendum-example-001</doi>
      <date media_type="online">
        <month>03</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

2. clarification

Esclarece ambiguidade ou trecho confuso sem alterar conclusões.

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="clarification">
      <doi>10.1590/clarification-example-002</doi>
      <date media_type="online">
        <month>04</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

3. correction

Termo genérico para correção de erro não classificado abaixo.

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="correction">
      <doi>10.1590/correction-example-003</doi>
      <date media_type="online">
        <month>05</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

4. corrigendum

Correção formal de erros introduzidos pelos autores.

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="corrigendum">
      <doi>10.1590/corrigendum-example-004</doi>
      <date media_type="online">
        <month>06</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

5. erratum

Correção de erros introduzidos pela editora (tipografia, etc.).

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="erratum">
      <doi>10.1590/erratum-example-005</doi>
      <date media_type="online">
        <month>07</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

6. expression_of_concern

Editor expressa preocupação com integridade dos dados/metodologia.

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="expression_of_concern">
      <doi>10.1590/eoc-example-006</doi>
      <date media_type="online">
        <month>08</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

7. new_edition

Nova edição do trabalho (livro/monografia); substitui a anterior.

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="new_edition">
      <doi>10.1590/new-edition-example-007</doi>
      <date media_type="online">
        <month>09</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

8. new_version

Nova versão do registro (preprint → VoR, dataset atualizado, etc.).

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="new_version">
      <doi>10.1590/new-version-example-008</doi>
      <date media_type="online">
        <month>10</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

9. partial_retraction

Retratação de parte do artigo (seção, figura, experimento).

<crossmark>
  <crossmark_version>1</crossmark_version>
  <crossmark_policy>https://www.scielo.br/crossmark-policy</crossmark_policy>
  <updates>
    <update type="partial_retraction">
      <doi>10.1590/partial-retraction-example-009</doi>
      <date media_type="online">
        <month>11</month><year>2025</year>
      </date>
    </update>
  </updates>
</crossmark>

10. removal

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.

…ction)

Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Copilot AI changed the title [WIP] Export missing crossmark data to articlemeta Export crossmark data to articlemeta (crossmark_article collection) Mar 5, 2026
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.

2 participants