Ajouter une fonctionnalité Web de bout en bout
Objectif
Cette page donne un chemin pratique pour ajouter une fonctionnalité Web sans oublier une couche. Le principe est de suivre le flux Angular → API → service → données → retour UI.
Flux type
flowchart LR
UI[Page / Component Angular] --> FES[Service Angular]
FES --> AUTH[AuthInterceptor]
AUTH --> CTRL[Controller NestJS]
CTRL --> GUARD[Guard]
GUARD --> BES[Service backend]
BES --> DATA{Données}
DATA --> ORM[TypeORM / MySQL]
DATA --> REDIS[Redis]
DATA --> BC[BrainCloud]
BES --> CTRL
CTRL --> FES
FES --> UI
Étapes
- Définir l’action utilisateur, les données entrantes/sortantes, le niveau d’accès et le type de persistance.
- Côté Angular, placer l’écran dans
Pages/ou le composant dansComponents/, puis passer par un service Angular pour les appels backend. - Ajouter ou réutiliser la route dans
app.module.tset appliquer le guard frontend adapté. - Côté backend, ajouter l’endpoint au controller logique existant. Garder le controller mince.
- Placer la logique métier dans
src/service/. - Choisir le stockage : TypeORM/MySQL pour le relationnel persistant, Redis pour le runtime/temporaire, BrainCloud pour les données historiques de simulation déjà gérées là.
- Ajouter Socket.IO/EventEmitter seulement si la mise à jour doit être temps réel.
- Appliquer le guard backend approprié et valider les IDs et permissions côté serveur.
- Centraliser les paramètres dans
constantsVariable.jsou les fichiers.env. - Tester le cas nominal, les entrées invalides, les accès interdits et les erreurs de dépendances.
Choisir le stockage
flowchart TD
D[Besoin de stockage] --> P{Persistant relationnel ?}
P -- Oui --> SQL[Entity TypeORM + MySQL]
P -- Non --> RT{Temporaire / temps réel ?}
RT -- Oui --> REDIS[RedisService]
RT -- Non --> OLD{Déjà géré dans BrainCloud ?}
OLD -- Oui --> BC[BrainCloud]
OLD -- Non --> REVIEW[Revoir le modèle avant d'ajouter un stockage]
Checklist rapide
- UI dans le bon dossier.
- Service Angular réutilisé ou créé au bon endroit.
- Route et guards corrects.
- Controller mince.
- Logique dans un service backend.
- Stockage choisi selon le type de donnée.
- Temps réel ajouté seulement si nécessaire.
- Cas d’erreur et permissions testés.
- Configuration centralisée.
- Build/deploy vérifié.
- Documentation mise à jour si l’architecture change.