diff --git a/app/comp/bonus_spo.py b/app/comp/bonus_spo.py
index d4712098f..bc6dca945 100644
--- a/app/comp/bonus_spo.py
+++ b/app/comp/bonus_spo.py
@@ -531,10 +531,11 @@ class BonusCachan1(BonusSportAdditif):
- DUT/LP : la meilleure note d'option, si elle est supérieure à 10,
- bonifie les moyennes d'UE (sauf l'UE41 dont le code est UE41_E) à raison
+ bonifie les moyennes d'UE (uniquement UE13_E pour le semestre 1, UE23_E
+ pour le semestre 2, UE33_E pour le semestre 3 et UE43_E pour le semestre
+ 4) à raison
de bonus = (option - 10)/10.
-
- BUT : la meilleure note d'option, si elle est supérieure à 10, bonifie
les moyennes d'UE à raison de bonus = (option - 10) * 3%.
@@ -545,6 +546,7 @@ class BonusCachan1(BonusSportAdditif):
seuil_moy_gen = 10.0 # tous les points sont comptés
proportion_point = 0.03
classic_use_bonus_ues = True
+ ues_bonifiables_cachan = {"UE13_E", "UE23_E", "UE33_E", "UE43_E"}
def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan):
"""calcul du bonus, avec réglage différent suivant le type de formation"""
@@ -569,7 +571,7 @@ class BonusCachan1(BonusSportAdditif):
dtype=float,
)
else: # --- DUT
- # pareil mais proportion différente et exclusion d'une UE
+ # pareil mais proportion différente et application à certaines UEs
proportion_point = 0.1
bonus_moy_arr = np.where(
note_bonus_max > self.seuil_moy_gen,
@@ -582,10 +584,10 @@ class BonusCachan1(BonusSportAdditif):
columns=ues_idx,
dtype=float,
)
- # Pas de bonus sur la ou les ue de code "UE41_E"
- ue_exclues = [ue for ue in ues if ue.ue_code == "UE41_E"]
- for ue in ue_exclues:
- self.bonus_ues[ue.id] = 0.0
+ # Applique bonus seulement sur certaines UE de code connu:
+ for ue in ues:
+ if ue.ue_code not in self.ues_bonifiables_cachan:
+ self.bonus_ues[ue.id] = 0.0 # annule
class BonusCalais(BonusSportAdditif):