Backend — Vue d'ensemble
Architecture backend Cogni-Actif : PlayFab comme BaaS, structure de BackendServices/ et flux général de connexion vers le menu principal.
Le backend de Cogni-Actif repose entièrement sur PlayFab (BaaS Microsoft). Toutes les données joueur (identité, DB, AP quotidienne, cosmétiques, liste élèves) sont stockées dans le cloud PlayFab et téléchargées au login.
Stack
| Composant | Rôle |
|---|---|
| PlayFab | BaaS : comptes, données utilisateur (UserData), leaderboards |
PlayerData | Cache statique en mémoire (données lues depuis PlayFab) |
PlayerDataManager | Classe statique qui orchestre les requêtes PlayFab et peuple PlayerData |
PlayerPrefs | Persistance locale légère : remember me, préférences audio, AP journalière |
Structure de BackendServices/
BackendServices/
├── Playfab/
│ ├── Connexion/ LogIn, LogOut, InactiviteCheck, RememberMe, ShowPassword
│ ├── Data/ PlayerDataManager, ConnexionData, DateChecker, GameData,
│ │ SettingsData, HideForProfil, SpecificDisplayToProfil
│ ├── Data/Personnalisation/ BoutiqueSaver, ChangeAppearance, ChangeCosmetic,
│ │ CosmeticDatabase, RotateDragAndDrop
│ ├── Data/StudentsManagement/ StudentSystemCore
│ └── SafeQuit/ SafeQuit, QuitButton
└── Internet/ OpenLink
Flux général après login
LogIn.Login()
└─ PlayFabClientAPI.LoginWithPlayFab()
└─ OnSuccess()
├─ PlayerData.PlayerUserName ← username
├─ onLoginSuccess?.Invoke() (Remember Me)
└─ PlayerDataManager.LoadPlayerGeneralData()
├─ PlayerData ← Name, Firstname, ProfilType, AP, cosmétiques...
├─ GestionnaireBadge.ChargerBadges()
└─ if ProfilType == "Eleve"
│ └─ LoadStudentData() → LoadPublicPlayerData() → UpdatePlayerData() → MainMenu
└─ if ProfilType == "Professeur"
└─ LoadTeacherData() → UpdatePlayerData() → MainMenu
Les appels sont enchaînés par callbacks (pas d’async/await) : chaque méthode de PlayerDataManager prend un System.Action onComplete qu’elle invoque à la fin de la requête HTTP, même en cas d’erreur (pour que le flux ne se bloque pas).
Profils
| Profil | Données supplémentaires chargées |
|---|---|
| Élève | DB, DBFromClass, CodeProfesseur + données publiques de l’enseignant |
| Professeur | Students (liste JSON de la classe) |
Gestion des erreurs réseau
LogIn.OnError() gère quatre cas spécifiques :
| Code PlayFab | Message affiché |
|---|---|
ServiceUnavailable | ”Tu ne semble pas connecté à internet.” |
AccountNotFound | ”Identifiant introuvable.” |
InvalidUsernameOrPassword | ”Mot de passe incorrect.” |
APIClientRequestRateLimitExceeded | ”Tu as fait trop de tentatives… Attends un peu.” |
Chaque erreur déclenche aussi CoroutineHelper.StartCoroutineError() pour envoyer un log horodaté au système de monitoring.