Skip to content

Corrige lookup builders, melhora dinamismo e inclui N na aba de filtros#718

Merged
pitangainnovare merged 19 commits into
scieloorg:mainfrom
pitangainnovare:fix/ds-filters
Jun 27, 2026
Merged

Corrige lookup builders, melhora dinamismo e inclui N na aba de filtros#718
pitangainnovare merged 19 commits into
scieloorg:mainfrom
pitangainnovare:fix/ds-filters

Conversation

@pitangainnovare

Copy link
Copy Markdown
Contributor

O que esse PR faz?

A tarefa iniciou tratando o builder do lookup de source, que apresentava nomes relacionados a publishers entre os valores gerados. Como solução, passou a ser possível definir quais campos são úteis para popular os valores do lookup de source. Por padrão, entende-se que devem ser considerados apenas sources dos tipos journal e conference.

Como essa história está diretamente ligada ao reprocessamento dos lookups, optou-se também por implementar melhorias no dinamismo desses seletores. O sistema já possuía algum dinamismo entre campos diferentes de lookup, mas ainda não havia cruzamento entre campos lookup e campos não lookup. Por isso, os dados gerados pelos builders de lookup foram enriquecidos, permitindo aplicar esse dinamismo também nesse cenário.

Por fim, aproveitou-se a alteração para incorporar o N associado a cada faceta, permitindo que as opções exibidas nos filtros indiquem também a quantidade de documentos relacionada a cada valor. O PR também atualiza as fixtures básicas e os testes correspondentes.

Onde a revisão poderia começar?

  1. search_gateway/lookup/base.py — utilitários (collect_document_metadata, clean_boolean_value, iter_clean_boolean_values) e o serviço de build.
  2. search_gateway/lookup/builders/{source,publisher,funder,institution}.py — enriquecimento dos lookups.
  3. search_gateway/service.py_build_lookup_dependency_filters e o _search_lookup_options recebendo filters (dinamismo).
  4. search_gateway/option_normalization.pynormalize_option buscando o campo de contagem.
  5. Front: search_gateway/templates/.../widgets/{checkbox_multi,lookup}.html, static/.../js/filter_form.js, static/.../css/filter_sidebar.css.
  6. search_gateway/fixtures/datasources.json — configuração de dependency_filters por campo.

Como este poderia ser testado manualmente?

  1. Garanta que o índice fonte silver_scientific_production esteja populado no OpenSearch.
  2. (Opcional) ajuste SEARCH_GATEWAY_LOOKUP_SOURCE_TYPES (default: journal,conference) conforme o cenário.
  3. (Re)construa os índices de lookup: python manage.py build_lookup_indices (use --lookup-index KEY=INDEX ou apague os índices existentes, pois o comando não sobrescreve índices já criados).
  4. Carregue as fixtures: python manage.py loaddata search_gateway/fixtures/datasources.json core/fixtures/pages.json.
  5. Abra a tela de busca e verifique que cada opção de filtro mostra o N (contagem) ao lado do rótulo.
  6. Aplique um filtro (ex.: idioma, open access, país ou tipo de source) e confirme que as opções dos filtros de lookup (sources, publishers, etc.) se restringem dinamicamente e que os N's refletem o novo contexto.

Screenshots

Tela que mostra o número de registros representando um campo no filtro
image

Quais são tickets relevantes?

#717 e #711

Referências

N/A

- Em algum momento, esse tipo de estrutura pode virar modelo/campo
- Útil para decidir quais tipos devem ser incluídos na build
- Necessário para o campo keyword no índice
- Obtém chaves para enriquecer lookups
- Útil para a nova função de mostrar N associado ao campo
- Incorpora novos campos que compõem lookup
@pitangainnovare pitangainnovare changed the title Fix/ds filters Corrige lookup builders, melhora dinamismo e inclui N na aba de filtros Jun 25, 2026
"journal": _("Journal"),
"metadata": _("Metadata"),
"other": _("Other"),
"raidregistry": _("RAID Registry"),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Será que não ha um jeito de colocar colocar as tags "trans" nas opções no template? Assim a gente só colocaria as traduções nos arquivos .po

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O _() já consulta as traduções dos arquivos .po.

Tudo que se refere a display transform eu diria que precisaria virar um modelo, no futuro e fora do contexto deste PR. Por exemplo, esses dois casos que entraram eu só percebi depois de termos mais dados no servidor.

Esse display transform é usável na conf do DataSource, fazendo com que esses valores sejam apresentados de maneira melhor nos filtros (o mesmo serve para converter scielo para SciELO, então, não se trata apenas de tradução).

Caso eu tenha entendido errado ou não respondido bem o suficiente, por favor, me avise.

def count(self) -> int:
@staticmethod
def clean_boolean_value(value):
normalized = normalize_boolean(value)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chamar str no bool não resolve?

normalized = normalize_boolen(value)
return str(normalized) if normalized else ""

out:
"True"
"False"
""

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Há alguns casos particulares que precisam ser analisados: 0, 1, "true", "false", True, False, "Sim", "Não", "Yes", "No", etc. Mais pra frente, podemos pensar melhor em como ter o clean_boolean mais robusto ou mesmo simplificá-lo.

@samuelveigarangel

samuelveigarangel commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

a modificação de incorporar o N associado a cada faceta poderia ter sido feito em outra Pull Request

"document_types": {"type": "keyword"},
"document_languages": {"type": "keyword"},
"open_access_values": {"type": "keyword"},
"open_access_statuses": {"type": "keyword"},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ta correto statuses?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sim, costuma-se aceitar statuses como plural de status.

@pitangainnovare pitangainnovare merged commit a0dc71a into scieloorg:main Jun 27, 2026
3 checks passed
@pitangainnovare pitangainnovare deleted the fix/ds-filters branch June 27, 2026 10:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants