fix(filtros): corrigir extração de selos e melhorar UX do filtro

- Corrigir lógica de extração de selos para usar códigos exatos
- Filtro agora exige todos os selos selecionados (AND em vez de OR)
- Botão Aplicar volta: seleção não dispara filtro automaticamente
- Layout dos controles unificado em barra com fundo
This commit is contained in:
Frederico Castro
2025-12-15 13:04:06 -03:00
parent c294d4cc77
commit 3254374486
4 changed files with 89 additions and 49 deletions

View File

@@ -45,12 +45,14 @@ def extrair_selos_entry(detalhes: Dict[str, Any]) -> Set[str]:
papel = (prem.get("papel") or "").lower()
codigo = prem.get("codigo", "")
if "GP" in codigo or "grande" in codigo.lower():
if codigo == "PREMIACAO":
tipo_prem = "GP"
elif "MENCAO" in codigo or "menção" in codigo.lower():
elif codigo == "PREMIACAO_GP":
tipo_prem = "PREMIO"
elif codigo == "MENCAO":
tipo_prem = "MENCAO"
else:
tipo_prem = "PREMIO"
continue
if "autor" in papel:
selos.add(f"AUTOR_{tipo_prem}")
@@ -64,18 +66,18 @@ def extrair_selos_entry(detalhes: Dict[str, Any]) -> Set[str]:
is_coorient = orient.get("coorientacao", False)
if is_coorient:
if "POS_DOC" in codigo:
if codigo == "CO_ORIENT_POS_DOC":
selos.add("CO_ORIENT_POS_DOC")
elif "TESE" in codigo:
elif codigo == "CO_ORIENT_TESE":
selos.add("CO_ORIENT_TESE")
elif "DISS" in codigo:
elif codigo == "CO_ORIENT_DISS":
selos.add("CO_ORIENT_DISS")
else:
if "POS_DOC" in codigo:
if codigo == "ORIENT_POS_DOC":
selos.add("ORIENT_POS_DOC")
elif "TESE" in codigo:
elif codigo == "ORIENT_TESE":
selos.add("ORIENT_TESE")
elif "DISS" in codigo:
elif codigo == "ORIENT_DISS":
selos.add("ORIENT_DISS")
return selos
@@ -146,7 +148,7 @@ class RankingStore:
selos_set = set(filtro_selos)
entries = [
e for e in entries
if selos_set & extrair_selos_entry(e.detalhes)
if selos_set.issubset(extrair_selos_entry(e.detalhes))
]
total = len(entries)