Accueil Github ↗
Itération 3

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

ComposantRôle
PlayFabBaaS : comptes, données utilisateur (UserData), leaderboards
PlayerDataCache statique en mémoire (données lues depuis PlayFab)
PlayerDataManagerClasse statique qui orchestre les requêtes PlayFab et peuple PlayerData
PlayerPrefsPersistance 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

ProfilDonnées supplémentaires chargées
ÉlèveDB, DBFromClass, CodeProfesseur + données publiques de l’enseignant
ProfesseurStudents (liste JSON de la classe)

Gestion des erreurs réseau

LogIn.OnError() gère quatre cas spécifiques :

Code PlayFabMessage 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.