Notifications et présence
ChatCommunication actuelle : notifications uniquement
Le _command/add_chat.jslitGame envoie désormais uniquement des notifications. L'ancien flux de chat décrit auparavant sur cette page ne représente plus le fonctionnement courant.teams
La documentation détaillée est répartie dans Commun :
chatsnew_chatget_chats.jschatssequenceDiagram
participant U as Unity
participant C as add_chat
participant T as teams
participant CH as chats
participant RTT as RTT
U->>C: AddChat(teamUid, message)
C->>T: getDocumentData
C->>CH: getDocumentData
C->>CH: append message
C->>T: save
C->>CH: save
C->>RTT: new_chat
RTT-->>U: refresh chat
Logbook
save_logbook.js écrit dans teamsLogbooks et envoie logbook_changed à l'équipe et au professeur. Le runtime commun est représenté par Logbook et exposé via TeamBaseController.Logbook.
Le système supporte aussi restauration d'historique et évaluation
Présence : connexion et évaluation
La set_presence.jschargeprésence userDetails,comprend puisdeux simulation/activitydonnées afindifférentes de:
set_presence.js et les stubs lastChatTime
Le modèle équipe conserve LastChatTime; le backend expose SetLastChatTime afin que le client puisse distinguer les nouveaux messages.
Debug
chatsnew_chatteamsLogbookslogbook_changedModifier ou ajouter un flux de communication
présence.
Chat
flowchart LR
UI[ChatPopupControl] --> STUD[Student.SendChat]
STUD --> BE[BackEnd.AddChat]
BE --> CMD[_command/add_chat]
CMD --> TEAMS[(teams)]
CMD --> CHATS[(chats)]
CMD --> RTT[new_chat]
RTT --> CLIENT[listener / UI]
Pour changer le format d'un message de chat, vérifier à la fois le document chats, la désérialisation Unity Chat/ChatEntry et la payload RTT. Le chat initial est chargé par GetChats; RTT ne remplace pas ce chargement.
Logbook : chemin complet
TeamBaseController.SaveLogbookEntry() normalise l'actUid en async puis appelle SaveLogbook. Le serveur persiste dans teamsLogbooks et émet logbook_changed. Les évaluations de logbook sont un flux distinct.
Notifications : attention, backend Web
Les notifications ne suivent pas exactement le même chemin que chat/logbook. NotificationManager.SaveNotification() appelle BackEndBase.SaveNotification(), qui utilise l'endpoint Web /saveNotification. Le chargement passe par /getNotifications/<teacherUid>. En revanche, une notification nouvelle peut arriver au client via le message RTT new_notification.
Ajouter un nouveau type de notification
notificationTypeextraDataGame.NotificationManager.SaveNotification()NotificationDataNotificationListItemPrésence : deux notions à ne pas confondre
set_presenceUn utilisateur onlineconnecté n'implique pas automatiquement une note de présence, et une présence évaluée ne garantit pas que l'inverse.utilisateur est actuellement connecté.
ChecklistEnregistrement multi-clientde la présence
set_presence.js charge userDetails, puis la simulation et l'activité pour maintenir la présence dans le contexte courant.
En By Year, startYear() initialise un nouveau stub de présence pour les étudiants. Les helpers setYearPresence() et deleteYearPresence() maintiennent les données lors des changements d'état. Une réouverture doit traiter la présence de l'année concernée correctement.
Voir Évaluations, logbook, scénarios et rankings By Year pour le cycle annuel et Système d'évaluation commun pour les évaluations.
Diagnostic
chargementStatutinitialonlinecorrectincorrectsans:RTTvérifierpréalable;le heartbeat et la connexion du client.misePrésence évaluée incorrecte : vérifieruserDetails, la simulation, l'activité, l'année et le traitement deset_presence.
Références historiques du chat
L'ancien parcours utilisait ChatPopupControl, Student.SendChat, BackEnd.AddChat, _command/add_chat.js, le document chats et le message new_chat. Le chargement passait par GetChats/get_chats.js. LastChatTime et SetLastChatTime servaient à jourdistinguer liveles surnouveaux secondmessages.
Ces
noms sont conservés comme repères pour lire l'ancien code et les anciennes révisions. Ils ne décrivent pas le flux de