Administration : API NestJS et Admin Server Express
Vue d’ensemble
L’administration Webbackend d’Uniksim repose sur deux couches distinctes qu’il ne faut pas confondre :
- les routes d’administration de l’API NestJS principale,
utilisées par le frontend Angular etprotégées par desguards;guards et reliées aux services backend; - un serveur Express d’administration séparé dans
uniksim-back-end/src/node.js/server/admin_server.js, qui écoute localement sur le port8105et gère surtout des opérations historiques/BrainCloud et certains flux SSE.
Architecture backend d’administration
flowchart LR
CLIENT[Clients Web / outils internes] --> NEST[NestJS principal]
CLIENT --> EXPRESS[Admin Server Express :8105]
NEST --> AC[AdminController]
NEST --> AUC[AdminUserController]
NEST --> APC[AdminPresenceController]
NEST --> SAC[SupportAdminController]
AC --> AS[AdminService]
AUC --> AUS[AdminUserService]
APC --> PS[PresenceService]
AS --> DB[(MySQL / TypeORM)]
AUS --> DB
PS --> REDIS[(Redis)]
EXPRESS --> BC[BrainCloud]
EXPRESS --> REDIS
EXPRESS --> SSE[SSE / copie de simulations]
1. Administration dans l’API NestJS
Les contrôleurs d’administration sont regroupés dans uniksim-back-end/src/app.controller.ts et enregistrés dans AppModule.
AdminUserControllersous/admin: récupération et gestion d’informations utilisateurs.AdminPresenceControllersous/admin/presence: présence en ligne, état de jeu et télémétrie.AdminController: autres opérations administratives.SupportAdminController: fonctions administratives du support.
La logique métier correspondante se trouve notamment dans src/service/admin.service.ts, src/service/adminUser.service.ts et src/service/presence.service.ts.
2. Admin Server Express séparé
Le fichier src/node.js/server/admin_server.js démarre un serveur Express distinct sur ConstantsInUse.ADMIN_SERVER_PORT, actuellement 8105. Son URL locale de référence est définie par ADMIN_SERVER_URL dans constantsVariable.js.
Ce serveur est utilisé notamment pour :
POST /admin/adminCommand: commandes d’administration BrainCloud telles que lecture de documents, récupération de simulations, copie de simulation et suppression d’un utilisateur d’une simulation;POST /redisBulkCommands: commandes Redis groupées;GET /getActiveSimulations/...: récupération des simulations actives;GET /copySimNotification: progression d’une copie de simulation via SSE;- surveillance de certains jobs BrainCloud et relance lorsqu’ils disparaissent.
Important
Flux :
d’une sequenceDiagram
participant C as Client / outil admin
participant E as Admin Server Express
estparticipant uneB vraieas secondeBrainCloud
instanceparticipant HTTPR locale.as IlRedis
neparticipant remplaceS pasas l’APIFlux NestJSSSE
etC->>E: neRequête doitadmin
pasalt êtreCommande confonduBrainCloud
avecE->>B: lesExécute contrôleursla commande
B-->>E: Résultat
else Commande Redis
E->>R: redisBulkCommands(...)
R-->>E: Résultat
else Copie de simulation
E->>B: Copie données /admin simulation
E-->>S: Progression
S-->>C: Événements SSE
end
E-->>C: Réponse
du serveur principal.
Routes frontend d’administration
Le routing Angular est défini directement dans uniksimFrontEnd/src/app/app.module.ts. Les principales routes sont :
/admin/list/admin/support/admin/presence/admin/settings/admin/searchDemo/admin/activeSimulation/admin/comments/admin/:userUidSécurité backend
Les routes NestJS utilisent notamment AuthGuardAdmin et AuthGuardAdminUser. LeToute frontendmodification appliqued’une aussiroute desd’administration guardsdoit selonvérifier le niveauguard d’accès, notamment attendu et AuthGuardConstAdminAuthGuardConstTrueAdmin.le rôle autorisé.
Carte simplifiée
Angular Admin │ ├── HTTP ──► NestJS principal : /admin/* ──► AdminService / AdminUserService / PresenceService │ └──────────► Admin Server Express : 127.0.0.1:8105 ├── BrainCloud ├── Redis └── SSE / copie de simulations
Fichiers principaux
uniksim-back-end/src/app.controller.tsuniksim-back-end/src/app.module.tsuniksim-back-end/src/node.js/server/admin_server.jsuniksim-back-end/src/node.js/server/constantsVariable.jsuniksim-back-end/src/service/admin.service.tsuniksim-back-end/src/service/adminUser.service.tsuniksim-back-end/src/service/presence.service.tsuniksimFrontEnd/src/app/app.module.ts