diff --git a/backend/src/domain/services/calculador_pontuacao.py b/backend/src/domain/services/calculador_pontuacao.py index 7dfa4f1..778085e 100644 --- a/backend/src/domain/services/calculador_pontuacao.py +++ b/backend/src/domain/services/calculador_pontuacao.py @@ -99,7 +99,7 @@ class CalculadorPontuacao: bonus = bonus_atual_map.get(coord_escolhida_tipo, 0) if ativo else 0 retorno = 20 if retornos_encontrados > 0 else 0 - return ComponentePontuacao(base=base, tempo=tempo, extras=extras, bonus=bonus, retorno=retorno) + return ComponentePontuacao(base=base, tempo=tempo, extras=extras, bonus=bonus, retorno=retorno, teto=450) @staticmethod def calcular_componente_b(coordenacoes: List[CoordenacaoPrograma]) -> ComponentePontuacao: @@ -150,7 +150,7 @@ class CalculadorPontuacao: mapa_nota = {7: 20, 6: 15, 5: 10, 4: 5, 3: 0} bonus = mapa_nota.get(maior_nota, 0) - return ComponentePontuacao(base=base, tempo=tempo, extras=extras, bonus=bonus) + return ComponentePontuacao(base=base, tempo=tempo, extras=extras, bonus=bonus, teto=180) @staticmethod def calcular_componente_c(consultoria: Consultoria) -> ComponentePontuacao: @@ -182,7 +182,7 @@ class CalculadorPontuacao: retorno_bonus = 15 if consultoria.retornos > 0 else 0 bonus = bonus_continuidade + retorno_bonus - return ComponentePontuacao(base=base, tempo=tempo, extras=extras, bonus=bonus) + return ComponentePontuacao(base=base, tempo=tempo, extras=extras, bonus=bonus, teto=230) @staticmethod def calcular_componente_d(premiacoes: List[Premiacao]) -> ComponentePontuacao: @@ -196,7 +196,7 @@ class CalculadorPontuacao: total_pontos = pontos_avaliador + sum(p.pontos for p in outros) total_pontos = min(total_pontos, 180) - return ComponentePontuacao(base=total_pontos, tempo=0, extras=0, bonus=0) + return ComponentePontuacao(base=total_pontos, tempo=0, extras=0, bonus=0, teto=180) @classmethod def calcular_pontuacao_completa(cls, consultor: Consultor) -> PontuacaoCompleta: diff --git a/backend/src/domain/value_objects/pontuacao.py b/backend/src/domain/value_objects/pontuacao.py index 8fe14bf..890c3c4 100644 --- a/backend/src/domain/value_objects/pontuacao.py +++ b/backend/src/domain/value_objects/pontuacao.py @@ -9,10 +9,14 @@ class ComponentePontuacao: extras: int bonus: int retorno: int = 0 + teto: int = 0 @property def total(self) -> int: - return self.base + self.tempo + self.extras + self.bonus + self.retorno + soma = self.base + self.tempo + self.extras + self.bonus + self.retorno + if self.teto > 0: + return min(soma, self.teto) + return soma @dataclass(frozen=True)