Commit Graph

35 Commits

Author SHA1 Message Date
Manus
1cee07582f Checkpoint: Correction de l'erreur emailTemplates.getByType
## Problème
La procédure `emailTemplates.getByType` retournait `undefined` quand un template n'existait pas, ce qui causait une erreur React Query : "Query data cannot be undefined".

Cette erreur se produisait notamment lors de la sélection des nouveaux templates (Rappel 3, 4, 5, 6) qui n'avaient pas encore été initialisés dans la base de données.

## Solution
Modification de la fonction `getEmailTemplateByType` dans `server/db.ts` pour retourner `null` au lieu de `undefined` :
- `if (!db) return null;` (au lieu de `return undefined;`)
- `return results.length > 0 ? results[0] : null;` (au lieu de `undefined`)

React Query accepte `null` comme valeur valide mais pas `undefined`.

## Résultat
Les templates non initialisés peuvent maintenant être sélectionnés sans erreur. L'interface affiche correctement un état vide au lieu de crasher.
2026-01-08 05:18:43 -05:00
Manus
f56c1d554e Checkpoint: Ajout de 4 nouveaux templates de rappels
## Modifications effectuées :

### AdminEmailTemplates.tsx
Ajout de 4 nouveaux types de templates dans la liste :
- "Rappel 3" (value: rappel3)
- "Rappel 4" (value: rappel4)
- "Rappel 5" (value: rappel5)
- "Rappel 6" (value: rappel6)

### AdminRappels.tsx
Ajout des mêmes templates dans TEMPLATE_TYPES avec des délais par défaut :
- Rappel 3 : 14 jours avant
- Rappel 4 : 21 jours avant
- Rappel 5 : 30 jours avant
- Rappel 6 : 60 jours avant

### server/db.ts (initializeDefaultEmailTemplates)
Ajout de 4 nouveaux templates par défaut basés sur le contenu du "Rappel 1" :
- Même structure HTML
- Même message de base
- Prêts à être personnalisés

## Note importante
Ces nouveaux templates ne seront créés que lors de l'initialisation des templates par défaut (bouton "Initialiser les templates par défaut" dans Configuration > Templates d'emails). Si vous avez déjà initialisé les templates, vous devrez créer manuellement ces 4 nouveaux templates ou réinitialiser la base de données.
2026-01-08 05:15:03 -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
977bf2952e Checkpoint: Correction de la détection d'inscription existante
- Modification de checkExistingInscription pour exclure les inscriptions avec statut "annulee"
- Permet maintenant de réinscrire un apprenant à une séquence après annulation de son inscription précédente
- Les inscriptions annulées ne sont plus considérées comme des inscriptions actives lors de la vérification de doublon
2025-12-01 04:42:45 -05:00
Manus Sandbox
94f6532ce6 Checkpoint: Correction du filtrage des inscriptions annulées
- Modification de getInscriptionsBySequence pour exclure les inscriptions avec statut "annulee"
- Modification de getInscriptionsByApprenant pour exclure les inscriptions avec statut "annulee"
- Ajout de l'import de la fonction ne depuis drizzle-orm
- Vérification que le scheduler de rappels filtre déjà correctement (envoie uniquement aux inscriptions confirmées)
2025-12-01 04:02:07 -05:00
Manus Sandbox
548dbc12b9 Checkpoint: Ajout des types de rappels J-7 et J-1 dans l'interface de gestion des rappels. Les templates d'emails ont été corrigés pour afficher toutes les dates des séquences. Bug connu : l'insertion des rappels échoue avec une erreur SQL sur le champ derniereExecution (à corriger après ce checkpoint). 2025-11-30 17:24:41 -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
497d30ae3e Checkpoint: Correction des templates d'emails Rappel J-7 et Rappel J-1 : ajout du bodyContent complet avec toutes les variables dynamiques (nomApprenant, prenomApprenant, nomFormation, nomSequence, dateDebut, lieu, formateur) pour correspondre à l'aperçu visible depuis les séquences. 2025-11-30 14:58:43 -05:00
Manus Sandbox
edc7b12f68 Checkpoint: Ajout du template de rappel J-1 dans la page de gestion des templates d'emails. Le template est maintenant disponible dans la liste déroulante et peut être personnalisé comme les autres templates. 2025-11-30 13:52:39 -05:00
Manus Sandbox
cdb77b4f38 Checkpoint: Corrections apportées :
- Ajout du support SMTP pour l'envoi d'emails (sans dépendre de Resend)
- Correction de l'affichage du statut pour montrer "SMTP Direct" au lieu de "Resend"
- Ajout d'alertes spécifiques pour la configuration SMTP
- Correction de la fonction upsertEmailConfig pour mettre à jour au lieu de créer une nouvelle configuration
- Correction du bug d'enregistrement des champs SMTP dans la base de données
- Mise à jour forcée du provider à "smtp" dans la base de données
2025-11-28 11:05:46 -05:00
Manus Sandbox
a0049436cc Checkpoint: Ajout de badges Actif/Inactif dans la liste des apprenants et création d'une page dédiée aux établissements avec statistiques de participation 2025-11-23 17:28:12 -05:00
Manus Sandbox
e4abeb5dc9 Checkpoint: Correction complète de l'erreur 403 : ajout du champ bodyContent dans la validation Zod (routers.ts) et dans la fonction de mise à jour de la base de données (db.ts). Le champ "Corps du message" fonctionne maintenant correctement dans l'interface de gestion des templates d'emails et les données sont correctement sauvegardées en base de données. 2025-11-23 15:15:02 -05:00
Manus Sandbox
8a61f9b823 Checkpoint: Ajout de l'identifiant de connexion et modification du mot de passe dans la gestion des utilisateurs
Modifications apportées :
- Ajout du champ username (identifiant de connexion) dans le schéma de la base de données avec contrainte UNIQUE
- Mise à jour des procédures tRPC create et update pour gérer username et password
- Implémentation du hashage du mot de passe avec bcryptjs dans createUser et updateUser
- Ajout de la colonne "Identifiant" dans le tableau de la page de gestion des utilisateurs
- Ajout des champs "Identifiant de connexion" et "Mot de passe" dans le formulaire de création
- Ajout des champs "Identifiant de connexion" et "Nouveau mot de passe" dans le formulaire d'édition avec notes explicatives
- Les mots de passe sont hashés avant d'être stockés en base de données pour la sécurité
- Dans le formulaire d'édition, les champs username et password sont optionnels (laissez vide pour ne pas modifier)
2025-11-21 10:08:56 -05:00
Manus Sandbox
1768e45dc1 Checkpoint: Correction complète de l'affichage du formateur dans la liste des séquences et dans le formulaire de modification. Ajout de la colonne formateurId dans la table sequences, modification du schéma Zod pour accepter null, et correction du FormateurCombobox pour stocker l'ID au lieu du nom. Le formateur s'affiche maintenant correctement dans la liste des séquences. 2025-11-20 04:36:02 -05:00
Manus Sandbox
7149458bb8 Checkpoint: Correction de l'erreur "No procedure found on path formateurs.create" en ajoutant le routeur formateurs complet avec les procédures list, getById, create, update et delete, ainsi que les fonctions de base de données correspondantes 2025-11-20 03:57:35 -05:00
Manus Sandbox
4a48164461 Checkpoint: Corrections d'affichage du nom de formation dans le calendrier :
- Création de getSequencesWithFormation() pour récupérer les informations de formation
- Mise à jour de la procédure sequences.list pour utiliser la nouvelle fonction
- Correction de AdminCalendrier.tsx pour utiliser formation.nom au lieu de formation.titre
- Le nom de la formation s'affiche maintenant correctement dans le calendrier et dans le dialog de détails
- Vérification que le placeholder du FormateurCombobox est correct
2025-11-19 12:17:52 -05:00
Manus Sandbox
2283e84b54 true message 2025-11-19 10:33:48 -05:00
Manus Sandbox
4bf589dde3 Checkpoint: Trois améliorations majeures pour la gestion des séquences :
 **1. Indicateur visuel de remplissage**
- Composant CapacityProgressBar avec barre de progression colorée
- Affichage "X / Y" avec pourcentage
- Couleurs automatiques : vert (<70%), orange (70-90%), rouge (>90%)
- Intégré dans la colonne capacité du tableau des séquences

 **2. Vue calendrier mensuel**
- Nouvelle page AdminCalendrier accessible depuis le menu
- Calendrier mensuel avec navigation (mois précédent/suivant, aujourd'hui)
- Affichage des séquences sur leurs dates respectives
- Dialog de détails au clic sur une séquence
- Vue complète avec toutes les informations (lieu, formateur, capacité, dates)

 **3. Système de rappels automatiques personnalisables**
- Tables rappels et rappelsEnvoyes créées
- Procédures tRPC complètes (list, create, update, delete)
- Page AdminRappels avec interface de gestion
- Configuration de rappels multiples (J-15, J-7, J-1, etc.)
- Templates d'emails personnalisables avec variables dynamiques
- Activation/désactivation des rappels
- Infrastructure prête pour l'envoi automatique (nécessite service de planification externe)

Ces améliorations facilitent grandement la planification et le suivi des formations.
2025-11-19 09:59:37 -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
1313a45879 Rollback to a1d67c74 2025-11-19 08:34:55 -05:00
Manus Sandbox
42826fc7dd Checkpoint: Implémentation de la cohabitation des deux systèmes d'authentification (OAuth Manus et authentification locale). Les utilisateurs peuvent maintenant choisir entre :
- Authentification locale avec email/mot de passe
- OAuth Manus pour les utilisateurs de la plateforme

Le contexte tRPC gère automatiquement les deux types de tokens (JWT local et JWT OAuth).
2025-11-19 07:03:34 -05:00
Manus Sandbox
28727171ae Checkpoint: Migration OAuth Manus vers authentification locale (80% complété) - Pages login/register créées, backend JWT implémenté, guides de déploiement ajoutés. Reste à corriger les doublons dans db.ts et finaliser AdminUsers. 2025-11-19 04:39:07 -05:00
Manus Sandbox
9d67724e83 Checkpoint: Ajout de l'interface de configuration SMTP avec Resend : formulaire de configuration (API key, email expéditeur, nom), basculement simulation/production, test d'envoi immédiat, stockage sécurisé en base de données, et guide de configuration intégré 2025-11-18 02:00:48 -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
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
c9f6f8f068 Checkpoint: Ajout de la fonctionnalité de création d'utilisateurs : ajout de la fonction createUser dans db.ts, création de la procédure tRPC users.create, ajout du bouton "Ajouter un utilisateur" dans la page AdminUsers avec icône Plus, création du dialogue de création avec formulaire complet (OpenID, nom, email, rôle) et gestion des états de création avec validation et messages de succès/erreur 2025-11-17 16:10:16 -05:00
Manus Sandbox
8cf6a9f6c3 Checkpoint: Ajout d'une fonctionnalité complète de gestion des utilisateurs : ajout du champ isActive dans le schéma users, création des procédures tRPC (list, update, toggleStatus, delete), développement de la page AdminUsers avec tableau, filtres (recherche, rôle, statut), formulaires de modification, activation/désactivation et suppression des comptes, intégration dans le menu de navigation avec l'icône UserCog 2025-11-17 15:57:51 -05:00
Manus Sandbox
6f5178b909 Checkpoint: Ajout des badges de couleur pour le public cible (bleu pour Directeurs, vert pour Chefs de service, gris pour Autre) dans les tableaux des séquences et création d'un rapport d'analyse comparant le public cible des séquences avec la fonction des apprenants inscrits pour identifier les écarts et optimiser la planification des formations 2025-11-17 08:44:49 -05:00
Manus Sandbox
4152b88c91 Checkpoint: Correction finale du décalage horaire : parseLocalDateTime compense maintenant automatiquement le décalage UTC en utilisant getTimezoneOffset(). Cela garantit que l'heure saisie (par exemple 09:48) est stockée en UTC de manière à être affichée correctement en heure locale. Le paramètre timezone a été retiré de la connexion MySQL pour éviter les doubles conversions. 2025-11-13 10:24:37 -05:00
Manus Sandbox
1031c57f96 Checkpoint: Configuration du fuseau horaire Europe/Paris (UTC+1) dans la connexion MySQL pour éliminer le décalage horaire. Le paramètre timezone=+01:00 est ajouté automatiquement à l'URL de connexion pour forcer MySQL à stocker et récupérer les dates en heure locale française sans conversion UTC. 2025-11-13 09:59:12 -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
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
Manus Sandbox
641200f3a4 Initial project bootstrap 2025-11-12 08:24:07 -05:00