# Instructions de déploiement - Formation Manager Itinova

Version: **d0d9d870**  
Date: 3 janvier 2025

## 📋 Résumé des modifications

Cette mise à jour contient les corrections suivantes :

1. **Bug d'inscription - Mauvais apprenant associé**
   - Création d'une procédure publique `apprenants.createPublic`
   - Les inscriptions depuis la page publique fonctionnent correctement

2. **Bug email de confirmation - Variables non remplacées**
   - Correction du template d'inscription dans la base de données
   - Ajout de la variable `{{datesHTML}}` dans l'objet variables
   - Toutes les variables sont maintenant correctement remplacées

3. **Amélioration de l'interface des templates d'emails**
   - Ajout du bouton `{{datesHTML}}` dans l'éditeur
   - Prévisualisation améliorée avec exemple de dates formatées

---

## 🚀 Déploiement automatique (recommandé)

### Prérequis
- Accès SSH au serveur VPS
- Git configuré avec accès au dépôt
- PM2 installé pour la gestion du processus
- pnpm installé

### Étapes

1. **Se connecter au serveur VPS**
   ```bash
   ssh votre-utilisateur@votre-serveur.com
   ```

2. **Aller dans le répertoire du projet**
   ```bash
   cd /chemin/vers/formation-manager-itinova
   ```

3. **Rendre le script exécutable**
   ```bash
   chmod +x deploy-update.sh
   ```

4. **Exécuter le script de mise à jour**
   ```bash
   ./deploy-update.sh
   ```

Le script va automatiquement :
- ✅ Sauvegarder la base de données
- ✅ Arrêter le serveur
- ✅ Récupérer les dernières modifications
- ✅ Installer les dépendances
- ✅ Appliquer les migrations
- ✅ Compiler le projet
- ✅ Redémarrer le serveur

---

## 🔧 Déploiement manuel

Si vous préférez effectuer la mise à jour manuellement :

### 1. Sauvegarde de la base de données

```bash
# Créer un répertoire de backup
mkdir -p backups

# Sauvegarder la base de données
mysqldump -h VOTRE_HOST -u VOTRE_USER -p VOTRE_DATABASE > backups/db-backup-$(date +%Y%m%d-%H%M%S).sql
```

### 2. Arrêter le serveur

```bash
pm2 stop formation-manager
```

### 3. Récupérer les modifications

```bash
git fetch origin
git checkout main
git pull origin main
```

### 4. Installer les dépendances

```bash
pnpm install
```

### 5. Appliquer les migrations de base de données

```bash
pnpm db:push
```

**OU** appliquer manuellement le script SQL :

```bash
mysql -h VOTRE_HOST -u VOTRE_USER -p VOTRE_DATABASE < update-database.sql
```

### 6. Compiler le projet

```bash
pnpm build
```

### 7. Redémarrer le serveur

```bash
pm2 restart formation-manager
# OU si c'est le premier démarrage :
pm2 start npm --name "formation-manager" -- start
```

### 8. Vérifier le statut

```bash
pm2 status formation-manager
pm2 logs formation-manager --lines 50
```

---

## 🧪 Tests après déploiement

Après le déploiement, vérifiez que tout fonctionne correctement :

### 1. Test d'inscription publique
- [ ] Aller sur la page d'inscription publique d'une formation
- [ ] Créer une nouvelle inscription avec un nouvel apprenant
- [ ] Vérifier que l'apprenant est correctement créé dans la base de données
- [ ] Vérifier que l'inscription est associée au bon apprenant

### 2. Test de l'email de confirmation
- [ ] Effectuer une inscription
- [ ] Vérifier la réception de l'email de confirmation
- [ ] Vérifier que toutes les variables sont remplacées (notamment `{{prenomApprenant}}` et `{{datesHTML}}`)
- [ ] Vérifier que les invitations ICS sont jointes (une par date)

### 3. Test de l'interface des templates
- [ ] Aller dans Configuration > Templates d'emails
- [ ] Vérifier que le bouton "Dates (HTML)" est présent
- [ ] Cliquer sur le bouton pour insérer `{{datesHTML}}`
- [ ] Vérifier la prévisualisation

---

## 📊 Vérification de la base de données

Pour vérifier que la mise à jour du template d'inscription a été appliquée :

```sql
SELECT 
    type, 
    name, 
    bodyContent,
    updatedAt
FROM emailTemplates 
WHERE type = 'inscription';
```

Le `bodyContent` doit contenir les variables `{{prenomApprenant}}`, `{{nomApprenant}}`, et `{{datesHTML}}`.

---

## 🔄 Rollback (en cas de problème)

Si vous rencontrez des problèmes après la mise à jour :

### 1. Restaurer la base de données

```bash
# Lister les sauvegardes disponibles
ls -lh backups/

# Restaurer une sauvegarde
mysql -h VOTRE_HOST -u VOTRE_USER -p VOTRE_DATABASE < backups/db-backup-YYYYMMDD-HHMMSS.sql
```

### 2. Revenir à la version précédente du code

```bash
# Voir l'historique des commits
git log --oneline

# Revenir au commit précédent
git checkout COMMIT_HASH

# Réinstaller les dépendances
pnpm install

# Recompiler
pnpm build

# Redémarrer
pm2 restart formation-manager
```

---

## 📞 Support

En cas de problème lors du déploiement :

1. Consulter les logs du serveur : `pm2 logs formation-manager`
2. Vérifier l'état du serveur : `pm2 status`
3. Vérifier les logs de la base de données
4. Contacter le support technique

---

## 📝 Notes importantes

- **Sauvegarde automatique** : Le script `deploy-update.sh` crée automatiquement une sauvegarde de la base de données avant toute modification
- **Temps d'arrêt** : Le déploiement nécessite un arrêt temporaire du serveur (environ 2-3 minutes)
- **Variables d'environnement** : Assurez-vous que toutes les variables d'environnement nécessaires sont correctement configurées (DATABASE_URL, RESEND_API_KEY, etc.)
- **Permissions** : Le script doit être exécuté avec les permissions appropriées pour accéder à la base de données et redémarrer PM2

---

**Version du checkpoint** : d0d9d870  
**Date de création** : 3 janvier 2025  
**Auteur** : Manus AI
