Atualiza criterios de pontuacao para V2
Backend: - CAJ retorno 20->15, CAJ_MP retorno 20->10, CAM atualidade 10->20, retorno 20->10 - CONS_ATIVO/HIST/FALECIDO continuidade 8a+ = 20 (simplificado) - CONS_FALECIDO agora pontua tempo (5 pts/ano, teto 50) - AVAL_COMIS_PREMIO e AVAL_COMIS_GP mudaram tipo para PAPEL - AVAL_COMIS_GP teto 100->80 - Novo bonus de recorrencia anual para comissoes (2-6 pts/ano) - PREMIACAO base 150->100, PREMIACAO_GP base 30->50, MENCAO base 10->30 - BOL_BPQ_INTERMEDIARIO base 50->30 (consolidado) - Orientacoes/Co-orientacoes/Bancas: tetos zerados (sem limite) - TipoAtuacao.RESULTADO renomeado para COMPETENCIA_RECONHECIMENTO Frontend: - Atualiza PONTOS_BASE e TETOS com novos valores V2 - Atualiza descricoes das formulas nos tooltips - Melhora exibicao de teto=0 como "sem limite" - Adiciona info de bonus de recorrencia nos tooltips
This commit is contained in:
@@ -114,18 +114,13 @@ class CalculadorPontuacao:
|
||||
tempo = min(anos_total * criterio.multiplicador_tempo, criterio.teto_tempo)
|
||||
|
||||
bonus = 0
|
||||
if codigo == "CONS_ATIVO":
|
||||
if consultoria.anos_consecutivos >= 8:
|
||||
bonus += criterio.bonus_continuidade_8anos
|
||||
elif consultoria.anos_consecutivos >= 5:
|
||||
bonus += criterio.bonus_continuidade_5anos
|
||||
elif consultoria.anos_consecutivos >= 3:
|
||||
bonus += criterio.bonus_continuidade_3anos
|
||||
if consultoria.retornos > 0:
|
||||
bonus += criterio.bonus_retorno
|
||||
if consultoria.anos_consecutivos >= 8 and criterio.bonus_continuidade_8anos:
|
||||
bonus += criterio.bonus_continuidade_8anos
|
||||
if codigo == "CONS_ATIVO" and consultoria.retornos > 0 and criterio.bonus_retorno:
|
||||
bonus += criterio.bonus_retorno
|
||||
|
||||
total_bruto = base + tempo + bonus
|
||||
total = min(total_bruto, criterio.teto)
|
||||
total = min(total_bruto, criterio.teto) if criterio.teto > 0 else total_bruto
|
||||
|
||||
atuacoes = [PontuacaoAtuacao(
|
||||
codigo=codigo,
|
||||
@@ -149,7 +144,7 @@ class CalculadorPontuacao:
|
||||
membros_banca: List[MembroBanca],
|
||||
) -> PontuacaoBloco:
|
||||
atuacoes = []
|
||||
totais_por_codigo: Dict[str, Dict] = defaultdict(lambda: {"base": 0, "qtd": 0})
|
||||
totais_por_codigo: Dict[str, Dict] = defaultdict(lambda: {"base": 0, "qtd": 0, "anos": set()})
|
||||
|
||||
for insc in inscricoes:
|
||||
criterio = get_criterio(insc.codigo)
|
||||
@@ -162,6 +157,8 @@ class CalculadorPontuacao:
|
||||
if criterio:
|
||||
totais_por_codigo[aval.codigo]["base"] += criterio.base
|
||||
totais_por_codigo[aval.codigo]["qtd"] += 1
|
||||
if hasattr(aval, 'ano') and aval.ano:
|
||||
totais_por_codigo[aval.codigo]["anos"].add(aval.ano)
|
||||
|
||||
for prem in premiacoes:
|
||||
criterio = get_criterio(prem.codigo)
|
||||
@@ -198,12 +195,24 @@ class CalculadorPontuacao:
|
||||
if not criterio:
|
||||
continue
|
||||
|
||||
total = min(dados["base"], criterio.teto)
|
||||
base_total = dados["base"]
|
||||
bonus = 0
|
||||
if criterio.bonus_recorrencia_anual > 0:
|
||||
anos_distintos = len(dados["anos"])
|
||||
bonus_recorrencia = anos_distintos * criterio.bonus_recorrencia_anual
|
||||
bonus = min(bonus_recorrencia, criterio.teto_recorrencia)
|
||||
|
||||
total_bruto = base_total + bonus
|
||||
if criterio.teto > 0:
|
||||
total = min(total_bruto, criterio.teto)
|
||||
else:
|
||||
total = total_bruto
|
||||
|
||||
atuacoes.append(PontuacaoAtuacao(
|
||||
codigo=codigo,
|
||||
base=dados["base"],
|
||||
base=base_total,
|
||||
tempo=0,
|
||||
bonus=0,
|
||||
bonus=bonus,
|
||||
total=total,
|
||||
quantidade=dados["qtd"],
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user