Skip to content

resolve o problema de rastreabilidade e inconsistência de dados na sincronização de registros com o OPAC#1007

Draft
robertatakenaka wants to merge 3 commits into
scieloorg:mainfrom
robertatakenaka:tk_1005
Draft

resolve o problema de rastreabilidade e inconsistência de dados na sincronização de registros com o OPAC#1007
robertatakenaka wants to merge 3 commits into
scieloorg:mainfrom
robertatakenaka:tk_1005

Conversation

@robertatakenaka

@robertatakenaka robertatakenaka commented Jun 23, 2026

Copy link
Copy Markdown
Member

📝 Descrição

Este PR resolve o problema de rastreabilidade e inconsistência de dados na sincronização de registros com o OPAC. Anteriormente, itens que possuíam "status": false eram interpretados incorretamente como públicos (is_public = True), o que forçava tentativas de requisição inválidas, gerando logs de erro confusos (xml_fetch_failed) e poluindo a listagem de XMLURLs.

Além disso, o fluxo de persistência de log foi refatorado para garantir o registro antecipado das tentativas de coleta, otimizando o diagnóstico de falhas.


🛠️ Alterações

1. core/utils/harvesters.py

  • Correção no mapeamento: Removida a validação antiga que tratava o status como string (!= "false"). Agora o sistema aceita diretamente o booleano retornado pelo OPAC, garantindo que o dicionário de dados reflita o estado real do item.

2. pid_provider/models.py & tasks.py

  • Tratamento de is_public: Ajustado o método XMLURL.record para ler e salvar corretamente o booleano vindo de document_item.get("status").
  • Novo método: Adicionado o método helper update_record para atualizar instâncias já existentes de XMLURL sem duplicar registros ou perder o contexto inicial do payload.
  • Remoção de trava: Removido o continue precoce na task de carga, permitindo que itens não públicos também cheguem ao provider para serem registrados com o status correto de auditoria.

3. pid_provider/base_pid_provider.py

  • Persistência Antecipada: O objeto xml_url_record agora é criado antes de tentar obter o XML via URI (try/except). Caso ocorra uma falha de rede ou comportamento inesperado, o registro base já existe no banco e é atualizado com o erro correspondente no bloco except, evitando estados inconsistentes.

🐛 Problema Reportado (Issue)

Corrige #1005

  • Comportamento Incorreto: Itens indisponíveis (status: false) estavam tentando ser coletados e salvos com is_public = Yes (True), resultando no erro genérico xml_fetch_failed.
  • Impacto Secundário: Lentidão e poluição na listagem do menu Pid Provider > XML URLs.

Comportamento Esperado (Após este PR)

  • Se o item possui "status": false, o sistema infere is_public = No.
  • O log registrará com precisão o estado do item, evitando tentativas desnecessárias de fetch ou rotulando o erro de forma errônea.
  • Fluxo de log mais limpo e seguro contra falhas silenciosas de rede.

🧪 Como testar?

  1. Execute a task de carga para o PID zXmHVPm3TWVd8pdVmgXw4jN (ou um payload similar com "status": false).
  2. Acesse o admin em Pid Provider > XML URLs e busque pelo PID em questão.
  3. Valide se:
    • O campo is_public está marcado como No (False).
    • O fluxo tratou o status adequadamente sem mascarar o erro como uma falha de requisição comum.

… OPAC

Ajusta o mapeamento para aceitar o valor booleano nativo retornado pela
chave 'status' do item, impedindo que 'status: false' seja avaliado
erroneamente como True devido à comparação de string antiga.
- Atualiza o método 'XMLURL.record' para avaliar 'is_public' corretamente através do booleano de 'document_item'.
- Remove o 'continue' precoce na task de carga, permitindo que o fluxo siga para o provedor tratar o status adequadamente.
…cord

Modifica o fluxo do 'BasePidProvider' para instanciar o registro 'XMLURL'
antes de realizar operações externas. Introduz o uso do 'update_record'
para persistir o resultado final (sucesso ou falha interna), garantindo
a rastreabilidade correta demandada na issue.
@robertatakenaka robertatakenaka marked this pull request as draft June 24, 2026 20:13
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.

Possível falha no registro de XMLURL quanto ao campo is_public

1 participant