097e11be1b
Reference guides (Sequelize model methods, Swagger) and migration reports from the MongoDB-to-MySQL and domain-based route structure migrations.
330 lines
8.6 KiB
Markdown
330 lines
8.6 KiB
Markdown
# Migration Scripts - Guide d'utilisation
|
|
|
|
## Vue d'ensemble
|
|
|
|
Cette migration restructure votre API Express de `/api/v1` `/api/v2` `/api/v3` (qui représentaient des domaines métier, pas des versions API) vers une architecture basée sur les domaines avec des chemins clairs et explicites.
|
|
|
|
### Ancien structure (confuse)
|
|
```
|
|
/api/v1/* → Skydive features
|
|
/api/v2/* → CMS features
|
|
/api/v3/* → Hero Wars features
|
|
```
|
|
|
|
### Nouvelle structure (claire)
|
|
```
|
|
/api/skydive/* ← Toutes les fonctionnalités de parachutisme
|
|
/api/cms/* ← Gestion de contenu (articles, tags, etc.)
|
|
/api/herowars/* ← Gestion du jeu HeroWars (clans, membres, raids)
|
|
```
|
|
|
|
---
|
|
|
|
## Scripts de migration
|
|
|
|
### 1. `migrate-to-domain-structure.js` ✓ EXÉCUTÉ
|
|
|
|
**Rôle:** Crée la nouvelle structure et migre les fichiers
|
|
|
|
**Statut:** ✅ Completed
|
|
- Créé les répertoires `/api/skydive`, `/api/cms`, `/api/herowars`
|
|
- Copié tous les fichiers de routes vers les nouveaux emplacements
|
|
- Généré les nouveaux fichiers `index.js` pour chaque domaine
|
|
- Mis à jour `src/routes/api/index.js` pour utiliser les nouveaux chemins
|
|
- Créé un commit Git
|
|
|
|
**Fichiers modifiés:**
|
|
```
|
|
✓ src/routes/api/skydive/ (8 fichiers)
|
|
✓ src/routes/api/cms/ (8 fichiers)
|
|
✓ src/routes/api/herowars/ (3 fichiers)
|
|
✓ src/routes/api/index.js (mis à jour)
|
|
```
|
|
|
|
**Rapports générés:**
|
|
- `MIGRATION_REPORT.md` - Détails complets de la migration
|
|
- `MIGRATION_SWAGGER_TODO.md` - Tâches pour Swagger
|
|
|
|
---
|
|
|
|
### 2. `update-references-post-migration.js` ✓ EXÉCUTÉ
|
|
|
|
**Rôle:** Met à jour les références aux chemins dans la documentation
|
|
|
|
**Statut:** ✅ Completed
|
|
- Mis à jour les fichiers YAML Swagger (`/api/v1/` → `/api/skydive/`, etc.)
|
|
- Mis à jour la collection et l'environnement Postman
|
|
- Scanné les fichiers clés pour les références restantes
|
|
|
|
**Rapports générés:**
|
|
- `POST_MIGRATION_CHECKLIST.md` - Liste de vérification manuelle
|
|
|
|
---
|
|
|
|
### 3. `finalize-migration.js`
|
|
|
|
**Rôle:** Valide, nettoie, et teste la migration
|
|
|
|
**Options disponibles:**
|
|
```bash
|
|
# Valider la structure sans rien faire
|
|
node scripts/finalize-migration.js
|
|
|
|
# Valider et nettoyer les anciens répertoires
|
|
node scripts/finalize-migration.js --cleanup
|
|
|
|
# Valider et tester les endpoints (nécessite le serveur en cours d'exécution)
|
|
node scripts/finalize-migration.js --test
|
|
|
|
# Mode complet: validation, nettoyage et résumé
|
|
node scripts/finalize-migration.js --full
|
|
```
|
|
|
|
**Statut:** ✅ Ready to run
|
|
|
|
**Rapport généré:**
|
|
- `MIGRATION_COMPLETE_SUMMARY.md` - Résumé final avec instructions
|
|
|
|
---
|
|
|
|
## Guide étape par étape
|
|
|
|
### Étape 1: Vérifier la migration ✅
|
|
```bash
|
|
ls -la src/routes/api/
|
|
# Devrait afficher: cms/, herowars/, skydive/, v1/, v2/, v3/, index.js
|
|
```
|
|
|
|
### Étape 2: Valider la structure
|
|
```bash
|
|
node scripts/finalize-migration.js
|
|
```
|
|
|
|
**Résultat attendu:**
|
|
```
|
|
✓ skydive/: ✓ (8 route files)
|
|
✓ cms/: ✓ (7 route files)
|
|
✓ herowars/: ✓ (3 route files)
|
|
```
|
|
|
|
### Étape 3: Nettoyer les anciens répertoires (OPTIONNEL)
|
|
```bash
|
|
# Option A: Via le script
|
|
node scripts/finalize-migration.js --cleanup
|
|
|
|
# Option B: Manuellement
|
|
rm -rf src/routes/api/v1 src/routes/api/v2 src/routes/api/v3
|
|
git add -A
|
|
git commit -m "chore: remove old v1/v2/v3 route directories"
|
|
```
|
|
|
|
### Étape 4: Mettre à jour le frontend (IMPORTANT)
|
|
|
|
**Fichiers à modifier dans `adastra_app/src/environments/`:**
|
|
|
|
#### `environment.ts`
|
|
```typescript
|
|
// AVANT:
|
|
export const environment = {
|
|
production: false,
|
|
apiUrl: '/api/v1',
|
|
cmsUrl: '/api/v2',
|
|
herowarsUrl: '/api/v3',
|
|
};
|
|
|
|
// APRÈS:
|
|
export const environment = {
|
|
production: false,
|
|
apiUrl: '/api/skydive',
|
|
cmsUrl: '/api/cms',
|
|
herowarsUrl: '/api/herowars',
|
|
};
|
|
```
|
|
|
|
#### `environment.development.ts` et `environment.local.ts`
|
|
Applique les mêmes changements
|
|
|
|
**Mise à jour des services Angular:**
|
|
```typescript
|
|
// Dans vos services (par exemple, src/app/services/*.service.ts)
|
|
|
|
// AVANT:
|
|
this.http.get(environment.apiUrl + '/jumps')
|
|
this.http.get(environment.cmsUrl + '/articles')
|
|
this.http.get(environment.herowarsUrl + '/clans')
|
|
|
|
// APRÈS:
|
|
this.http.get(environment.apiUrl + '/jumps')
|
|
this.http.get(environment.cmsUrl + '/articles')
|
|
this.http.get(environment.herowarsUrl + '/clans')
|
|
// Pas de changement si vous utilisez les variables d'environnement!
|
|
// Sinon, cherchez/remplacez les chemins en dur
|
|
```
|
|
|
|
**Automatiser la mise à jour du frontend (macOS/Linux):**
|
|
```bash
|
|
cd adastra_app
|
|
sed -i '' "s|/api/v1|/api/skydive|g" src/**/*.ts
|
|
sed -i '' "s|/api/v2|/api/cms|g" src/**/*.ts
|
|
sed -i '' "s|/api/v3|/api/herowars|g" src/**/*.ts
|
|
```
|
|
|
|
### Étape 5: Tester les endpoints
|
|
|
|
**Démarrer le serveur API:**
|
|
```bash
|
|
cd adastra_api
|
|
npm run local
|
|
```
|
|
|
|
**Dans un autre terminal, tester les nouveaux chemins:**
|
|
```bash
|
|
# Tester Swagger UI
|
|
curl http://localhost:3200/api-docs
|
|
|
|
# Tester les endpoints des domaines
|
|
curl http://localhost:3200/api/skydive/jumps
|
|
curl http://localhost:3200/api/cms/articles
|
|
curl http://localhost:3200/api/herowars/clans
|
|
|
|
# Avec authentification si nécessaire
|
|
curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:3200/api/skydive/jumps
|
|
```
|
|
|
|
### Étape 6: Tester le frontend
|
|
|
|
```bash
|
|
cd adastra_app
|
|
npm start
|
|
# Ou avec configuration spécifique
|
|
npm run local # ng serve --configuration local
|
|
```
|
|
|
|
Vérifier dans les DevTools que les appels API vont vers les nouveaux chemins.
|
|
|
|
---
|
|
|
|
## Statistiques de la migration
|
|
|
|
| Métrique | Valeur |
|
|
|----------|--------|
|
|
| Nouveaux domaines créés | 3 (skydive, cms, herowars) |
|
|
| Fichiers de routes migrés | 19 |
|
|
| Fichiers index.js créés/mis à jour | 4 |
|
|
| Fichiers Swagger mis à jour | Oui |
|
|
| Fichiers Postman mis à jour | Oui |
|
|
| Commits Git créés | 1 (structure) + opt. 1 (nettoyage) |
|
|
|
|
---
|
|
|
|
## Fichiers de rapport créés
|
|
|
|
| Fichier | Contenu |
|
|
|---------|---------|
|
|
| `MIGRATION_REPORT.md` | Rapport détaillé de la migration |
|
|
| `MIGRATION_SWAGGER_TODO.md` | Notes pour les mises à jour Swagger |
|
|
| `POST_MIGRATION_CHECKLIST.md` | Liste de vérification manuelle |
|
|
| `MIGRATION_COMPLETE_SUMMARY.md` | Résumé final et instructions |
|
|
| `SCRIPTS_MIGRATION_GUIDE.md` | Ce fichier |
|
|
|
|
---
|
|
|
|
## Procédure de rollback
|
|
|
|
Si vous devez annuler la migration:
|
|
|
|
```bash
|
|
# Voir l'historique
|
|
git log --oneline -10
|
|
|
|
# Annuler les changements (ajuster le nombre de commits)
|
|
git reset --hard HEAD~2
|
|
|
|
# Ou restaurer une branche spécifique
|
|
git reset --hard origin/develop
|
|
```
|
|
|
|
---
|
|
|
|
## Points clés à retenir
|
|
|
|
✅ **La migration est non-destructive:**
|
|
- Les anciens répertoires v1/v2/v3 existent toujours
|
|
- Vous pouvez les supprimer après vérification
|
|
|
|
✅ **Mises à jour automatisées:**
|
|
- Scripts: Oui ✓
|
|
- Swagger: Oui ✓
|
|
- Postman: Oui ✓
|
|
|
|
⚠️ **Mises à jour manuelles requises:**
|
|
- Frontend Angular (environnement + services)
|
|
- Tous les appels API en dur dans le code cliente
|
|
- Documentation externe
|
|
- Tests d'intégration
|
|
|
|
✅ **Git-safe:**
|
|
- Chaque étape crée un commit
|
|
- Rollback facile si problème
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Les endpoints retournent 404
|
|
- ✓ Vérifier que le serveur a redémarré après la migration
|
|
- ✓ Vérifier les chemins dans Swagger UI (http://localhost:3200/api-docs)
|
|
- ✓ Vérifier que le backend a bien recompilé (avec nodemon)
|
|
|
|
### Les routes ne sont pas trouvées
|
|
- ✓ Vérifier que `src/routes/api/index.js` a les bonnes références
|
|
- ✓ Vérifier que chaque domaine a un `index.js`
|
|
- ✓ Vérifier l'ordre des middlewares dans `app.js`
|
|
|
|
### Erreurs d'authentification
|
|
- ✓ Les middlewares d'auth ne sont pas affectés
|
|
- ✓ Les tokens JWT restent valides
|
|
- ✓ Les headers restent les mêmes
|
|
|
|
### Le frontend ne peut pas accéder à l'API
|
|
- ✓ Vérifier CORS dans `app.js`
|
|
- ✓ Vérifier les URLs dans les environnements Angular
|
|
- ✓ Vérifier les appels http dans les services
|
|
|
|
---
|
|
|
|
## Prochaines étapes
|
|
|
|
1. ✅ Tester tous les endpoints du backend
|
|
2. ✅ Mettre à jour le frontend (environnement + services)
|
|
3. ✅ Tester le frontend avec le backend modifié
|
|
4. ✅ Mettre à jour la documentation
|
|
5. ✅ Nettoyer les anciens répertoires v1/v2/v3 (optionnel)
|
|
6. ✅ Déployer en staging/production
|
|
|
|
---
|
|
|
|
## Ressources supplémentaires
|
|
|
|
- Documentation architecture: `ARCHITECTURE_DIAGRAMS.md`
|
|
- ADR (Architecture Decision Records): `ADR_INDEX.md`
|
|
- Configuration Swagger: `src/config/swagger.js`
|
|
- Routes configuration: `src/routes/api/index.js`
|
|
|
|
---
|
|
|
|
## Support
|
|
|
|
Pour des questions ou problèmes:
|
|
|
|
1. ✓ Consulter los fichiers de rapport (`POST_MIGRATION_CHECKLIST.md`, etc.)
|
|
2. ✓ Vérifier les logs du serveur: `npm run local` (output)
|
|
3. ✓ Vérifier Swagger UI: http://localhost:3200/api-docs
|
|
4. ✓ Exécuter la validation: `node scripts/finalize-migration.js`
|
|
|
|
---
|
|
|
|
**Migration effectuée le:** 24 avril 2026
|
|
**Version API:** v1/v2/v3 → domain-based
|
|
**Status:** ✅ Complete
|