Skip to content

Corrige filtro de items to check url and content#970

Merged
robertatakenaka merged 4 commits into
scieloorg:mainfrom
robertatakenaka:corrige_filtro_de_items_to_check_url_and_content
May 27, 2026
Merged

Corrige filtro de items to check url and content#970
robertatakenaka merged 4 commits into
scieloorg:mainfrom
robertatakenaka:corrige_filtro_de_items_to_check_url_and_content

Conversation

@robertatakenaka
Copy link
Copy Markdown
Member

Refatora verificação de disponibilidade, exclusão de artigos e painel de edição

O que esse PR faz?

Refatora o fluxo de verificação de disponibilidade de artigos e a exclusão de registros inválidos, além de reorganizar o painel de edição do Article com TabbedInterface.

As principais mudanças são:

  1. article/page_checker.py — Adiciona suporte a verificação de conteúdo PDF com clean_pdf_text, refatora check_content para tratar formatos html/xml e pdf separadamente, renomeia found_count/not_found_count para total_found/total_not_found e adiciona validação de texto em check_metadata.

  2. article/models.py — Extrai get_compiled_status como função de módulo, substitui panels por TabbedInterface com abas (Article, Issue, Collections, Webpages), simplifica _available_on_website consultando ArticleWebPage diretamente sem passar por ArticleCollection, remove propagate_status e get_compiled_status de ArticleCollection/ArticleWebPage, e melhora a estrutura de retorno de exclude_invalid_records (renomeia chaves, adiciona limpeza final de artigos órfãos).

  3. proc/models.py — Refatora Operation.exclude_events para manter apenas eventos a partir do último com mesmo nome, move exclude_events para o método start, corrige a lógica invertida de force_update em items_to_check_url_and_content, e adiciona filtro por issue no queryset de exclude_invalid_items.

  4. proc/tasks.py — Migra task_sync_issue e task_exclude_invalid_issue_articles de TaskExecution para Operation (event), refatora task_track_classic_website_article_pids_for_collection para iterar por WebSiteConfiguration, refatora task_check_articles_availability para consultar via ArticleProc ao invés de Article, e corrige task_check_article_webpages/task_check_migrated_article para atualizar pid_status apenas quando valid=True.

Onde a revisão poderia começar?

Por article/page_checker.py (mudanças mais isoladas) e depois article/models.py (função get_compiled_status e _available_on_website), que são a base para as mudanças em proc/.

Como este poderia ser testado manualmente?

  • Executar a task task_check_articles_availability para uma coleção e verificar que os status são atualizados corretamente no admin (aba Webpages do Article).
  • Executar task_exclude_invalid_issue_articles para um fascículo com artigos órfãos (sem sps_pkg ou pp_xml) e verificar que são removidos.
  • Verificar no admin que o Article agora exibe as abas Article, Issue, Collections e Webpages.
  • Testar verificação de disponibilidade para artigos com páginas em formato PDF e HTML.

Algum cenário de contexto que queira dar?

A consulta de status passava por ArticleCollection.get_compiled_status, que era intermediária e desnecessária. Agora _available_on_website consulta ArticleWebPage diretamente. A função get_compiled_status foi extraída para o nível do módulo para ser reutilizada tanto em Article._available_on_website quanto em ArticleCollection.update_aggregate_status.

A migração de TaskExecution para Operation (event) nas tasks segue o padrão já adotado em outras tasks do projeto.

A correção de force_update em items_to_check_url_and_content (de if force_update para if not force_update) corrige um bug onde a condição estava invertida.

Screenshots

Quais são tickets relevantes?

Referências

…cker

- Adiciona clean_pdf_text para limpeza de texto extraído de PDF
- Refatora check_content para tratar formatos html/xml e pdf separadamente
- Renomeia found_count/not_found_count para total_found/total_not_found
- Adiciona validação de texto em check_metadata
- Adiciona logging para depuração
- Remove decodificação prematura em check_url
…usão de registros

- Adiciona função get_compiled_status extraída de ArticleCollection
- Substitui panels por TabbedInterface com abas Article, Issue, Collections e Webpages
- Corrige get_pid_status_from_webpage_status para usar or ao invés de .get com default
- Simplifica _available_on_website consultando ArticleWebPage diretamente
- Renomeia items_to_delete para response e melhora estrutura de retorno em exclude_invalid_records
- Adiciona limpeza de artigos sem sps_pkg ou pp_xml ao final da exclusão
- Refatora ArticleCollection.update_aggregate_status para usar get_compiled_status
- Remove método get_compiled_status de ArticleCollection
- Remove método propagate_status de ArticleWebPage
- Refatora check_page para tratar formatos html/xml vs pdf e melhorar tratamento de erros
- Renomeia detail para result e adiciona updated no retorno de data
- Remove chamada a exclude_events do create em Operation
- Refatora exclude_events para manter apenas eventos a partir do último com mesmo nome
- Adiciona truncamento de name e exclude_events no método start
- Corrige lógica de force_update em items_to_check_url_and_content (inverte condição)
- Remove PID_STATUS_UNKNOWN da exclude_list
- Usa cls ao invés de ArticleProc em exclude_invalid_items
- Adiciona filtro issue_proc__issue=issue no queryset de exclusão
- Converte querysets para list no retorno
…o de artigos

- Refatora task_sync_issue para usar event ao invés de TaskExecution
- Refatora task_exclude_invalid_issue_articles para usar event e simplifica tratamento de erros
- Refatora task_track_classic_website_article_pids_for_collection para iterar por WebSiteConfiguration
- Simplifica task_check_article_webpages: usa article_proc.article, atualiza pid_status apenas se valid
- Refatora task_check_articles_availability para consultar via ArticleProc ao invés de Article
- Remove parâmetro article_id de task_check_articles_availability
- Corrige task_check_migrated_article para atualizar pid_status apenas se valid
@robertatakenaka robertatakenaka merged commit 8843a15 into scieloorg:main May 27, 2026
3 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