37 Commits

Author SHA1 Message Date
manus-admin
2cac56b8c6 fix: corriger le flux de réinitialisation par e-mail
Some checks failed
Validation applicative / TypeScript, tests et build (push) Failing after 2m22s
2026-09-02 11:30:37 +02:00
Manus
81d1871d40 Checkpoint: Fix: ajout timeZone Europe/Paris dans tous les toLocaleDateString avec heure dans emailService.ts et exportService.ts — corrige l'affichage 7h00 au lieu de 9h00 dans les mails de rappel 2026-07-15 10:30:59 +00:00
Manus
429d6cf264 Checkpoint: V1.23 - Amélioration boîte de dialogue d'ajout manuel d'apprenant : tri alphabétique (nom puis prénom) et champ de recherche en temps réel sur nom/prénom/email 2026-02-26 12:52:34 -05:00
Manus
feee0d803e Checkpoint: V1.22 - Correction complète des invitations ICS : envoi des 3 fichiers + encodage UTF-8 correct
## Problèmes résolus

### Bug 1 : Seulement 2 invitations sur 3 envoyées
**Cause :** Tentative de conversion base64 incorrecte qui corrompait la première invitation
**Solution :** Conversion explicite Buffer → base64 avec encodage UTF-8 pour toutes les invitations

### Bug 2 : Fichiers ICS corrompus (erreur Outlook "Nous n'avons pas pu importer le calendrier")
**Cause :** Encodage incorrect lors de la transmission SMTP
**Solution :** Conversion UTF-8 → base64 explicite avec contentType correct

## Modifications techniques

- `server/emailService.ts` : Conversion explicite en base64 UTF-8 pour chaque invitation ICS
- `server/_core/smtpSender.ts` : Ajout de logs détaillés pour tracer les pièces jointes
- ContentType : `text/calendar; charset=utf-8` (sans method=REQUEST qui posait problème)

## Déploiement

 Serveur TEST (108.143.67.56) - Validé
 Serveur PROD (98.71.216.234) - Déployé

Les apprenants reçoivent maintenant les 3 invitations ICS et peuvent les importer correctement dans Outlook.
2026-02-26 10:35:14 -05:00
Manus
77e5544a90 Checkpoint: Correction du bug d'importation des invitations Outlook (ICS) - ajout de l'encodage UTF-8 explicite et des en-têtes corrects pour les pièces jointes calendrier 2026-02-26 09:42:34 -05:00
Manus
c102572403 Checkpoint: Corrections multiples sur les attestations : bug de modal bloquée corrigé, remplacement des variables dans l'email d'attestation fonctionnel, et type attestation ajouté au schéma de validation 2026-01-30 08:46:39 -05:00
Manus
493366fa10 Checkpoint: Ajout d'un template d'email personnalisable pour l'envoi des attestations de formation. Le template utilise des variables dynamiques ({{prenomApprenant}}, {{nomApprenant}}, {{nomFormation}}) et peut être modifié depuis l'interface de gestion des templates. Déployé sur le VPS avec migration SQL. 2026-01-29 11:58:20 -05:00
Manus
86d3d437bd Checkpoint: Évolution du système de rappels pour permettre jusqu'à 2 pièces jointes au lieu d'une seule. Migration SQL appliquée en local et sur le VPS de production. Les rappels existants sont préservés. 2026-01-28 10:13:32 -05:00
Manus
ac9ece31a5 Checkpoint: Correction de l'erreur "Failed to parse URL" lors de l'envoi d'attestation avec chemin local :
- Modification de la fonction sendAttestationEmail dans server/emailService.ts
- Ajout de la détection automatique entre URL complète (http/https) et chemin local
- Pour les URLs complètes : téléchargement via fetch (comme avant)
- Pour les chemins locaux : lecture directe depuis le système de fichiers avec fs.readFile
- Les fichiers uploadés localement (/uploads/rappels-attachments/...) sont maintenant correctement lus
- Utilisation de path.join(process.cwd(), pdfUrl) pour construire le chemin absolu
- Déployé sur le VPS de production (https://formations.itinova.org)
- L'envoi d'attestations uploadées localement fonctionne maintenant correctement
2026-01-18 06:11:57 -05:00
Manus
95606294dc Checkpoint: Modification de l'envoi d'attestation pour joindre le PDF directement en pièce jointe :
- Modification de la fonction sendAttestationEmail dans server/emailService.ts
- Le PDF est maintenant téléchargé depuis l'URL et converti en Buffer
- Le PDF est joint à l'email en pièce jointe (base64) au lieu d'un lien de téléchargement
- Nom du fichier joint : Attestation_Nom_Prenom.pdf
- Texte de l'email adapté : "Vous trouverez votre attestation en pièce jointe de cet email"
- Déployé sur le VPS de production (https://formations.itinova.org)
- Les attestations sont maintenant envoyées directement en pièce jointe
2026-01-18 04:55:11 -05:00
Manus
a203b70e27 Checkpoint: Corrections complètes du système de pièces jointes pour les rappels :
- Upload de fichiers avec fallback automatique vers stockage local
- Configuration Nginx pour uploads jusqu'à 10 Mo
- Colonne "Pièce jointe" dans le tableau de gestion des rappels
- Support des fichiers locaux et S3 dans l'envoi d'emails
- Correction de l'encoding base64 pour SMTP/Nodemailer
- Table logsrappels créée dans la base de données MySQL du VPS
2026-01-17 11:12:07 -05:00
Manus
e642f23170 Checkpoint: Amélioration du bouton "Tester le rappel" pour utiliser automatiquement le bon template configuré :
- Modification de la procédure testerRappel pour détecter automatiquement le premier rappel actif configuré pour la séquence
- Suppression du paramètre typeRappel (n'est plus nécessaire)
- Création de la fonction sendRappelEmail générique qui utilise le templateType du rappel configuré
- Le bouton frontend envoie maintenant le bon template (rappel 1, 3, 4, 5, 6, etc.) selon la configuration de la séquence
- Gestion des pièces jointes configurées dans le rappel
- Mise à jour du fichier todo.md pour marquer la tâche comme terminée
2026-01-15 12:22:24 -05:00
Manus
b9804ada14 Checkpoint: Ajout du bouton "Tester le rappel" dans AdminSequences.tsx :
- Ajout de la mutation testerRappelMutation connectée à la procédure tRPC rappels.testerRappel
- Ajout de l'icône Send dans les imports
- Ajout du bouton dans la colonne Actions du tableau des séquences (entre Edit et Delete)
- Le bouton envoie un email de test à l'administrateur avec les données de la séquence sélectionnée
- Validation : le bouton est désactivé si la séquence n'a pas de dates configurées
- Feedback utilisateur : toast de succès ou d'erreur après l'envoi
- Mise à jour du fichier todo.md pour marquer la tâche comme terminée
2026-01-15 11:48:33 -05:00
Manus
a7602e6740 Checkpoint: Ajout de la page de gestion des attestations de formation
Nouvelle fonctionnalité complète pour gérer les attestations :

- Schéma de base de données : colonnes modeAttestation et modeEnvoi dans formations, colonnes documentUrl, documentS3Key, uploadedBy, uploadedAt dans attestations
- Backend : fichier gestionAttestationsDb.ts, procédures tRPC, fonction sendAttestationEmail
- Interface : page AdminGestionAttestations avec sélection de formation, configuration des modes, tableau des apprenants, boutons upload/prévisualisation/envoi/suppression
- Navigation : lien dans menu Gestion, route /admin/gestion-attestations
2026-01-12 14:57:30 -05:00
Manus
55f0f2795e Checkpoint: Tableau de bord personnalisé pour formateurs avec statistiques (total séquences, séquences à venir, total apprenants) et liste des prochaines interventions avec détails (dates, lieu, capacité). Redirection automatique des formateurs vers /formateur au lieu de /admin. Notifications automatiques par email pour les formateurs lors de nouvelles inscriptions, annulations, capacité maximale atteinte et places disponibles. Menus Configuration, Traçabilité et Analyses masqués pour les formateurs. 2026-01-09 11:05:07 -05:00
Manus
5308b7921e Checkpoint: Ajout de la possibilité de joindre un fichier dans l'envoi des rappels par email
Modifications apportées :
- Ajout des colonnes nomFichier, urlFichier, s3Key, typeFichier, tailleFichier dans la table rappels
- Création du composant FileUpload pour l'upload de fichiers vers S3 (max 10 Mo)
- Création de l'endpoint API /api/upload-file pour gérer l'upload
- Intégration du composant FileUpload dans les formulaires de création et modification de rappels
- Mise à jour des procédures tRPC create et update pour gérer les informations de fichier
- Modification des fonctions sendRappelJ7Email et sendRappelJ1Email pour inclure les pièces jointes
- Mise à jour du scheduler de rappels pour passer les informations de fichier lors de l'envoi
- Les fichiers sont téléchargés depuis S3 et convertis en base64 pour être attachés aux emails
2026-01-08 06:00:27 -05:00
Manus Sandbox
ea57cfc0cb Checkpoint: Ajout du système de notifications enrichi comprenant : email de remerciement post-formation automatique, notifications aux formateurs (nouvelle inscription et annulation), alertes de capacité atteinte pour les admins, notifications aux apprenants en liste d'attente quand une place se libère, ajout du champ email pour les formateurs, et scheduler automatique pour les remerciements. 2025-12-15 14:59:59 -05:00
Manus Sandbox
8dcb2e76a0 Checkpoint: Correction finale du bug où le nom du formateur n'était pas remplacé dans les emails de rappel J-7 (alors que J-1 fonctionnait correctement). Le problème venait du fait que la variable formateur n'était pas incluse dans l'objet variables passé à getEmailTemplate() dans sendRappelJ7Email. Modification : Ajout de formateur: params.formateur || '' dans l'objet variables de sendRappelJ7Email (server/emailService.ts ligne 282). Le nom du formateur est maintenant correctement remplacé dans tous les emails de rappel J-7, alignant le comportement avec les rappels J-1. 2025-12-10 11:16:11 -05:00
Manus Sandbox
97b8af438c Checkpoint: Correction du bug où le nom du formateur n'était pas affiché dans les emails de rappel J-7 et J-1 alors que la prévisualisation fonctionnait correctement. Modifications : 1) Ajout du paramètre formateur? dans la signature de sendRappelJ7Email (server/emailService.ts ligne 231), 2) Ajout de l'affichage du formateur dans le template HTML de rappel J-7 (ligne 261), 3) Passage du paramètre formateur dans sendGroupEmail pour le type rappel (ligne 406), 4) Passage du paramètre formateur dans rappelScheduler pour J-7 et J-1 (lignes 160 et 178), 5) Récupération et passage du formateur dans testerRappel (routers.ts lignes 913-917, 955, 971). Le nom du formateur s'affiche maintenant correctement dans tous les emails de rappel envoyés. 2025-12-10 10:46:32 -05:00
Manus Sandbox
d0d9d870b0 Checkpoint: Correction de la variable {{datesHTML}} dans l'email de confirmation d'inscription
Problème identifié :
- La variable datesHTML était générée dans le code (lignes 60-80) pour créer le HTML formaté des dates
- Mais elle n'était pas ajoutée dans l'objet variables passé au template personnalisé
- Résultat : {{datesHTML}} n'était pas remplacée dans le template

Solution appliquée :
- Ajout de datesHTML dans l'objet variables (ligne 134)
- La variable contient le HTML formaté de toutes les dates de la séquence
- Format : <div class="date-item"><strong>Date X :</strong><br/>Du ... au ...</div>

La variable {{datesHTML}} est maintenant correctement remplacée dans les templates d'emails personnalisés.
2025-12-03 04:26:56 -05:00
Manus Sandbox
b30c68c110 Checkpoint: Correction du remplacement des variables dans les emails de confirmation d'inscription
- Ajout d'alias de variables pour supporter les deux formats : {{prenom}} et {{prenomApprenant}}
- Les templates peuvent maintenant utiliser indifféremment les noms courts (prenom, nom, formation, sequence) ou les noms longs (prenomApprenant, nomApprenant, nomFormation, nomSequence)
- Correction appliquée dans sendInscriptionConfirmation
2025-12-01 03:51:18 -05:00
Manus Sandbox
770be50996 Checkpoint: Amélioration des templates d'emails J-7 et J-1 pour afficher toutes les dates de la séquence au lieu d'une seule date. Ajout de la variable {{datesHTML}} qui génère dynamiquement le HTML formaté de toutes les dates lors de l'envoi des emails. 2025-11-30 15:41:29 -05:00
Manus Sandbox
d73db2820c Checkpoint: Implémentation de trois fonctionnalités majeures :
1. Personnalisation des templates d'emails avec variables {{lieu}} et {{formateur}} (déjà disponible)
2. Aperçu avant envoi avec données réelles d'un apprenant (modal avec iframe)
3. Email de rappel J-1 avec bouton d'envoi et d'aperçu

Les templates personnalisés supportent maintenant toutes les variables disponibles.
L'aperçu permet de vérifier le rendu final avant l'envoi groupé.
Le rappel J-1 complète le système de communication avec les apprenants.
2025-11-30 13:33:32 -05:00
Manus Sandbox
9e1d574d2e Checkpoint: Amélioration de l'email de teaser avec affichage du formateur et du lieu :
Modifications apportées :
- Ajout des paramètres `lieu` et `formateur` à la fonction sendTeaserEmail
- Récupération du formateur depuis la base de données dans routers.ts via getFormateurById
- Affichage du lieu et du formateur dans le contenu HTML de l'email teaser
- Ajout de `lieu` et `formateur` dans les variables disponibles pour les templates personnalisés

Variables disponibles dans les templates d'emails :
- {{nomApprenant}} - Nom de l'apprenant
- {{prenomApprenant}} - Prénom de l'apprenant
- {{nomFormation}} - Nom de la formation
- {{nomSequence}} - Nom de la séquence
- {{dateDebut}} - Date de début formatée
- {{dateFin}} - Date de fin formatée
- {{lieu}} - Lieu de la formation
- {{formateur}} - Nom du formateur

L'email de teaser affiche maintenant toutes les informations importantes pour les apprenants.
2025-11-30 13:11:16 -05:00
Manus Sandbox
fc6bf5ddcc Checkpoint: Correction du bug de remplacement des tags dans les emails de teaser et rappel :
Problème corrigé :
- Les tags {{nomFormation}}, {{nomSequence}}, etc. n'étaient pas remplacés dans les emails de teaser et rappel
- Les fonctions sendTeaserEmail et sendRappelJ7Email ne passaient pas les variables au générateur de template

Solution appliquée :
- Ajout de l'objet variables dans sendTeaserEmail avec : nomApprenant, prenomApprenant, nomFormation, nomSequence, dateDebut, dateFin
- Ajout de l'objet variables dans sendRappelJ7Email avec les mêmes variables plus le lieu
- Les variables sont maintenant correctement transmises à getEmailTemplate() pour le remplacement

Variables disponibles dans les templates :
- {{nomApprenant}} - Nom de l'apprenant
- {{prenomApprenant}} - Prénom de l'apprenant
- {{nomFormation}} - Nom de la formation
- {{nomSequence}} - Nom de la séquence
- {{dateDebut}} - Date de début formatée
- {{dateFin}} - Date de fin formatée
- {{lieu}} - Lieu de la formation (rappel uniquement)
2025-11-30 12:56:38 -05:00
Manus Sandbox
33161d1a4d Checkpoint: Implémentation complète du remplacement automatique des variables dans les emails et ajout d'un bouton d'aperçu. Les variables {{nomApprenant}}, {{prenomApprenant}}, {{nomFormation}}, {{nomSequence}}, {{dateDebut}}, {{dateFin}}, {{lieu}}, {{formateur}} sont automatiquement remplacées lors de l'envoi d'emails. Un bouton "Aperçu email" permet de visualiser le rendu final avec des données d'exemple avant l'envoi. 2025-11-23 16:14:53 -05:00
Manus Sandbox
2283e84b54 true message 2025-11-19 10:33:48 -05:00
Manus Sandbox
16351ea3d5 Checkpoint: Trois améliorations majeures du champ formateur :
 **1. Affichage dans le tableau des séquences**
- Nouvelle colonne "Formateur" ajoutée au tableau de gestion
- Affiche le nom du formateur ou "-" si non renseigné

 **2. Liste prédéfinie avec autocomplétion**
- Nouvelle table `formateurs` dans la base de données
- Procédures tRPC (list, create, delete) pour gérer les formateurs
- Composant `FormateurCombobox` avec autocomplétion intelligente
- Possibilité d'ajouter rapidement un nouveau formateur depuis le formulaire
- Recherche en temps réel parmi les formateurs existants

 **3. Inclusion dans les emails d'invitation**
- Le nom du formateur est maintenant affiché dans les emails de confirmation d'inscription
- Affichage conditionnel (uniquement si un formateur est renseigné)
- Améliore la communication avec les apprenants

Ces améliorations standardisent la gestion des formateurs, évitent les doublons/fautes de frappe, et enrichissent l'information transmise aux apprenants.
2025-11-19 09:38:06 -05:00
Manus Sandbox
37e0f8da49 Rollback to 9d67724e 2025-11-19 08:41:10 -05:00
Manus Sandbox
5085159cf7 Rollback to 641200f3 2025-11-19 08:36:23 -05:00
Manus Sandbox
20dc80cd74 Checkpoint: Ajout d'une interface d'administration complète pour personnaliser les templates d'emails avec prévisualisation en temps réel, stockage en base de données et intégration avec le service d'envoi 2025-11-17 17:11:27 -05:00
Manus Sandbox
f06cd3e8a5 Checkpoint: Amélioration du système d'envoi d'emails : intégration de Resend pour l'envoi réel d'emails avec fallback vers simulation si non configuré. Documentation complète ajoutée dans EMAIL_SETUP.md pour guider la configuration. 2025-11-17 16:53:32 -05:00
Manus Sandbox
155c4592e1 Checkpoint: Ajout de la fonctionnalité complète de réinitialisation de mot de passe avec génération de tokens temporaires (24h), stockage en base de données, et envoi d'emails automatiques. Nouveau bouton dans la page de gestion des utilisateurs avec dialogue de confirmation. 2025-11-17 16:21:11 -05:00
Manus Sandbox
5c9b6637c4 Checkpoint: Refonte majeure : transformation du système de sessions en séquences avec support de jusqu'à 4 dates par séquence. L'inscription à une séquence inscrit automatiquement l'apprenant à toutes les dates. Mise à jour complète du backend (schéma DB, procédures tRPC, emails, exports) et du frontend (AdminSequences, AdminSequenceInscrits, Inscription, Admin). Toutes les fonctionnalités existantes (filtres, statistiques, exports PDF/Excel, emails automatiques) sont préservées et adaptées au nouveau modèle. 2025-11-12 09:57:58 -05:00
Manus Sandbox
ca9b1c3d37 Checkpoint: Implémentation des trois améliorations demandées : ajout de filtres par fonction sur les pages apprenants et inscrits, création d'un graphique circulaire de répartition par fonction sur le tableau de bord avec recharts, et personnalisation des templates d'emails (confirmation, teaser, rappel J-7) incluant la fonction de l'apprenant dans la salutation. 2025-11-12 09:35:58 -05:00
Manus Sandbox
2c5bc825af Checkpoint: Corrections : mise à jour automatique de la liste des apprenants après inscription + envoi de notifications par email via le système Manus lors des inscriptions 2025-11-12 08:58:29 -05:00
Manus Sandbox
0fc35596d9 Checkpoint: Application complète de gestion des formations Manager Itinova avec toutes les fonctionnalités : gestion des formations/sessions/apprenants, système d'inscription avec validations, génération d'invitations Outlook, emails automatiques, exports PDF/Excel, et documentation complète. 2025-11-12 08:38:33 -05:00