Skip to content

Reorganiza documentos COUNTER no OpenSearch#125

Merged
pitangainnovare merged 3 commits intoscieloorg:mainfrom
pitangainnovare:pitanga-innovare/counter-index-document-shape
May 6, 2026
Merged

Reorganiza documentos COUNTER no OpenSearch#125
pitangainnovare merged 3 commits intoscieloorg:mainfrom
pitangainnovare:pitanga-innovare/counter-index-document-shape

Conversation

@pitangainnovare
Copy link
Copy Markdown
Contributor

O que esse PR faz?

Reorganiza o formato dos documentos de métricas COUNTER exportados para OpenSearch, substituindo campos planos por objetos mais explícitos: document, source, counter e access.

A mudança melhora o contrato do _source, separando identidade do documento, metadados da fonte, semântica COUNTER e período/localidade de acesso. Também preserva títulos de livros, capítulos e artigos no documento indexado.

O PR também adapta o utilitário CLI export_book_r51_monthly_metrics, usado para auditoria/revisão de métricas R5.1 de livros, para ler o novo shape. Esse command não faz parte do pipeline produtivo principal.

Onde a revisão poderia começar?

Começar por metrics/counter/documents.py, que concentra a montagem do novo shape dos documentos mensais e anuais.

Depois revisar:

  • metrics/opensearch/mappings.py
  • metrics/services/export.py
  • metrics/counter/access.py

Como este poderia ser testado manualmente?

Rodar os testes focados:

docker compose -f local.yml run --rm django pytest metrics/tests/test_index_utils.py metrics/tests/test_opensearch.py

Opcionalmente, gerar documentos a partir de um payload/log conhecido e verificar que o _source passa a conter:

{
  "document": {},
  "source": {},
  "counter": {},
  "access": {}
}

Para o utilitário de auditoria de livros, executar o command com um log de books disponível:

docker compose -f local.yml run --rm django python manage.py export_book_r51_monthly_metrics \
  --input /app/logs/<arquivo.log> \
  --item-output /tmp/book_items.csv \
  --title-output /tmp/book_titles.csv \
  --summary-output /tmp/book_summary.json

Algum cenário de contexto que queira dar?

O shape anterior misturava campos de documento, fonte, período de acesso e atributos COUNTER no nível raiz do _source, o que dificultava revisão, evolução do contrato e consultas por dimensão.

A reorganização deixa o índice mais legível e evita campos específicos de livros, artigos ou datasets espalhados no nível raiz.

Screenshots

Não aplicável.

Quais são tickets relevantes?

Não informado.

Referências

  • COUNTER Code of Practice Release 5.1
  • Contrato atual de exportação mensal/anual em metrics.counter.documents
  • Testes de mappings e geração de documentos em metrics/tests/test_index_utils.py e metrics/tests/test_opensearch.py

Validation

  • git diff --check upstream/main...HEAD
  • docker compose -f local.yml run --rm django pytest metrics/tests/test_index_utils.py metrics/tests/test_opensearch.py
  • Resultado: 33 passed

@pitangainnovare pitangainnovare self-assigned this May 6, 2026
@pitangainnovare pitangainnovare added the enhancement New feature or request label May 6, 2026
@pitangainnovare pitangainnovare marked this pull request as ready for review May 6, 2026 11:33
@pitangainnovare pitangainnovare merged commit d8113d7 into scieloorg:main May 6, 2026
2 checks passed
@pitangainnovare pitangainnovare deleted the pitanga-innovare/counter-index-document-shape branch May 6, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

O schema de dados OpenSearch está inconsistente Incluir campo título, relacionada a documentos do tipo chapter (coleção books)

1 participant