Skip to main content

Modèle de données By Year

Objets Unity

  • SimulationByYear : simulation et options propres à la famille;
  • ActivityByYear : année courante, états, calendrier et données de l'activité;
  • TeamByYear : équipe et données runtime;
  • TeamDecisionsByYear : décisions par année;
  • ResultsByYear : résultats annuels;
  • TeamEvaluationByYear / StudentEvaluationByYear : évaluations;
  • StaticDataByYear : base de static data des jeux annuels.

Controllers

Les classes ActivityByYearController, SimulationByYearController, TeamByYearController, TeamEvaluationByYearController et StudentEvaluationByYearController servent de couche runtime entre ces modèles et l'UI.

Documents serveur

flowchart TD
SIM[(simulation)] --> ACT[(activity)]
ACT --> TEAM[(teams)]
ACT --> GAME[(actDataGameSpec)]
TEAM --> DEC[team decisions / activities]
ACT --> RES[(results)]
TEAM --> ET[(evaluationTeam)]
SIM --> ES[(evaluation)]
TEAM --> LOG[(teamsLogbooks)]

currentYear / currentYearState

L'activité garde l'année courante et son état. Les transitions serveur utilisent notamment les états “not started”, “year started”, “generating” et “year finished”. Les contrôles Unity affichent l'écran approprié en fonction de cet état.

years[]

Chaque entrée annuelle peut porter les dates de début/fin et le flag de pratique. Le calendrier et le mode de gestion déterminent si les transitions se font manuellement ou automatiquement.

Ajouter un champ de décision ou de résultat By Year

Décision étudiante

    Ajouter le champ dans le modèle Unity TeamDecisions<Game> ou YearData selon son scope. Ajouter la désérialisation avec une valeur compatible avec les anciennes équipes. Ajouter le contrôle UI qui édite cette décision. Ajouter la custom command serveur ou étendre celle qui possède déjà la décision. Sauvegarder dans le bon yearData de l'équipe. Envoyer un RTT game-specific si les coéquipiers doivent voir le changement. Consommer la décision dans GenerateResults<Game>. Mettre à jour anyDecisionsTaken() si cette décision compte pour déterminer si l'équipe a commencé. Mettre à jour les bots si une équipe bot doit prendre cette décision.

    Résultat annuel

      Ajouter le champ au modèle serveur de résultat produit par generateCurrentYearResults(). Le persister dans results. Ajouter le modèle Unity Results/ResultsByYear et désérialiser. Ajouter report/tooltip/UI. Si le champ participe à ActPerf, mettre à jour Eval<Game>.computeActPerfScore(). Si le champ participe au ranking, mettre à jour updateRankings<Game>(). Vérifier deleteResults()/reopen year.

      Où placer une donnée annuelle

      Donnée Emplacement Décision qui change chaque année TeamDecisions<Game>.yearData[year] ou structure équivalente. État d'équipe durable entre années Team<Game> / team data persistante. Résultat calculé d'une année results. Configuration immuable Static data. Donnée commune à toute l'activité actDataGameSpec.

      Compatibilité anciens documents

      Une nouvelle propriété de team/activity doit être tolérante à l'absence. Si sa valeur doit absolument exister sur les vieux documents, utiliser la migration correspondante dans _utils/version/.