Contexto
A decisão de resincronizar um periódico com o SciELO Core está atualmente
acoplada ao parâmetro genérico force_update. Além disso, periódicos ainda
não sincronizados com o Core (journal.core_synchronized=False) podem
ficar de fora do processamento se não corresponderem ao filtro de status
informado, ficando "presos" sem nunca sincronizar.
Motivação
Foi observado que, mesmo quando a migração já havia sido realizada com
sucesso (dados obtidos do site clássico via
journal_proc.create_or_update_item(..., controller.create_or_update_journal)),
a operação de obtenção de dados do Core (fetch_and_create_journal)
ocorria sempre em seguida, de forma talvez desnecessária.
Causa raiz identificada em proc/tasks.py: a condição que decide se
o Core deve ser consultado —
if force_update or not journal_proc.journal.core_synchronized: — quase
sempre era verdadeira, pois nada no fluxo de migração via site clássico
(create_or_update_migrated_journal / journal_proc.create_or_update_item)
definia journal.core_synchronized = True. Ou seja, o campo permanecia
False mesmo após uma migração bem-sucedida, fazendo fetch_and_create_journal
disparar em praticamente toda execução, independentemente da necessidade
real de resincronizar com o Core.
Proposta
- Corrigir a causa raiz:
migration/controller.py passa a marcar
journal.core_synchronized = True após create_or_update_journal
bem-sucedido, permitindo que o campo reflita o estado real.
- Separar force_update em dois controles independentes:
- force_import_acron_id_file: força reimportação do arquivo de acron id.
- force_core_sync: força resincronização com o Core para todos os
periódicos do filtro, independente do estado atual.
- Incluir sempre, via OR na query, os periódicos com
journal__core_synchronized=False, garantindo que eventualmente sincronizem.
- Expor os novos parâmetros no agendador (bigbang/tasks_scheduler.py).
- Adicionar rastreabilidade da origem dos dados do journal (Core vs.
classic website) e do agendamento de publicação nos detalhes de evento.
Critérios de aceite
Contexto
A decisão de resincronizar um periódico com o SciELO Core está atualmente
acoplada ao parâmetro genérico force_update. Além disso, periódicos ainda
não sincronizados com o Core (journal.core_synchronized=False) podem
ficar de fora do processamento se não corresponderem ao filtro de status
informado, ficando "presos" sem nunca sincronizar.
Motivação
Foi observado que, mesmo quando a migração já havia sido realizada com
sucesso (dados obtidos do site clássico via
journal_proc.create_or_update_item(..., controller.create_or_update_journal)),a operação de obtenção de dados do Core (
fetch_and_create_journal)ocorria sempre em seguida, de forma talvez desnecessária.
Causa raiz identificada em
proc/tasks.py: a condição que decide seo Core deve ser consultado —
if force_update or not journal_proc.journal.core_synchronized:— quasesempre era verdadeira, pois nada no fluxo de migração via site clássico
(
create_or_update_migrated_journal/journal_proc.create_or_update_item)definia
journal.core_synchronized = True. Ou seja, o campo permaneciaFalsemesmo após uma migração bem-sucedida, fazendofetch_and_create_journaldisparar em praticamente toda execução, independentemente da necessidade
real de resincronizar com o Core.
Proposta
migration/controller.pypassa a marcarjournal.core_synchronized = Trueapóscreate_or_update_journalbem-sucedido, permitindo que o campo reflita o estado real.
periódicos do filtro, independente do estado atual.
journal__core_synchronized=False, garantindo que eventualmente sincronizem.
classic website) e do agendamento de publicação nos detalhes de evento.
Critérios de aceite