Skip to content

Corrige coletores de Preprints e Dataverse - #140

Merged
pitangainnovare merged 3 commits into
scieloorg:mainfrom
pitangainnovare:fix/preprints-dataverse-collectors-v2.3.5
Sep 5, 2026
Merged

Corrige coletores de Preprints e Dataverse#140
pitangainnovare merged 3 commits into
scieloorg:mainfrom
pitangainnovare:fix/preprints-dataverse-collectors-v2.3.5

Conversation

@pitangainnovare

@pitangainnovare pitangainnovare commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

O que esse PR faz?

Corrige a coleta de metadados de Preprints e Dataverse e atualiza a versão da aplicação para 2.3.5.

  • mantém a tentativa de coleta incremental de Preprints pelo OAI-PMH;
  • quando o endpoint rejeita os filtros de data com HTTP 500, consulta o feed completo e filtra localmente pelo datestamp;
  • evita duplicatas caso a resposta incremental falhe após entregar parte dos registros;
  • ignora registros de Preprints removidos ou sem metadados;
  • percorre recursivamente a árvore do Dataverse;
  • passa a coletar também datasets publicados diretamente no Dataverse raiz;
  • aplica o intervalo de datas antes de consultar os arquivos de cada dataset.

Onde a revisão poderia começar?

A revisão pode começar pelos coletores:

  • core/collectors/preprints.py
  • core/collectors/dataverse.py

Depois, verificar a proteção adicionada à task em document/tasks/preprints.py e os testes de regressão:

  • core/tests/tests_preprints_collector.py
  • core/tests/tests_dataverse_collector.py
  • document/tests/test_tasks.py

Como este poderia ser testado manualmente?

Executar os testes relacionados dentro do ambiente Docker do projeto:

docker compose -f local.yml run --rm django pytest \
  core/tests/tests_collectors.py \
  core/tests/tests_preprints_collector.py \
  core/tests/tests_dataverse_collector.py \
  document/tests/test_tasks.py

Resultado esperado: 14 testes aprovados.

Para uma verificação integrada, executar as tasks de sincronização de Preprints e Dataverse em um ambiente de homologação com intervalos curtos de datas e confirmar que:

  1. a coleta de Preprints termina mesmo quando o endpoint responde HTTP 500 ao filtro de datas;
  2. somente registros dentro do intervalo solicitado são persistidos;
  3. datasets presentes na raiz e em subdataverses são processados;
  4. registros removidos ou sem metadados não interrompem a task.

Algum cenário de contexto que queira dar?

O endpoint OAI-PMH de Preprints pode responder HTTP 500 quando ListRecords recebe filtros de data, impedindo a sincronização incremental. O fallback mantém a janela solicitada por meio de filtragem local.

No Dataverse, o coletor anterior partia apenas dos subdataverses imediatos. Com isso, datasets publicados diretamente na raiz não eram coletados, e níveis mais profundos da árvore também poderiam ficar de fora.

Screenshots

Não aplicável. As alterações afetam exclusivamente coletores e tasks de backend.

Quais são os tickets relevantes?

Não há ticket associado.

Referências


Segurança da informação (NSI.04)

Seção obrigatória. Marque as opções aplicáveis e justifique quando necessário. Referência: NSI.04 - Norma de Desenvolvimento Seguro.

Este PR manipula dados sensíveis ou pessoais (LGPD)?

  • Sim — descreva os controles de proteção aplicados (criptografia, mascaramento, anonimização, etc.):
  • Não

Este PR altera autenticação, autorização, controle de acesso ou gerenciamento de sessão?

  • Sim — descreva o que mudou e por quê:
  • Não

Este PR introduz, atualiza ou remove dependências de terceiros?

  • Sim — as novas dependências foram verificadas no SBOM/Trivy sem vulnerabilidades críticas/altas em aberto?
    • Verificado e aprovado
    • Pendente / vulnerabilidade aceita com justificativa:
  • Não

Este PR foi validado pelo pipeline de segurança (SonarQube / Trivy)?

  • Sim — link do job:
  • Não aplicável a este PR (justifique): não há alteração de dependências, infraestrutura, autenticação ou exposição de serviços; o Gitleaks local também não encontrou segredos.

Este PR concatena, monta ou executa comandos SQL, HTML ou JavaScript a partir de entrada externa?

  • Sim — confirme que há sanitização/parametrização (prepared statements, escaping, etc.):
  • Não

Este PR expõe novos endpoints, telas ou serviços?

  • Sim — HTTPS obrigatório está garantido e o acesso segue o princípio de menor privilégio?
  • Não

Algum segredo, senha, chave ou token está sendo adicionado ao código-fonte?

  • Não, nenhum segredo foi commitado
  • Sim (bloquear merge e corrigir antes de prosseguir)

@pitangainnovare
pitangainnovare merged commit 373b217 into scieloorg:main Sep 5, 2026
2 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