Évaluations, logbook, scénarios et rankings By Year
Évaluations
_utils/utils_eval.js fournit le cadre commun pour activité, présence, logbook, custom evaluations et stubs. Chaque jeu fournit ensuite son Eval<Game> via la factory d'évaluation.
Scores game-specific
Les classes EvalEnt1, EvalHr1, EvalMgt1, EvalMk1 et équivalents calculent notamment scenario score, segment score et activity performance à partir des résultats propres au jeu.
Logbook
Les données de logbook sont persistées dans teamsLogbooks. utils_by_year.deleteYearLogbook() montre que le logbook et ses évaluations sont liés au cycle annuel et doivent être nettoyés correctement lors d'une réouverture/suppression d'année.
Présence
startYear() crée un nouveau stub de présence pour les étudiants. Les helpers setYearPresence() / deleteYearPresence() maintiennent ces données lors des changements d'état.
Scénarios
Le client utilise StudentPlayScenarioByYearState et les pages/scénarios propres au jeu. Le serveur peut calculer le scenario score via la factory d'évaluation game-specific.
Rankings
_utils/utils_rankings.js gère les scores et mises à jour de rankings. Chaque jeu peut appliquer son propre calcul avec des fonctions comme updateRankingsEnt1, updateRankingsHr1, etc.
flowchart LR
RESULTS[Year Results] --> PERF[Act Performance]
SCEN[Scenario] --> EVAL[Student Evaluation]
LOG[Logbook] --> EVAL
PRES[Presence] --> EVAL
PERF --> EVAL
RESULTS --> RANK[Rankings]
UI
EvaluationByYearSyncControl, EvaluationByYearAsyncControl, lignes étudiant, detailed reports, logbook controls, presence popup et ranking controls composent la couche commune.
Ajouter un score ActPerf ou une composante de ranking
ActPerf
Eval<Game>.computeActPerfScore().
Ajouter la pondération dans act_perf_pond si la métrique est configurable.
Vérifier le stub envoyé à evaluationTeam.
Ajouter le label/report Unity.
Tester score d'année en cours vs année terminée.
Ranking
Chaque jeu peut définir updateRankings<Game>(). Une nouvelle métrique de ranking doit être calculable depuis la donnée persistée après génération; éviter un ranking basé sur un état transitoire uniquement présent en mémoire.
Scénario
Les réponses scénario sont distinctes des décisions annuelles. Si une nouvelle question/segment influence l'évaluation :
computeScenarioScoreAndSave() ou computeSegmentScoreAndSave() du jeu;
vérifier les Scenario.eScenarioStep uniquement s'ils contrôlent un flow/tutoriel, pas comme stockage des réponses.
Logbook et présence lors d'une nouvelle année
startYear() initialise la présence; reopen doit la supprimer/restaurer correctement. Le logbook est par activité/année et son évaluation est séparée du texte. Toute nouvelle logique annuelle doit conserver ces index d'année.
Debug d'une note globale fausse
computeActPerfScore() avec le même year/team.
Inspecter evaluationTeam.
Inspecter les pondérations simulation/static data.
Inspecter le stub Unity et les caches.