feat: implementar novos critérios de pontuação da planilha atualizada

- Adicionar critérios diferenciados por papel (autor vs orientador)
- Implementar INSC_INST_AUTOR, PREMIACAO_GP_AUTOR, PREMIACAO_AUTOR, MENCAO_AUTOR
- Adicionar bônus de recorrência para inscrições, eventos e projetos
- Corrigir lógica de bônus de consultoria (continuidade e retorno)
- Ajustar extração de selos no frontend para novos códigos
- Adicionar BOL_BPQ_NIVEL para bolsas sem nível especificado
- Refinar cálculo de pontuação com novos tetos e multiplicadores
This commit is contained in:
Frederico Castro
2025-12-19 22:30:21 -03:00
parent 6297d135ec
commit 9457c18cbd
6 changed files with 107 additions and 26 deletions

View File

@@ -31,6 +31,8 @@ class CriterioPontuacao:
bonus_continuidade_8anos: int = 0
bonus_recorrencia_anual: int = 0
teto_recorrencia: int = 0
bonus_recorrencia_participacao: int = 0
teto_recorrencia_participacao: int = 0
CRITERIOS: Dict[str, CriterioPontuacao] = {
@@ -101,6 +103,7 @@ CRITERIOS: Dict[str, CriterioPontuacao] = {
pontua_tempo=True,
multiplicador_tempo=5,
teto_tempo=50,
bonus_atualidade=20,
bonus_retorno=15,
bonus_continuidade_8anos=20,
),
@@ -113,6 +116,7 @@ CRITERIOS: Dict[str, CriterioPontuacao] = {
pontua_tempo=True,
multiplicador_tempo=5,
teto_tempo=50,
bonus_retorno=20,
bonus_continuidade_8anos=20,
),
"CONS_FALECIDO": CriterioPontuacao(
@@ -132,6 +136,17 @@ CRITERIOS: Dict[str, CriterioPontuacao] = {
tipo=TipoAtuacao.FUNCAO,
base=10,
teto=20,
bonus_recorrencia_participacao=2,
teto_recorrencia_participacao=10,
),
"INSC_INST_AUTOR": CriterioPontuacao(
codigo="INSC_INST_AUTOR",
bloco=Bloco.D,
tipo=TipoAtuacao.FUNCAO,
base=20,
teto=50,
bonus_recorrencia_participacao=5,
teto_recorrencia_participacao=10,
),
"INSC_INST": CriterioPontuacao(
codigo="INSC_INST",
@@ -204,6 +219,13 @@ CRITERIOS: Dict[str, CriterioPontuacao] = {
base=50,
teto=100,
),
"BOL_BPQ_NIVEL": CriterioPontuacao(
codigo="BOL_BPQ_NIVEL",
bloco=Bloco.D,
tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO,
base=30,
teto=60,
),
"PREMIACAO": CriterioPontuacao(
codigo="PREMIACAO",
bloco=Bloco.D,
@@ -218,6 +240,20 @@ CRITERIOS: Dict[str, CriterioPontuacao] = {
base=50,
teto=60,
),
"PREMIACAO_GP_AUTOR": CriterioPontuacao(
codigo="PREMIACAO_GP_AUTOR",
bloco=Bloco.D,
tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO,
base=100,
teto=300,
),
"PREMIACAO_AUTOR": CriterioPontuacao(
codigo="PREMIACAO_AUTOR",
bloco=Bloco.D,
tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO,
base=50,
teto=150,
),
"MENCAO": CriterioPontuacao(
codigo="MENCAO",
bloco=Bloco.D,
@@ -225,12 +261,21 @@ CRITERIOS: Dict[str, CriterioPontuacao] = {
base=30,
teto=30,
),
"MENCAO_AUTOR": CriterioPontuacao(
codigo="MENCAO_AUTOR",
bloco=Bloco.D,
tipo=TipoAtuacao.COMPETENCIA_RECONHECIMENTO,
base=30,
teto=90,
),
"EVENTO": CriterioPontuacao(
codigo="EVENTO",
bloco=Bloco.D,
tipo=TipoAtuacao.PARTICIPACAO,
base=1,
teto=5,
bonus_recorrencia_participacao=1,
teto_recorrencia_participacao=10,
),
"PROJ": CriterioPontuacao(
codigo="PROJ",
@@ -238,6 +283,8 @@ CRITERIOS: Dict[str, CriterioPontuacao] = {
tipo=TipoAtuacao.PARTICIPACAO,
base=10,
teto=40,
bonus_recorrencia_participacao=2,
teto_recorrencia_participacao=10,
),
"ORIENT_POS_DOC": CriterioPontuacao(
codigo="ORIENT_POS_DOC",