Formation VR est le module de simulations de formation en réalité virtuelle. Il combine
une application Unity (casque, avec version bureau) et un serveur compagnon (/vr)
qui gère les salons, historise les sessions et sert l'assistant IA.
- Serveur — prod :
https://vr.puwapi.com· dev : port6400 - Nature : serveur Node/TS + PostgreSQL (
puwapi_vr) — et non .NET comme la plupart des modules. - Gating :
vr— Enterprise uniquement (sur devis).
Authentification¶
Toutes les routes (hors /health) et le WebSocket exigent un JWT Identity Hub
(Authorization: Bearer … ; ?token= accepté sur le WebSocket) et le module vr à
l'abonnement. Le tenant est toujours extrait du token, jamais du corps.
Routes — gestion (le hub est l'autorité)¶
| Méthode | Route | Rôle |
|---|---|---|
| GET | /health | état + disponibilité de l'assistant (public) |
| GET · POST | /rooms | lister · créer un salon configuré |
| GET · PATCH · DELETE | /rooms/:id | détail · éditer · supprimer |
| POST | /rooms/:id/open · /rooms/:id/close | ouvrir / fermer (cycle de vie) |
| GET · POST | /rooms/:id/participants | lister · affecter un participant |
| DELETE | /rooms/:id/participants/:userId | retirer un participant |
| GET | /rooms/:id/live | présence live + snapshot de session |
| GET | /reports/overview · /reports/sessions | reporting agrégé (tenant) |
| GET | /rooms/:id/sessions · /sessions/:id | historique / détail + événements |
Routes — runtime (le casque est exécutant)¶
| Méthode | Route | Rôle |
|---|---|---|
| GET | /runtime/rooms | salons ouverts affectés à l'utilisateur |
| POST | /rooms/:id/host | héberger un salon ouvert {address, port} → {room, sessionId} |
| POST | /rooms/:id/heartbeat | présence {displayName, currentStep, isHost} (~20 s, TTL 60 s) |
| POST | /rooms/:id/leave | quitter (le départ de l'hôte clôt la session) |
| POST | /sessions/:id/telemetry | ingestion d'événements {events:[{userId?, type, label, detail}]} |
| WS | /assistant | session assistant IA (streaming + actions) |
Le protocole du WebSocket et le cycle de vie détaillé sont décrits dans Formation VR — salons, sessions & assistant IA.
Intégration avec la couche IA¶
L'assistant VR n'appelle pas un fournisseur d'IA directement : il passe par la surface interne du module IA.
App Unity ⇄ Serveur /vr ──POST /api/ai/internal/infer──► IA
X-Internal-Secret, tenantId au corps
- Configuration :
IA_BASE_URL+AI_INTERNAL_SECRET(⚠️ le même secret que côté module IA). - Repli : si le pont IA n'est pas configuré, le serveur retombe sur un appel direct historique (streaming + outils). Le chemin par le pont renvoie un bloc unique (pas de streaming ni d'outils dans cette version).
Identité & révocation¶
Comme le reste de la plateforme, le serveur VR s'appuie sur l'identité partagée
(JWT_SECRET_KEY, révocation via le Redis plateforme REDIS_URL). Sa vérification de
révocation est toutefois isolée (limite assumée, VR étant en Node).
Positionnement¶
La Formation VR s'adresse aux grandes organisations ayant des besoins de formation immersive (gestes techniques, sécurité, accueil). Elle se vend en Enterprise, sur devis, avec accompagnement.