Skip to content

refactor(tasks): validar status do artigo (público/válido) antes de exportar para ArticleMeta#1421

Merged
robertatakenaka merged 1 commit intoscieloorg:mainfrom
robertatakenaka:fix_articlemeta_export_
Mar 26, 2026
Merged

refactor(tasks): validar status do artigo (público/válido) antes de exportar para ArticleMeta#1421
robertatakenaka merged 1 commit intoscieloorg:mainfrom
robertatakenaka:fix_articlemeta_export_

Conversation

@robertatakenaka
Copy link
Copy Markdown
Member

📝 Descrição

Esta mudança implementa validações adicionais no processo de exportação de artigos para o ArticleMeta. O objetivo é garantir que apenas artigos marcados como válidos (valid=True) e públicos (is_classic_public=True) sejam processados, evitando inconsistências nos dados exportados e falhas silenciosas nas tarefas em segundo plano.

🛠️ Alterações Realizadas

  • article/tasks.py:
    • Refatoração da query em task_export_article_to_articlemeta para incluir os filtros valid=True e is_classic_public=True.
    • Adicionado tratamento específico para a exceção Article.DoesNotExist, retornando False de forma segura.
    • Inclusão de uma validação prévia na task_process_article_pipeline para evitar o agendamento (.delay()) da tarefa de exportação caso o artigo não cumpra os requisitos, poupando recursos do broker.
    • Adicionado log de aviso (logging.warning) para rastrear artigos ignorados durante o pipeline.

🧪 Como Testar?

  1. Cenário de Sucesso: Tente exportar um artigo que seja valid=True e is_classic_public=True. A exportação deve ocorrer normalmente.
  2. Cenário de Artigo Inválido: Altere um artigo para valid=False. Tente rodar o pipeline. Verifique no log a mensagem: "Article [PID] is not valid or not public. Skipping export...".
  3. Cenário de Artigo Privado: Altere um artigo para is_classic_public=False. O comportamento deve ser o mesmo do teste anterior.
  4. Cenário de Artigo Inexistente: Tente disparar a task de exportação com um pid_v3 que não existe no banco. A task deve retornar False sem subir uma exceção não tratada para o Sentry/UnexpectedEvent.

📌 Notas Adicionais

  • Essa alteração previne que artigos em rascunho ou desativados sejam sincronizados acidentalmente com serviços externos.

- Adiciona filtros de validade e status público na busca do artigo.
- Adiciona tratamento para erro DoesNotExist.
- Insere log de aviso e cancela o pipeline caso o artigo não cumpra os requisitos.
@robertatakenaka robertatakenaka merged commit d99608f into scieloorg:main Mar 26, 2026
1 of 5 checks passed
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.

1 participant