Skip to main content

Grading, reassemble et calcul des scores

Trois étapes distinctes

La correction By Module n'est pas un seul calcul. Elle sépare : grading brut, réassemblage/pondération, puis publication du résultat.

flowchart LR
DEC[Décisions étudiant] --> GRADE[byModuleGradeModule]
AK[Answer Key] --> GRADE
GRADE --> RAW[scores bruts + errors + expectedValues + ignoredPageUids]
RAW --> RE[byModuleReassembleAnswer]
RE --> FINAL[scores finaux + errorScores]
FINAL --> GEN[GenerateTeamModuleResults]

byModule_utils_grade_module.js

byModuleGradeModule() initialise le contexte de grading et compare la donnée étudiante aux valeurs attendues. Le moteur route chaque modulePageUid vers son correcteur spécialisé et retourne :

  • scores bruts;
  • errors structurées;
  • expectedValues;
  • ignoredPageUids.

Si les formules sont actives, leurs valeurs peuvent être pré-calculées avant la comparaison.

byModule_utils_reassemble_answers.js

byModuleReassembleAnswer() transforme les scores bruts selon la configuration de pages_settings. Il charge notamment inputs_ponderation, scores_ponderation, scores_details et les colonnes ignorées.

Le moteur supporte des chaînes de pondération et des pénalités. Il recalcule aussi un arbre errorScores qui permet au frontend d'associer la perte de points aux cellules/rows concernées.

Pages ignorées

Une page dans ignoredPageUids reçoit un score -1 au réassemblage. Cela distingue une page non évaluée d'une page évaluée à 0.

Arrondis

Le réassemblage contient une logique explicite de correction des erreurs d'arrondi autour de 0 afin que la somme des pénalités ne produise pas des scores légèrement négatifs ou des reliquats artificiels.

Configuration

Les pondérations sont data-driven. Modifier un score n'implique donc pas nécessairement de changer le JavaScript : commencer par vérifier pages_settings.json et ses scores_details/scores_ponderation.

Tests

Les tests de grade_module_tests/ couvrent grading générique, balance sheet, income taxes et petty cash. Lorsqu'un changement d'answer key modifie une valeur attendue, exécuter également les tests de grading correspondants.