LLMGAB commited on
Commit
659bd0d
·
verified ·
1 Parent(s): ee3e672

Update app_mieux.py

Browse files
Files changed (1) hide show
  1. 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"Un bilan très positif pour {eleve}. ", f"C'est un travail de qualité, {eleve}. ",
160
- f"On observe une implication réelle chez {eleve}. ", f"Un ensemble sérieux pour {eleve}. ",
161
- f"Résultats encourageants concernant {eleve}. ", f"Travail appliqué de la part de {eleve}. ",
162
- f"Une bonne saisie des notions par {eleve}. ", f"L'investissement de {eleve} se confirme. "
 
163
  ],
164
  "delta_plus": [
165
- f"Quelle belle progression, {eleve} ! ", f"Les efforts de {eleve} portent leurs fruits. ",
166
- f"Une dynamique ascendante très motivante pour {eleve}. ", f"Bravo {eleve} pour ce gain de confiance ! ",
167
- f"Une montée en puissance très appréciable chez {eleve}. ", f"Les progrès de {eleve} sont flagrants. ",
168
- f"{eleve} gravit les échelons avec succès. ", f"Un saut qualitatif impressionnant pour {eleve} ! "
 
169
  ],
170
  "delta_moins": [
171
- f"Une petite baisse pour {eleve} ce coup-ci. ", f"{eleve} est un peu en retrait, restons mobilisés. ",
172
- f"Un coup de mou passager pour {eleve}, ne baisse pas les bras. ", f"{eleve} doit se remobiliser. ",
173
- f"Attention {eleve}, les bases doivent être revues. ", f"Un score qui invite {eleve} à plus de vigilance. ",
174
- f"Ce DS était complexe pour {eleve}, on analyse l'erreur ensemble. "
 
175
  ],
176
  "delta_stable": [
177
- f"Des résultats très stables pour {eleve}. ", f"La régularité est au rendez-vous chez {eleve}. ",
178
- f"{eleve} maintient un niveau constant. ", f"Le travail de {eleve} reste solide et régulier. "
179
- ],
180
- "premier_ds": [
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"{eleve} montre une maîtrise remarquable.", f"Le travail de {eleve} est d'une précision exemplaire.",
186
- f"Les acquis de {eleve} sont parfaitement solides.", f"C'est un sans-faute pour {eleve} !",
187
- f"{eleve} a une compréhension totale du sujet."
 
188
  ],
189
  "bien": [
190
- f"{eleve} mène bien son travail.", f"Une bonne autonomie de {eleve} sur ces notions.",
191
- f"C'est très satisfaisant, {eleve} doit continuer ainsi.", f"Belle réussite de {eleve} sur ce devoir."
 
 
192
  ],
193
  "moyen": [
194
- f"{eleve} a compris l'essentiel, mais des détails échappent encore.", f"Un résultat correct que {eleve} devra consolider.",
195
- f"Attention aux étourderies, {eleve} y est presque.", f"Des efforts de concentration aideront {eleve}."
 
 
196
  ],
197
  "difficile": [
198
- f"Des difficultés persistent pour {eleve}, un soutien est recommandé.", f"Les notions ne sont pas encore stabilisées chez {eleve}.",
199
- f"{eleve} a besoin de manipuler davantage pour comprendre.", f"{eleve} doit reprendre les bases avec attention."
 
 
200
  ],
201
  "fin": [
202
- f" Continue ainsi, {eleve} !", f" Je te félicite, {eleve} !", f" Quel beau parcours, {eleve} !",
203
- f" Bravo {eleve} !", f" On lâche rien, {eleve} !", f" Je crois en tes capacités, {eleve} !"
 
 
 
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 "Absent(e) lors de l'évaluation."
212
 
213
  try: n_actuelle = float(note)
214
  except: return ""
215
 
216
- # --- CALCUL DU DELTA ---
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
- derniere_note = float(prec_df.iloc[-1]["note"])
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. Introduction (1 fois sur 3 pour ne pas être trop lourd)
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 > 0: final_txt += random.choice(bank["delta_plus"])
238
- elif delta < 0: final_txt += random.choice(bank["delta_moins"])
239
-
240
- else: final_txt += random.choice(bank["delta_stable"])
241
  else:
242
- final_txt += random.choice(bank["premier_ds"])
243
 
244
- # 3. Niveau
245
- if n_actuelle >= 18: final_txt += random.choice(bank["excellent"])
246
- elif n_actuelle >= 14: final_txt += random.choice(bank["bien"])
247
- elif n_actuelle >= 10: final_txt += random.choice(bank["moyen"])
248
- else: final_txt += random.choice(bank["difficile"])
249
 
250
- # 4. Fin
251
- final_txt += random.choice(bank["fin"])
252
 
253
- return final_txt
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 ---