# Structure des projets et dossiers

## Objectif

Cette page indique **où chercher dans le code** selon le type de changement ou de bug. Elle ne remplace pas les pages détaillées des sous-systèmes.

## Vue des deux projets principaux

```mermaid
flowchart TD
    ROOT[uniksimweb] --> FE[uniksimFrontEnd]
    ROOT --> BE[uniksim-back-end]

    FE --> FEA[src/app]
    FEA --> P[Pages]
    FEA --> C[Components]
    FEA --> POP[Popup]
    FEA --> FS[service]
    FEA --> FM[Models]

    BE --> BES[src]
    BES --> CTRL[app.controller.ts]
    BES --> MOD[app.module.ts]
    BES --> SV[service]
    BES --> ENT[entities]
    BES --> GW[gateway]
    BES --> G[guards]
    BES --> NODE[node.js/server]
    BES --> EMB[embedding]

```

## Frontend : uniksimFrontEnd

- `src/app/Pages/` : écrans complets et routes principales.
- `src/app/Components/` : composants réutilisables.
- `src/app/Popup/` : popups et dialogues.
- `src/app/service/` : logique frontend partagée, accès API, auth, support, notifications, présence, etc.
- `src/app/Models/` : modèles TypeScript.
- `src/app/constants/` : constantes frontend.
- `src/assets/` : ressources statiques, incluant le build Unity WebGL.
- `src/environments/environment.ts` : URLs/backend disponibles côté Angular.
- `angular.json` : build Angular et destination du build production.

## Backend : uniksim-back-end

- `src/main.ts` : bootstrap NestJS.
- `src/app.module.ts` : enregistrement global des modules, contrôleurs, services et intégrations.
- `src/app.controller.ts` : contrôleurs HTTP principaux.
- `src/service/` : logique métier.
- `src/entities/` : entités TypeORM.
- `src/gateway/` : WebSockets/Socket.IO.
- `src/guards/` : autorisation/authentification backend.
- `src/mapper/` : conversion entre données internes et réponses API.
- `src/dto/` : DTOs et contrats d’entrée/sortie.
- `src/node.js/server/` : couche historique/auxiliaire : BrainCloud, constantes, Admin Server, IA, Redis, etc.
- `src/embedding/` : ingestion et documentation destinée au RAG.
- `src/migrations/` : changements de schéma/versionnement DB lorsque utilisés.
- `src/front/` : **frontend Angular compilé**; ne pas modifier manuellement.

## Où commencer selon le besoin

- Nouvelle page Angular → `Pages/` + routing dans `app.module.ts`.
- Nouveau composant réutilisable → `Components/`.
- Nouvel appel API → service Angular approprié puis controller/service NestJS.
- Nouvelle donnée SQL → `entities/`, service/repository et schéma DB.
- Temps réel → `gateway/` côté backend et service Socket.IO côté frontend.
- Comportement IA → `node.js/server/ai/`, `embedding/` et services support concernés.
- Paramètre global → `constantsVariable.js` ou fichier d’environnement.

## Règle pratique

Avant d’ajouter un nouveau fichier ou une nouvelle abstraction, vérifier si le comportement appartient déjà à un dossier/service existant. Le projet contient plusieurs couches historiques; dupliquer une responsabilité peut rendre les flux beaucoup plus difficiles à suivre.

## Organisation des sous-systèmes

- Backend : `gateway/account.gateway.ts` pour le compte, `gateway/support.gateway.ts` pour le support, `guards/socketAuth.middleware.ts` pour leur authentification commune.
- Notifications : `service/notification.service.ts` est le pipeline générique; `service/game-notification.service.ts` valide le destinataire du jeu; `dto/notification.dto.ts` définit l’enveloppe.
- Angular : `service/realtime/` pour le transport, `service/account/` pour le temps réel du compte, `service/support/` pour les conversations et tickets; contrats séparés dans `Models/Notification.ts` et `Models/Presence.ts`.
- IA : `node.js/server/ai/contract/`, `factory/`, `guard/`, `usage/` et `provider/gemini/`. Le SDK Vertex et son adaptation restent dans le provider.
- Tests backend : `test/ai/` et `test/notification/`; configuration partagée `test/jest.config.cjs`, configuration IA `test/jest.ai.config.cjs`. Exécuter `npm test -- --runInBand` ou `npm run test:ai` depuis le backend.