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

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