Skip to main content

Référence des utils serveur BrainCloud

Carte générale

Fichier/dossierResponsabilité
utils.jsHelpers transversaux, UIDs, calculs simples, copie/merge, équipes/étudiants, rôles, CRC, logging.
utils_documents.jsLecture, query, création, sauvegarde, suppression, increments et versioning des Custom Entities.
utils_message.jsEnvoi de messages RTT à user/team/sim/activity et messages spécialisés.
utils_eval.jsStubs et scores d'évaluation communs.
utils_rankings.jsScores, tops et mise à jour des rankings.
utils_RNG.jsRandom déterministe utilisé par la génération serveur.
utils_redis.jsHelpers d'accès Redis lorsque la feature l'utilise.
utils_game_specific_base.jsBase des utils game-specific et accès aux static data/chunks.
utils_by_module.jsCharge/initialise le socle By Module.
utils_by_year.jsCycle annuel, jobs, bots et transitions By Year.
by_module/Moteurs Accounting : création data, bills, answer key, grading, results, inventory.
command/Implémentations réutilisables appelées par les wrappers command.
factory/Sélection game-specific des utils, évaluations et générateurs de résultats.
version/Migrations par type de document.

utils.js — fonctions structurantes

Parmi les helpers importants : getTeamActUid, getActUid, dates/mois/années, deleteTeam, getDisplayName, getActEvalTeamData, getTeamDecisionsData, getTeamsOfActivity, getStudentsOfActivity, hasRole, getUserUid, mergeObjects, copyOf/deepCopyOf, logging Discord et validation CRC avant sauvegarde équipe.

command/

  • utils_create_activity.js : logique partagée de création d'activité;
  • utils_create_team.js : création/initialisation d'équipe;
  • utils_custom_command_by_module.js : routeur By Module;
  • utils_custom_command_by_year.js : routeur By Year;
  • utils_join_simulation.js : logique de join simulation;
  • utils_reopen_module.js : rollback/réouverture By Module;
  • utils_reopen_year.js : rollback/réouverture By Year;
  • utils_start_next_activity.js : transition d'activité.

factory/

  • utils_factory_game_specific_utils.js : instancie utilsByGameUid;
  • utils_factory_generate_results.js : moteur de résultats par jeu;
  • utils_factory_eval.js : moteur d'évaluation par jeu.

Principe de placement

Un wrapper sous _command doit rester mince. Dès qu'une logique est partagée entre plusieurs entrées, elle doit être placée dans _utils ou dans la famille métier adéquate. Les règles propres à ENT1/MK1/etc. restent dans leurs dossiers game-specific.