Documentation
Compétence : C2.4.1 – Rédiger la documentation technique d'exploitation du logiciel
Cette documentation comprend :
- Le manuel de déploiement avec versioning automatique
- Le manuel d'utilisation des endpoints API
- Le manuel de mise à jour et rollback
Manuel de Déploiement
Prérequis d'installation
Versions requises :
Node.js 22.16.0+
Docker Engine 20.x+
Docker Compose 2.x+
Installation des dépendances :
npm install
Configuration des variables d'environnement :
Créer un fichier .env
à la racine (prendre exemple sur le fichier .env.production
) :
Sécurité : Utiliser des mots de passe complexes et des secrets JWT uniques en production.
Déploiement avec image Docker pré-construite
Option A : Déploiement avec dernière version (recommandé) :
# Pull de la dernière image depuis GitHub Container Registry
docker pull ghcr.io/damienlandois/block-2-landois-damien-backend:latest
# Tag local pour docker-compose
docker tag ghcr.io/damienlandois/block-2-landois-damien-backend:latest \
massage-backend:latest
# Démarrage de la stack complète
docker-compose up -d --build
Option B : Déploiement avec version spécifique :
# Pull d'une version spécifique pour stabilité
docker pull ghcr.io/damienlandois/block-2-landois-damien-backend:1.2
# Tag local avec la version choisie
docker tag ghcr.io/damienlandois/block-2-landois-damien-backend:1.2 \
massage-backend:latest
# Démarrage de la stack
docker-compose up -d
Option C : Build local depuis les sources :
# Pour développement ou personnalisation
docker-compose up -d --build
Services déployés automatiquement :
- MySQL 8 : Base de données relationnelle
- API NestJS : Backend avec authentification JWT (port 3001)
- Volumes persistants : Données et logs sauvegardés
Vérification du démarrage :
docker-compose logs backend | Select-String "successfully started"
Message attendu : LOG [NestApplication] Nest application successfully started
Initialisation de la base de données
Application des migrations Prisma :
docker-compose exec backend npx prisma migrate deploy
docker-compose exec backend npx prisma generate
Vérification de la structure :
docker-compose exec backend npx prisma studio
Création d'un administrateur
curl -X POST http://localhost:3001/user/admin \
-H "Content-Type: application/json" \
-d '{"email":"admin@raphaelle-massage.com","password":"motdepasse123","firstname":"Admin","name":"System"}'
Validation du déploiement
Tests de validation complets :
# Tests unitaires (93 tests)
docker-compose exec backend npm run test
# Tests d'intégration E2E (22 tests)
docker-compose exec backend npm run test:e2e
# Vérification du linting
docker-compose exec backend npm run lint
Test de connectivité API :
curl http://localhost:3001/massages
Résultats attendus :
- 93/93 tests unitaires passants
- 22/22 tests E2E validés
- 0 erreur ESLint
- API répond en JSON
Manuel d'Utilisation
Accès à l'API
URL de base en développement : http://localhost:3001
URL de Swagger
http://localhost:3001/api
Endpoints principaux :
Endpoints Publics
GET /massages
- Liste des massages disponiblesPOST /auth/login
- Authentification utilisateurPOST /user
- Inscription nouveau client
Endpoints Authentifiés
GET /planning/creneaux
- Créneaux horaires disponiblesPOST /planning/reservations
- Créer une réservationGET /planning/mes-rendez-vous
- Mes réservationsDELETE /planning/reservations/:id/annuler
- Annuler réservation
Endpoints Administrateur
POST /user/admin
- Créer un administrateurGET /planning/reservations
- Toutes les réservationsPOST /massages
- Créer un nouveau massagePOST /planning/creneaux
- Créer nouveaux créneaux
Authentification JWT
Connexion utilisateur :
curl -X POST http://localhost:3001/auth/login \
-H "Content-Type: application/json" \
-d '{
"email":"user@example.com",
"password":"motdepassE123!"
}'
Utilisation du token d'authentification :
curl -H "Authorization: Bearer <jwt_token>" \
http://localhost:3001/planning/mes-rendez-vous
Gestion des rôles :
CLIENT
: Gestion de ses propres réservations et de son compteADMIN
: Accès complet à toutes les fonctionnalités
Gestion des erreurs et codes de statut
Codes de réponse standards :
- 200 : Succès de l'opération
- 201 : Ressource créée avec succès
- 204 : Ressource supprimée avec succès
- 400 : Données invalides ou malformées
- 401 : Token d'authentification manquant ou invalide
- 403 : Accès interdit (rôle insuffisant)
- 404 : Ressource non trouvée
- 500 : Erreur interne du serveur
Format des erreurs :
{
"statusCode": 400,
"message": "Description de l'erreur",
"error": "Bad Request"
}
Surveillance et monitoring
Logs en temps réel :
# Tous les services
docker-compose logs -f
# Backend uniquement
docker-compose logs -f backend
# Base de données
docker-compose logs -f db
Logs Winston en temps réel (depuis le container) :
#voir tous les fichiers de logs:
docker-compose exec backend ls -la logs/
# Logs généraux du jour
docker-compose exec backend tail -f logs/combined-2025-08-21.log #changer la date
# Logs d'erreurs uniquement
docker-compose exec backend tail -f logs/error-2025-08-21.log #changer la date
# Logs de sécurité
docker-compose exec backend tail -f logs/security-2025-08-21.log #changer la date
Fichiers de logs persistants :
logs/combined-YYYY-MM-DD.log
: Logs générauxlogs/error-YYYY-MM-DD.log
: Erreurs uniquementlogs/security-YYYY-MM-DD.log
: Événements sécuritaires
Tests de santé de l'application :
# Vérification API disponible
curl http://localhost:3001/ -> renvoi 404.
# Statut des containers
docker-compose ps
# Utilisation des ressources
docker stats
Manuel de Mise à Jour
Sauvegarde préventive
Sauvegarde base de données :
# Création du backup
docker-compose exec db mysqldump -u root -p${DB_ROOT_PASSWORD} \
raphaelle-massage > backup-$(date +%Y%m%d-%H%M).sql
# Vérification du backup
ls -la backup-*.sql
Arrêt sécurisé des services :
docker-compose down --timeout 30
Mise à jour via images Docker versionnées
Option A : Mise à jour automatique (latest) :
# Pull de la dernière image depuis GitHub Container Registry
docker pull ghcr.io/damienlandois/block-2-landois-damien-backend:latest
# Tag local pour docker-compose
docker tag ghcr.io/damienlandois/block-2-landois-damien-backend:latest \
massage-backend:latest
# Redémarrage avec nouvelle version
docker-compose up -d --no-deps backend
Option B : Mise à jour vers version spécifique :
# Pull d'une version particulière
docker pull ghcr.io/damienlandois/block-2-landois-damien-backend:1.2
# Utilisation de cette version
docker tag ghcr.io/damienlandois/block-2-landois-damien-backend:1.2 \
massage-backend:latest
docker-compose up -d --no-deps backend
Application des migrations et vérifications
Vérification des migrations en attente :
docker-compose exec backend npx prisma migrate status
Application des nouvelles migrations :
docker-compose exec backend npx prisma migrate deploy
Régénération du client Prisma :
docker-compose exec backend npx prisma generate
Tests de validation post-mise à jour
Suite complète de tests :
# Tests unitaires (93 tests)
docker-compose exec backend npm run test
# Tests d'intégration E2E (22 tests)
docker-compose exec backend npm run test:e2e
# Vérification qualité code
docker-compose exec backend npm run lint