Skip to main content

Logbook — sauvegarde, historique et évaluation

Rôle du logbook

Le logbook est le journal de bord de l'équipe. Son système comprend la sauvegarde des entrées, la synchronisation entre clients, la restauration d'historique et l'évaluation. Ces responsabilités justifient une page dédiée dans Commun.

Le contenu du logbook est distinct des notifications envoyées au panel Web. Pour ces dernières, voir Panel Web — notifications et intégration avec le Game.

Modèle et persistance

Élément Responsabilité
Logbook Représentation runtime commune du journal de bord.
TeamBaseController.Logbook Accès au logbook de l'équipe depuis le controller.
teamsLogbooks Document serveur contenant les données persistées.
save_logbook.js Point d'entrée serveur de sauvegarde.
logbook_changed Message de synchronisation adressé à l'équipe et au professeur.

Chemin de sauvegarde

  1. Le client appelle TeamBaseController.SaveLogbookEntry().
  2. Le controller normalise l'actUid en mode asynchrone, puis appelle SaveLogbook.
  3. Le script serveur save_logbook.js écrit dans teamsLogbooks.
  4. Le serveur émet logbook_changed à l'équipe et au professeur pour synchroniser les clients concernés.

La donnée persistée constitue la référence à contrôler. Le message temps réel signale un changement; il ne remplace pas la vérification du document ni le chargement initial. Pour le mécanisme commun, voir RTT, messages et synchronisation.

Historique et restauration

Le système supporte la restauration d'historique. Une modification du format des entrées ou du parcours de sauvegarde doit préserver la lecture et la restauration des données existantes.

Lors d'une restauration, vérifier le bon contexte d'équipe et d'activité, le contenu obtenu après rechargement, puis sa visibilité sur un second client. Une entrée visible localement ne suffit pas à confirmer la sauvegarde ou la restauration côté serveur.

Évaluation du logbook

L'évaluation est un flux distinct de la sauvegarde du texte. _utils/utils_eval.js fournit le cadre commun d'évaluation du logbook, de l'activité et de la présence; chaque jeu fournit ensuite son implémentation Eval<Game> via la factory d'évaluation.

Diagnostiquer séparément une erreur de contenu et une erreur de note. Pour une entrée absente, commencer par teamsLogbooks et la synchronisation. Pour une note incorrecte, examiner le flux d'évaluation et le contexte d'activité/année.

Voir Système d'évaluation commun et Évaluations, logbook, scénarios et rankings By Year.

Cycle annuel By Year

En By Year, le logbook est lié à l'activité et à l'année; son évaluation reste séparée du texte. Conserver les index d'année lorsqu'on ajoute une logique annuelle.

utils_by_year.deleteYearLogbook() intervient dans le nettoyage du logbook et de ses évaluations. Une réouverture ou une suppression d'année doit traiter correctement ces deux ensembles de données. Vérifier que l'opération vise l'année attendue et ne laisse pas une ancienne évaluation associée à un contenu supprimé.

Modifier le système

  1. Identifier le contexte : équipe, activité, mode synchrone/asynchrone et année si applicable.
  2. Adapter le modèle Logbook et le controller si le format ou le comportement change.
  3. Vérifier le contrat SaveLogbook, le script serveur et la persistance dans teamsLogbooks.
  4. Vérifier le traitement de logbook_changed côté équipe et professeur.
  5. Contrôler l'historique, la restauration et l'évaluation.
  6. Pour By Year, contrôler aussi la réouverture et le nettoyage annuel.

Vérification et diagnostic

  • Entrée perdue après reconnexion : vérifier la sauvegarde serveur, les identifiants de contexte et teamsLogbooks.
  • Second client désynchronisé : vérifier logbook_changed, ses destinataires et le rafraîchissement côté client.
  • Historique incorrect : vérifier les données conservées et le contexte de restauration.
  • Note incorrecte : vérifier le flux d'évaluation séparément du texte.
  • Anciennes données après réouverture : vérifier le nettoyage annuel et les évaluations liées.

Valider une sauvegarde, un rechargement après reconnexion, une mise à jour sur un second client, une restauration d'historique et une évaluation. En By Year, ajouter un cas de réouverture d'année.