132 lines
3.9 KiB
Markdown
132 lines
3.9 KiB
Markdown
# Migration Production - Corrections Appliquées
|
|
|
|
## ✅ Corrections Complétées
|
|
|
|
### 1. Remplacement de fetch() par fetchWithTimeout()
|
|
|
|
**Fichiers modifiés:**
|
|
|
|
1. ✅ **lib/services/n8n-service.ts**
|
|
- `triggerMissionCreation()` - Timeout 30s
|
|
- `triggerMissionDeletion()` - Timeout 30s
|
|
- `triggerMissionRollback()` - Timeout 30s
|
|
|
|
2. ✅ **app/api/missions/[missionId]/generate-plan/route.ts**
|
|
- Appel N8N webhook - Timeout 30s
|
|
|
|
3. ✅ **app/api/users/[userId]/route.ts**
|
|
- Appels Leantime API - Timeout 10s
|
|
- Appels Keycloak API - Timeout 10s
|
|
- Forward delete request - Timeout 30s
|
|
|
|
4. ✅ **app/api/rocket-chat/messages/route.ts**
|
|
- `getUserToken()` - Timeout 10s
|
|
- `users.list` - Timeout 10s
|
|
- `users.createToken` - Timeout 10s
|
|
- `subscriptions.get` - Timeout 10s
|
|
- Messages fetch - Timeout 10s
|
|
|
|
5. ✅ **app/api/leantime/tasks/route.ts**
|
|
- `getLeantimeUserId()` - Timeout 10s
|
|
- Fetch tasks - Timeout 10s
|
|
|
|
6. ✅ **app/api/news/route.ts**
|
|
- News API fetch - Timeout 10s (remplace AbortSignal.timeout)
|
|
|
|
### 2. Remplacement de console.log par logger
|
|
|
|
**Fichiers modifiés:**
|
|
|
|
1. ✅ **lib/services/rocketchat-call-listener.ts** (35 occurrences)
|
|
- Tous les `console.log` → `logger.debug` ou `logger.info`
|
|
- Tous les `console.error` → `logger.error`
|
|
- Tous les `console.warn` → `logger.warn`
|
|
|
|
2. ✅ **app/api/users/[userId]/route.ts**
|
|
- Tous les `console.log/error` → `logger.debug/error`
|
|
|
|
3. ✅ **app/api/rocket-chat/messages/route.ts**
|
|
- Tous les `console.error` → `logger.error`
|
|
|
|
### 3. Configuration DATABASE_URL
|
|
|
|
**Documentation créée:**
|
|
- ✅ `DATABASE_URL_UPDATE.md` - Instructions pour modifier le .env
|
|
- ✅ `scripts/update-database-url.sh` - Script automatique
|
|
|
|
**Action requise:**
|
|
Modifier manuellement le fichier `.env` :
|
|
|
|
```env
|
|
# Avant
|
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/calendar_db?schema=public"
|
|
|
|
# Après
|
|
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/calendar_db?schema=public&connection_limit=10&pool_timeout=20&connect_timeout=10"
|
|
```
|
|
|
|
Ou exécuter le script :
|
|
```bash
|
|
bash scripts/update-database-url.sh
|
|
```
|
|
|
|
## 📊 Statistiques
|
|
|
|
- **Fichiers modifiés:** 7 fichiers
|
|
- **fetch() remplacés:** 15+ occurrences
|
|
- **console.log remplacés:** 40+ occurrences
|
|
- **Timeouts ajoutés:** 15+ requêtes HTTP
|
|
|
|
## 🔍 Fichiers Restants (Optionnel)
|
|
|
|
Il reste quelques fichiers avec `console.log` qui peuvent être migrés plus tard :
|
|
|
|
- `lib/services/microsoft-oauth.ts`
|
|
- `lib/services/caldav-sync.ts`
|
|
- `lib/services/email-service.ts`
|
|
- `lib/services/token-refresh.ts`
|
|
- `lib/services/refresh-manager.ts`
|
|
- `lib/services/prefetch-service.ts`
|
|
- Divers fichiers dans `app/api/` (moins critiques)
|
|
|
|
Ces fichiers peuvent être migrés progressivement selon les besoins.
|
|
|
|
## ✅ Tests Recommandés
|
|
|
|
1. **Tester les timeouts:**
|
|
```bash
|
|
# Vérifier que les requêtes timeout correctement
|
|
# Simuler une API lente et vérifier les logs
|
|
```
|
|
|
|
2. **Tester la connexion DB:**
|
|
```bash
|
|
npm run validate:env
|
|
npx prisma db execute --stdin <<< "SELECT 1"
|
|
```
|
|
|
|
3. **Vérifier les logs:**
|
|
- S'assurer que tous les logs utilisent maintenant `logger`
|
|
- Vérifier que les logs sont structurés correctement
|
|
|
|
## 📝 Notes
|
|
|
|
- Tous les timeouts sont configurés selon le contexte :
|
|
- **10 secondes** pour les API rapides (Leantime, Keycloak, RocketChat)
|
|
- **30 secondes** pour les webhooks N8N (peuvent être plus longs)
|
|
- Les logs sont maintenant structurés avec des objets au lieu de strings concaténées
|
|
- Les erreurs incluent maintenant le contexte nécessaire pour le debugging
|
|
|
|
## 🚀 Prochaines Étapes
|
|
|
|
1. ✅ Modifier le `.env` avec les paramètres de pool DB
|
|
2. ✅ Tester l'application en développement
|
|
3. ✅ Vérifier que tous les timeouts fonctionnent correctement
|
|
4. ✅ Déployer en staging pour tests
|
|
5. ✅ Monitorer les performances en production
|
|
|
|
---
|
|
|
|
**Date de migration:** $(date)
|
|
**Statut:** ✅ Complété pour les fichiers critiques
|