Skip to content

Separar a tarefa task_dispatch_articles em task_harvest_articles e task_dispatch_articles #1459

Description

@robertatakenaka

Refatoração do pipeline de artigos: article, controller e tasks

Contexto

O ArticleIteratorBuilder atual usa um único __iter__ que dispara todos
os iteradores de seleção (harvest, article_source, pid_provider, article)
simultaneamente. Isso permite que o mesmo artigo/pp_xml_id seja
selecionado por mais de uma fonte na mesma execução, gerando risco de
processamento duplicado e dificultando o rastreio de qual fonte originou
cada despacho.

Além disso, ArticleSource depende do modelo legado AMArticle
(am_article FK), o que acopla o pipeline novo a uma estrutura em
desuso, e há bastante logging.info/logging.exception de baixo valor
espalhado pelo código, dificultando a leitura dos logs relevantes.

Objetivo

  • Separar o fluxo de harvest (coleta externa via OPAC/ArticleMeta) do
    fluxo de despacho das fontes internas pendentes, criando a task
    task_harvest_articles e simplificando task_dispatch_articles.
  • Eliminar a sobreposição entre iteradores, tornando explícita qual fonte
    está sendo usada em cada chamada (from_pid_provider, from_article,
    from_article_source, from_harvest).
  • Desacoplar ArticleSource de AMArticle, substituindo por pid e
    collection.
  • Reduzir logging redundante e simplificar o tratamento de erros em
    add_pid_provider, request_xml e request_pid.
  • Cobrir o novo comportamento com testes unitários (unittest.mock),
    suprimindo ruído de logging do OpenSearch nos testes.

Escopo

  • article/controller.py
  • article/models.py
  • article/tasks.py
  • article/wagtail_hooks.py
  • article/migrations/0050_remove_articlesource_am_article_and_more.py
  • article/tests/test_article_iterator_builder.py
  • article/tests/test_article_pipeline.py
  • bigbang/tasks_scheduler.py
  • journal/models.py
  • pid_provider/choices.py

Critérios de aceite

  • Nenhum artigo/pp_xml_id é selecionado por mais de uma fonte na
    mesma execução de task_dispatch_articles.
  • ArticleSource não depende mais de AMArticle.
  • task_harvest_articles e task_dispatch_articles agendadas
    corretamente no scheduler, com as tasks obsoletas removidas.
  • Testes unitários cobrindo os 4 métodos from_* do
    ArticleIteratorBuilder e os 3 pontos de entrada de
    task_process_article_pipeline.
  • Migração aplicada sem perda de dados em ambiente de homologação.

Referências

  • N/A

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions