PS_ProserveReport/.claude-memory.md
2026-03-09 07:12:13 +01:00

3.3 KiB

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
  • Stack : PHP + HTML/CSS/JS, Bootstrap local, Chart.js local
  • Accès data : via l'API PHP existante
  • Pages prévues : dashboard, liste sessions, détail session/debrief, profil utilisateur, stats