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>ouYearDataselon 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
yearDatade 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/ResultsByYearet 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/.
No comments to display
No comments to display