Vue d’ensemble du système Web
Architecture vérifiée le 30 septembre 2026 sur la branche locale messagerie_fixes, HEAD 3f74bcb0 et changements indexés. Déploiement non vérifié.
But de cette page
Cette page est la carte d’entrée du système Web Uniksim. Elle permet de comprendre rapidement quelles applications existent, comment elles communiquent, où sont stockées les données et dans quel chapitre chercher lorsqu’un problème survient.
Carte globale du système
flowchart LR
USER[Utilisateur] --> ANG[Frontend Angular]
ADMIN[Administrateur] --> ANG
ANG -->|HTTP| NEST[NestJS principal :3000]
ANG <-->|Socket.IO| WS[SupportGateway]SupportGateway /support]
ANG <-->|Socket.IO| ACC[AccountGateway /account]
ANG --> UNITY[Unity WebGL]
UNITY -->|HTTP / heartbeat / données jeu| NEST
NEST --> CTRL[Controllers]
CTRL --> SVC[Services métier]
SVC --> ORM[TypeORM]
ORM --> MYSQL[(MySQL)]
SVC --> REDIS[(Redis)]
SVC --> BC[BrainCloud]
SVC --> FB[Firebase / FCM]
SVC --> MAIL[Mail]
SVC --> AI[Serveur IA :8106]
NEST --> ADMINEXP[Admin Server Express :8105]
ADMINEXP --> BC
ADMINEXP --> REDIS
AI --> CHROMA[(Chroma / embeddings)]
AI --> PROVIDER[Provider IA]
NEST --> STATIC[Frontend Angular compilé]
STATIC --> USER
Les grandes briques
Frontend Angular
Application principale côté navigateur dans uniksimFrontEnd/. Elle contient les pages utilisateur et admin, les composants UI, les services HTTP, l’authentification frontend, le support temps réel et l’intégration Unity.
Backend NestJS
Serveur HTTP principal dans uniksim-back-end/. Le point d’entrée est src/main.ts et l’assemblage global se fait dans src/app.module.ts. Il expose les APIs utilisateur, jeu, administration, support, notifications, push, mail et IA.
Admin Server Express
Serveur HTTP auxiliaire séparé dans src/node.js/server/admin_server.js, sur le port 8105. Il sert principalement certaines opérations historiques/BrainCloud, Redis, copie de simulations et SSE.
Serveur IA
Le backendNestJS attend quel’ouverture ledu listener IA sur 127.0.0.1:8106, puis démarre. L’initialisation des providers et de Chroma se poursuit en arrière-plan; leur indisponibilité n’empêche pas NestJS ni l’endpoint de santé de démarrer. Les requêtes retentent les dépendances manquantes. Le serveur IA soitcontient prêtdes avantcontrats, defactories, lancerproviders, NestJS.tokenizer, Lapricing, logiqueUsageMeter seet trouveCostGuard sous src/node.js/server/ai/. LeGemini systèmeutilise gèremaintenant génération,Vertex embeddings,AI, RAG,avec contrôle des coûtsgénération et intégrationembeddings ausélectionnés support.indépendamment.
Unity WebGL
Le jeu Unity est intégré au Web. Angular affiche le build WebGL et Unity communique avec le backend pour les versions, textes, données utilisateur, heartbeat, classements, images et crash logs.
Persistance
- MySQL + TypeORM : utilisateurs, rôles, produits, support, installations FCM, etc.
- Redis : présence, sessions, notifications, rankings et autres données runtime.
- BrainCloud : plusieurs données historiques et fonctions liées aux simulations.
- Chroma : recherche vectorielle du système IA/RAG.
Flux typique d’une requête Web
sequenceDiagram
participant U as Utilisateur
participant A as Angular
participant C as Controller NestJS
participant S as Service
participant D as MySQL / Redis / BrainCloud
U->>A: Action dans l’interface
A->>C: Requête HTTP
C->>C: Guard / validation
C->>S: Appel métier
S->>D: Lecture / écriture
D-->>S: Résultat
S-->>C: Données métier
C-->>A: Réponse API
A-->>U: Mise à jour de l’interface
Flux temps réel
LeDeux système support/notifications utilisenamespaces Socket.IO séparent les responsabilités : /account porte présence, télémétrie consentie, jeu actif et desnotifications; événements/support backend.porte messages, tickets et typing. Le frontendmiddleware maintientJWT sonest étatcommun, localles rooms sont propres à chaque namespace et reçoitle frontend partage RealtimeSocket. Seuls les changementssockets sansdu attendrecompte unsont prochainenregistrés GET.dans PresenceService. Voir les pages Support temps réel et Notifications et Push.
Toutes les notifications sont stockées dans une inbox Redis du compte, diffusées par AccountGateway puis poussées vers toutes ses installations FCM. Les notifications envoyées par le jeu passent par GameNotificationService, qui vérifie les membres de la simulation BrainCloud. Les subscriptions FCM par productCode ont été retirées.
Build et hébergement
Le build Angular de production est généré dans uniksim-back-end/src/front, puis NestJS est buildé à son tour. Le backend sert ensuite le frontend compilé avec ServeStaticModule. L’instance de développement hébergée est sim.dev.uniksim.com. Voir Build et déploiement Web.
Où chercher selon le problème
Points d’entrée essentiels
uniksimFrontEnd/src/main.tsuniksimFrontEnd/src/app/app.module.tsuniksim-back-end/src/main.tsuniksim-back-end/src/app.module.tsuniksim-back-end/src/app.controller.tsuniksim-back-end/src/database.providers.tsuniksim-back-end/src/node.js/server/constantsVariable.jsuniksim-back-end/src/node.js/server/admin_server.jsuniksim-back-end/src/node.js/server/ai/