Bonus IUT Rennes: modif sept 24

This commit is contained in:
Emmanuel Viennet 2024-10-07 16:24:32 +02:00
parent f601ef4710
commit a9fd1296bc

View File

@ -774,6 +774,34 @@ class BonusIUTRennes1(BonusSportAdditif):
"""Calcul bonus optionnels (sport, langue vivante, engagement étudiant), """Calcul bonus optionnels (sport, langue vivante, engagement étudiant),
règle IUT de l'Université de Rennes 1 (Lannion, Rennes, St Brieuc, St Malo). règle IUT de l'Université de Rennes 1 (Lannion, Rennes, St Brieuc, St Malo).
<div><b>Pour les semestres à partir de sept. 2024:</b></div>
<p>
Article 5 : Bonification des activités hors programmes nationaux :
</p>
<p>
Pour calculer la moyenne M de chaque UE des semestres pairs, il convient
d'ajouter la validation de note obtenue qui s'effectuera suivant la
formule :
<pre>
M = Mo + ((S-10)/10)/(Nombre d'UE du semestre)
</pre>
Mo est la moyenne de l'UE avant prise en compte de la note et S est
la note finale attribuée par l'activité bonifiée (si S > 10).
</p>
<p>
Sont éligibles à cette bonification une activité sportive dans le cadre
universitaire, une langue vivante optionnelle et l'engagement étudiant
(dans le cadre défini par la commission de la formation et de la vie
universitaire (CFVE) de l'Université de Rennes annexe 3).
</p>
<p>
Pour l'étudiant pouvant prétendre à plusieurs bonifications, seule la
meilleure des notes sera prise en compte. Toutefois, une bonification
liée à l'engagement est cumulable avec une autre bonification.
</p>
</div>
<div><b>Pour les semestres avant 2024:</b></div>
<ul> <ul>
<li>Les étudiants peuvent suivre un ou plusieurs activités optionnelles notées <li>Les étudiants peuvent suivre un ou plusieurs activités optionnelles notées
dans les semestres pairs.<br> dans les semestres pairs.<br>
@ -796,17 +824,26 @@ class BonusIUTRennes1(BonusSportAdditif):
# S'applique aussi en classic, sur la moy. gen. # S'applique aussi en classic, sur la moy. gen.
def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan): def compute_bonus(self, sem_modimpl_moys_inscrits, modimpl_coefs_etuds_no_nan):
"""calcul du bonus""" """calcul du bonus, avec changement de règle en sept 2024"""
# Nouvelle règle à partir de sept. 2024
# Prend la note de chaque modimpl, sans considération d'UE # Prend la note de chaque modimpl, sans considération d'UE
if len(sem_modimpl_moys_inscrits.shape) > 2: # apc if len(sem_modimpl_moys_inscrits.shape) > 2: # apc
sem_modimpl_moys_inscrits = sem_modimpl_moys_inscrits[:, :, 0] sem_modimpl_moys_inscrits = sem_modimpl_moys_inscrits[:, :, 0]
# ici sem_modimpl_moys_inscrits est nb_etuds x nb_mods_bonus, en APC et en classic # ici sem_modimpl_moys_inscrits est nb_etuds x nb_mods_bonus, en APC et en classic
note_bonus_max = np.max(sem_modimpl_moys_inscrits, axis=1) # 1d, nb_etuds note_bonus_max = np.max(sem_modimpl_moys_inscrits, axis=1) # 1d, nb_etuds
nb_ues = len(self.formsemestre.get_ues(with_sport=False)) nb_ues = len(self.formsemestre.get_ues(with_sport=False))
if nb_ues == 0:
self.bonus_ues = pd.DataFrame()
self.bonus_moy_gen = pd.Series()
return
proportion_point = (
1 / (10.0 * nb_ues)
if self.formsemestre.date_debut > datetime.date(2024, 8, 1)
else self.proportion_point
)
bonus_moy_arr = np.where( bonus_moy_arr = np.where(
note_bonus_max > self.seuil_moy_gen, note_bonus_max > self.seuil_moy_gen,
(note_bonus_max - self.seuil_moy_gen) * self.proportion_point, (note_bonus_max - self.seuil_moy_gen) * proportion_point,
0.0, 0.0,
) )
# Seuil: bonus dans [min, max] (défaut [0,20]) # Seuil: bonus dans [min, max] (défaut [0,20])