Spaces:
Sleeping
Sleeping
Update app_mieux.py
Browse files- app_mieux.py +56 -57
app_mieux.py
CHANGED
|
@@ -153,104 +153,103 @@ def generate_student_summary(eleve):
|
|
| 153 |
return summary
|
| 154 |
|
| 155 |
def get_comment_bank(eleve):
|
| 156 |
-
"""Retourne une banque de segments personnalisés avec le nom de l'élève."""
|
| 157 |
return {
|
| 158 |
"intro": [
|
| 159 |
-
f"
|
| 160 |
-
f"On
|
| 161 |
-
f"
|
| 162 |
-
f"
|
|
|
|
| 163 |
],
|
| 164 |
"delta_plus": [
|
| 165 |
-
f"
|
| 166 |
-
f"
|
| 167 |
-
f"Une montée en puissance très
|
| 168 |
-
f"
|
|
|
|
| 169 |
],
|
| 170 |
"delta_moins": [
|
| 171 |
-
f"
|
| 172 |
-
f"
|
| 173 |
-
f"
|
| 174 |
-
f"
|
|
|
|
| 175 |
],
|
| 176 |
"delta_stable": [
|
| 177 |
-
f"
|
| 178 |
-
f"{eleve} maintient
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
f"Premier bilan pour {eleve} dans cette matière. ", f"Une première évaluation prometteuse pour {eleve}. ",
|
| 182 |
-
f"Un point de départ intéressant pour {eleve}. ", f"Début des apprentissages validé pour {eleve}. "
|
| 183 |
],
|
| 184 |
"excellent": [
|
| 185 |
-
f"
|
| 186 |
-
f"
|
| 187 |
-
f"
|
|
|
|
| 188 |
],
|
| 189 |
"bien": [
|
| 190 |
-
f"
|
| 191 |
-
f"
|
|
|
|
|
|
|
| 192 |
],
|
| 193 |
"moyen": [
|
| 194 |
-
f"
|
| 195 |
-
f"
|
|
|
|
|
|
|
| 196 |
],
|
| 197 |
"difficile": [
|
| 198 |
-
f"
|
| 199 |
-
f"
|
|
|
|
|
|
|
| 200 |
],
|
| 201 |
"fin": [
|
| 202 |
-
f"
|
| 203 |
-
f"
|
|
|
|
|
|
|
|
|
|
| 204 |
]
|
| 205 |
}
|
| 206 |
|
| 207 |
-
|
| 208 |
def get_smart_comment(eleve, note, matiere):
|
| 209 |
global df
|
| 210 |
if note == "Absent" or not eleve or not matiere:
|
| 211 |
-
return "
|
| 212 |
|
| 213 |
try: n_actuelle = float(note)
|
| 214 |
except: return ""
|
| 215 |
|
| 216 |
-
#
|
| 217 |
delta = None
|
| 218 |
prec_df = df[(df["eleve"] == eleve) & (df["matiere"] == matiere) & (df["note"] != "Absent")].copy()
|
| 219 |
if not prec_df.empty:
|
| 220 |
prec_df["date"] = pd.to_datetime(prec_df["date"])
|
| 221 |
prec_df = prec_df.sort_values("date")
|
| 222 |
-
|
| 223 |
-
delta = n_actuelle - derniere_note
|
| 224 |
|
| 225 |
-
# --- RÉCUPÉRATION DE LA BANQUE PERSONNALISÉE ---
|
| 226 |
bank = get_comment_bank(eleve)
|
| 227 |
-
|
| 228 |
-
# --- ASSEMBLAGE ---
|
| 229 |
-
final_txt = ""
|
| 230 |
|
| 231 |
-
# 1.
|
| 232 |
-
if random.random() > 0.66:
|
| 233 |
-
final_txt += random.choice(bank["intro"])
|
| 234 |
-
|
| 235 |
-
# 2. Dynamique (Delta)
|
| 236 |
if delta is not None:
|
| 237 |
-
if delta >
|
| 238 |
-
elif delta <
|
| 239 |
-
|
| 240 |
-
else: final_txt += random.choice(bank["delta_stable"])
|
| 241 |
else:
|
| 242 |
-
|
| 243 |
|
| 244 |
-
#
|
| 245 |
-
if n_actuelle >=
|
| 246 |
-
elif n_actuelle >= 14:
|
| 247 |
-
elif n_actuelle >= 10:
|
| 248 |
-
else:
|
| 249 |
|
| 250 |
-
#
|
| 251 |
-
|
| 252 |
|
| 253 |
-
return
|
| 254 |
|
| 255 |
|
| 256 |
# --- FONCTIONS TECHNIQUES ---
|
|
|
|
| 153 |
return summary
|
| 154 |
|
| 155 |
def get_comment_bank(eleve):
|
|
|
|
| 156 |
return {
|
| 157 |
"intro": [
|
| 158 |
+
f"L'investissement de {eleve} ce trimestre est remarquable par sa régularité. ",
|
| 159 |
+
f"On sent chez {eleve} une réelle volonté de s'approprier les notions abordées. ",
|
| 160 |
+
f"Une présence active et constructive en classe qui porte ses fruits pour {eleve}. ",
|
| 161 |
+
f"Un ensemble solide : {eleve} fait preuve d'une belle rigueur intellectuelle. ",
|
| 162 |
+
f"Les résultats de {eleve} témoignent d'une attention soutenue et d'un travail sérieux. "
|
| 163 |
],
|
| 164 |
"delta_plus": [
|
| 165 |
+
f"Le déclic tant attendu semble s'être produit : quelle progression ! ",
|
| 166 |
+
f"Les efforts de remédiation fournis par {eleve} se traduisent enfin dans les résultats. ",
|
| 167 |
+
f"Une montée en puissance très encourageante qui valide les méthodes de travail de {eleve}. ",
|
| 168 |
+
f"Bravo pour ce gain de confiance, {eleve} gagne en autonomie et en précision. ",
|
| 169 |
+
f"Une dynamique ascendante qui montre que {eleve} a su tirer profit des corrections précédentes. "
|
| 170 |
],
|
| 171 |
"delta_moins": [
|
| 172 |
+
f"Un fléchissement passager qui ne doit pas entamer la motivation de {eleve}. ",
|
| 173 |
+
f"Attention à ne pas se décourager : ce résultat est un accident de parcours. ",
|
| 174 |
+
f"Un manque de rigueur ponctuel a pénalisé {eleve}, il faut retrouver la concentration initiale. ",
|
| 175 |
+
f"{eleve} semble avoir rencontré des difficultés sur ce chapitre, une reprise des bases est nécessaire. ",
|
| 176 |
+
f"La méthodologie n'est pas encore totalement stabilisée, ce qui explique ce recul. On reste mobilisé ! "
|
| 177 |
],
|
| 178 |
"delta_stable": [
|
| 179 |
+
f"Une régularité exemplaire qui sécurise le socle de compétences de {eleve}. ",
|
| 180 |
+
f"{eleve} maintient son niveau grâce à un investissement constant et sérieux. ",
|
| 181 |
+
f"La constance des efforts de {eleve} est le gage d'une scolarité sereine. ",
|
| 182 |
+
f"Un niveau solide et pérenne qui permet à {eleve} d'aborder la suite avec confiance. "
|
|
|
|
|
|
|
| 183 |
],
|
| 184 |
"excellent": [
|
| 185 |
+
f"La finesse de l'analyse et la précision de la rédaction sont impressionnantes.",
|
| 186 |
+
f"Une maîtrise totale des compétences attendues, agrémentée d'une curiosité intellectuelle certaine.",
|
| 187 |
+
f"Travail d'une grande qualité, tant sur le fond que sur la forme. C'est exemplaire.",
|
| 188 |
+
f"Des productions d'un haut niveau qui servent de référence pour l'ensemble du groupe."
|
| 189 |
],
|
| 190 |
"bien": [
|
| 191 |
+
f"Les acquis sont solides et la mise en œuvre des méthodes est efficace.",
|
| 192 |
+
f"Un bon niveau de compréhension qui permet à {eleve} de progresser sereinement.",
|
| 193 |
+
f"L'essentiel est parfaitement maîtrisé, il s'agit maintenant d'approfondir les nuances.",
|
| 194 |
+
f"Des résultats très satisfaisants qui récompensent une attitude positive face au travail."
|
| 195 |
],
|
| 196 |
"moyen": [
|
| 197 |
+
f"Le socle est en cours d'acquisition, mais manque encore parfois de précision.",
|
| 198 |
+
f"Des résultats corrects qui pourraient gagner en hauteur avec une participation plus active.",
|
| 199 |
+
f"L'ensemble est honorable, toutefois la méthodologie doit gagner en rigueur.",
|
| 200 |
+
f"Des bases présentes qu'il faut maintenant consolider par un travail personnel plus régulier."
|
| 201 |
],
|
| 202 |
"difficile": [
|
| 203 |
+
f"Les résultats sont fragiles, mais la volonté de bien faire est visible. Ne pas baisser les bras.",
|
| 204 |
+
f"Des lacunes subsistent dans la maîtrise des fondamentaux ; un soutien ciblé serait bénéfique.",
|
| 205 |
+
f"L'investissement doit s'intensifier pour stabiliser des acquis encore trop incertains.",
|
| 206 |
+
f"Il faut s'appuyer sur les conseils méthodologiques pour franchir un palier."
|
| 207 |
],
|
| 208 |
"fin": [
|
| 209 |
+
f" Poursuivez vos efforts, le succès est au bout du chemin !",
|
| 210 |
+
f" Je vous encourage vivement à maintenir cette belle dynamique.",
|
| 211 |
+
f" Toute ma confiance vous accompagne pour la suite du trimestre.",
|
| 212 |
+
f" Continuez à cultiver cette curiosité, c'est votre plus bel atout.",
|
| 213 |
+
f" Ne relâchez pas vos efforts, la persévérance sera payante."
|
| 214 |
]
|
| 215 |
}
|
| 216 |
|
|
|
|
| 217 |
def get_smart_comment(eleve, note, matiere):
|
| 218 |
global df
|
| 219 |
if note == "Absent" or not eleve or not matiere:
|
| 220 |
+
return f"{eleve} était absent(e) lors de cette évaluation. Il faudra veiller à rattraper les notions manquées."
|
| 221 |
|
| 222 |
try: n_actuelle = float(note)
|
| 223 |
except: return ""
|
| 224 |
|
| 225 |
+
# Calcul de la tendance (Delta)
|
| 226 |
delta = None
|
| 227 |
prec_df = df[(df["eleve"] == eleve) & (df["matiere"] == matiere) & (df["note"] != "Absent")].copy()
|
| 228 |
if not prec_df.empty:
|
| 229 |
prec_df["date"] = pd.to_datetime(prec_df["date"])
|
| 230 |
prec_df = prec_df.sort_values("date")
|
| 231 |
+
delta = n_actuelle - float(prec_df.iloc[-1]["note"])
|
|
|
|
| 232 |
|
|
|
|
| 233 |
bank = get_comment_bank(eleve)
|
|
|
|
|
|
|
|
|
|
| 234 |
|
| 235 |
+
# 1. On commence par la Tendance (C'est le plus humain)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 236 |
if delta is not None:
|
| 237 |
+
if delta >= 2: comm = random.choice(bank["delta_plus"])
|
| 238 |
+
elif delta <= -2: comm = random.choice(bank["delta_moins"])
|
| 239 |
+
else: comm = random.choice(bank["delta_stable"])
|
|
|
|
| 240 |
else:
|
| 241 |
+
comm = random.choice(bank["premier_ds"])
|
| 242 |
|
| 243 |
+
# 2. On ajoute l'Analyse du niveau (Le fond)
|
| 244 |
+
if n_actuelle >= 17: comm += random.choice(bank["excellent"])
|
| 245 |
+
elif n_actuelle >= 14: comm += random.choice(bank["bien"])
|
| 246 |
+
elif n_actuelle >= 10: comm += random.choice(bank["moyen"])
|
| 247 |
+
else: comm += random.choice(bank["difficile"])
|
| 248 |
|
| 249 |
+
# 3. On finit par l'Encouragement (Le moteur)
|
| 250 |
+
comm += random.choice(bank["fin"])
|
| 251 |
|
| 252 |
+
return comm
|
| 253 |
|
| 254 |
|
| 255 |
# --- FONCTIONS TECHNIQUES ---
|