fix: alinhar criterios 100% com documento PDF oficial

Backend:
- Reescrever criterios_pontuacao.py com valores corretos do PDF
- Adicionar Blocos B e E ao enum
- Corrigir Base/Teto: AVAL_COMIS_GP (40), COORD_COMIS_PREMIO (40),
  COORD_COMIS_GP (50), PROJ teto (30)
- Orientacoes/Bancas agora sao selos (Base=0, Teto=0)
- CONS_FALECIDO agora pontua tempo (5 pts/ano)
- Remover codigos obsoletos (PREMIACAO, MENCAO, BOL_BPQ_SUP/INT)
- Usar apenas BOL_BPQ_NIVEL, PREMIACAO_*_AUTOR, MENCAO_AUTOR
- Atualizar ranking_store.py e validar_ranking.py

Frontend:
- Atualizar ConsultorCard e CompararModal com codigos corretos
- Adicionar logo CAPES em PNG com transparencia
- Ajustar espacamento do header e tamanho das fontes
- Mapear pasta public no docker-compose
This commit is contained in:
Frederico Castro
2025-12-20 06:53:45 -03:00
parent 7ba2c2be9d
commit 26492c880c
11 changed files with 252 additions and 223 deletions

View File

@@ -42,33 +42,14 @@ def extrair_selos_entry(detalhes: Dict[str, Any]) -> Set[str]:
selos.add("BPQ")
for prem in detalhes.get("premiacoes", []):
papel = (prem.get("papel") or "").lower()
codigo = prem.get("codigo", "")
if codigo == "PREMIACAO":
tipo_prem = "GP"
elif codigo == "PREMIACAO_GP":
tipo_prem = "PREMIO"
elif codigo == "MENCAO":
tipo_prem = "MENCAO"
elif codigo == "PREMIACAO_GP_AUTOR":
if codigo == "PREMIACAO_GP_AUTOR":
selos.add("AUTOR_GP")
continue
elif codigo == "PREMIACAO_AUTOR":
selos.add("AUTOR_PREMIO")
continue
elif codigo == "MENCAO_AUTOR":
selos.add("AUTOR_MENCAO")
continue
else:
continue
if "autor" in papel:
selos.add(f"AUTOR_{tipo_prem}")
elif "orientador" in papel:
selos.add(f"ORIENT_{tipo_prem}")
elif "coorientador" in papel or "co-orientador" in papel:
selos.add(f"COORIENT_{tipo_prem}")
for orient in detalhes.get("orientacoes", []):
codigo = orient.get("codigo", "")

View File

@@ -330,23 +330,12 @@ class ConsultorRepositoryImpl(ConsultorRepository):
nome_lower = str(nome_premio).lower()
tipo_norm = self._inferir_premiacao_tipo(f"{tipo_lower} {nome_lower}")
papel_lower = str(papel or "").lower()
is_autor = "autor" in papel_lower
if is_autor:
if tipo_norm == "GP":
codigo = "PREMIACAO_GP_AUTOR"
elif tipo_norm == "MENCAO":
codigo = "MENCAO_AUTOR"
else:
codigo = "PREMIACAO_AUTOR"
if tipo_norm == "GP":
codigo = "PREMIACAO_GP_AUTOR"
elif tipo_norm == "MENCAO":
codigo = "MENCAO_AUTOR"
else:
if tipo_norm == "GP":
codigo = "PREMIACAO"
elif tipo_norm == "MENCAO":
codigo = "MENCAO"
else:
codigo = "PREMIACAO_GP"
codigo = "PREMIACAO_AUTOR"
premiacoes.append(Premiacao(
codigo=codigo,
@@ -368,16 +357,8 @@ class ConsultorRepositoryImpl(ConsultorRepository):
nivel = dados.get("nivel", "") or dados.get("categoria", "") or ""
area = dados.get("areaConhecimento", "") or ""
nivel_lower = nivel.lower()
if not nivel_lower:
codigo = "BOL_BPQ_NIVEL"
elif "1d" in nivel_lower or "2" in nivel_lower:
codigo = "BOL_BPQ_INT"
else:
codigo = "BOL_BPQ_SUP"
bolsas.append(BolsaCNPQ(
codigo=codigo,
codigo="BOL_BPQ_NIVEL",
nivel=nivel,
area=area,
))