# ProserveReport - Mémoire Projet (locale au repo) Ce fichier sert de référence pour Claude Code entre sessions et postes de travail. ## Contexte - **Projet** : Simulateur VR d'entraînement pour forces de police (Proserve) - **API** : PHP, consommée par Unreal Engine en lecture/écriture - **Objectif** : Créer une interface web locale pour visualiser sessions et statistiques - **Serveur** : WAMP (Apache + MariaDB), installé localement ## Base de données - **Nom** : `ProserveAPI` - **SGBD** : MariaDB 10.4.27 - **Connexion** : `localhost`, user `root`, pas de mot de passe - **Schema SQL** : `proserveapi.sql` à la racine ## Structure API ``` ProserveAPI/htdocs/proserve/ ├── config/ → database.php, constants.php, init.php, error.php ├── objects/ → 18 modèles PHP (User, GameSession, TriggerEvent, ReactEvent, etc.) ├── events/ → storetriggerevent.php, storereactevent.php ├── session/ → start, stop, registeruser, userleave, getobjectives, updateobjectives, debrief, get ├── user/ → signup, login, get, update, resetpassword ├── stats/ → get, userhistory ├── lists/ → sessions_for_user, users_in_session ├── score/ → score_algo1.php, score.php └── debug/ → test.php ``` ## Tables principales | Table | Clé | Description | |-------|-----|-------------| | users | id | Comptes (username, password base64, stats moyennes avgPrecision/avgReaction/avgFault/avgRapidity) | | sessions | id | Sessions (sessionType, mapName, scenarioName, score, timeToFinish, success) | | participates | userId+sessionId | Relation user-session (score, firePrecision, reactionTime, rôle, endStatus, results JSON) | | triggerevents | sessionId+indexCount | Tirs (srcUserId, type, timestamp, successful) | | reactevents | id | Impacts (reactType, hitBoneName, damage, hitPrecision, distance, reactTime, reactMode) | ## Types de session 0:FireRange, 1:Challenge, 2:Protect, 3:De-Escalation, 4:Terrorism, 5:FireExtinction, 6:Recovering ## Types de réaction (impacts) 0:EnemyHit, 1:CivilianHit, 2:PoliceHit, 3:ObjectHit, 4:PaperTargetHit, 5:TargetHit, 6:DeadBodyHit ## Rôles utilisateur 0:Police, 1:Enemy, 2:Civil, 3:IA ## Scoring - FireRange : precision * 10 - Autres modes : (precisionOnEnemies * 100) - (nbCivils * 200) - Succès si score >= 70 - Sessions "Calibration" exclues des stats ## Objectifs JSON (par user par session) 9 catégories : civilian, time, enemy, health, precision, reactTime, ammoLimit, target, overall ## Endpoints API (tous POST, JSON) - User : signup, login, get, update, resetpassword - Session : start, stop, registeruser, userleave, getobjectives, updateobjectives, debrief, get - Events : storetriggerevent, storereactevent - Stats : get, userhistory - Listes : sessions_for_user, users_in_session ## Environnement serveur - **XAMPP** (C:\xampp) - pas WAMP - **PAS D'INTERNET** sur le PC cible : tout CSS/JS/fonts inclus localement (pas de CDN) ## Interface Web (en cours) - Objectif : reproduire la consultation depuis Unreal en version web - Hébergée sur XAMPP local - Git : `C:\ASTERION\GIT\ProserveReport\PS_Report` - Test : `C:\xampp\htdocs\ProserveReport` - Accès data : via l'API PHP existante - Pages prévues : dashboard, liste sessions, détail session/debrief, profil utilisateur, stats