Commit Graph

79 Commits

Author SHA1 Message Date
Manus Sandbox
aa3e9fa093 Checkpoint: Correction du bug d'inscription qui associait le mauvais apprenant
Problème identifié :
- La procédure apprenants.create était une procédure admin (adminProcedure)
- La page d'inscription publique n'est pas authentifiée
- Lors de la création d'un apprenant, la mutation échouait silencieusement
- Le code récupérait ensuite un mauvais apprenant par email

Solution appliquée :
- Création d'une nouvelle procédure publique apprenants.createPublic
- Modification de Inscription.tsx pour utiliser createPublic au lieu de create
- Les nouveaux apprenants peuvent maintenant être créés depuis la page publique
- L'inscription associe maintenant le bon apprenant à la séquence
2025-12-01 04:52: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
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
1255124c3d Checkpoint: Rappels automatiques J-7 et J-1 finalisés avec templates personnalisés Itinova
- Correction du bug d'insertion SQL des rappels (champ derniereExecution)
- Création de la table rappels et des fonctions CRUD
- Implémentation du scheduler automatique (vérification toutes les heures)
- Personnalisation des templates J-7 et J-1 avec logo et couleurs Itinova (Bleu #283581, Bleu clair #0578BE, Orange #E94E1B, Vert #45ac34)
- Style sobre et professionnel appliqué
- Variable {{datesHTML}} pour afficher toutes les dates de chaque séquence
2025-12-01 03:34:08 -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
d84a2fe0c5 Checkpoint: Correction du bug d'envoi d'emails : les emails sont maintenant envoyés uniquement via SMTP en mode production, sans notification simulée supplémentaire. Ajout de logs détaillés pour faciliter le diagnostic des problèmes d'envoi. 2025-11-30 16:49:25 -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
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
3588335874 Checkpoint: Amélioration du système d'envoi d'emails groupés (teaser et rappel) :
Fonctionnalités ajoutées :
- Logs serveur détaillés pour l'envoi d'emails groupés (nombre de destinataires, adresses)
- Message de retour avec le nombre d'emails envoyés avec succès et échoués
- Avertissement si aucun email n'est envoyé (aucun apprenant confirmé)

Corrections apportées :
- Les emails de teaser et rappel utilisent maintenant correctement la configuration SMTP
- Affichage d'un message de succès clair après l'envoi d'emails groupés

Note technique :
- Le code utilise bien sendEmail() qui respecte la configuration SMTP
- Les emails ne sont envoyés qu'aux apprenants avec statut "confirmee"
- La configuration SMTP doit être faite séparément en production (base de données différente)
2025-11-30 12:45:03 -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
426337a6d5 Checkpoint: Correction du bug d'enregistrement de la configuration SMTP :
**Problème identifié** :
La mutation tRPC `emailConfig.upsert` n'acceptait pas les champs SMTP (smtpHost, smtpPort, smtpSecure, smtpUser, smtpPassword) dans son schéma de validation Zod, ce qui empêchait l'enregistrement de la configuration SMTP.

**Solution appliquée** :
- Ajout des 5 champs SMTP dans le schéma d'input de la mutation `upsert` dans `server/routers.ts`
- Tous les champs SMTP sont définis comme nullable et optional pour permettre la flexibilité
- Types corrects : smtpPort (number), smtpSecure (enum), autres (string)

**Résultat** :
La configuration SMTP peut maintenant être enregistrée correctement dans la base de données. Les champs sont transmis du frontend au backend et stockés via la fonction `upsertEmailConfig`.
2025-11-28 10:47:29 -05:00
Manus Sandbox
40964c8369 Checkpoint: Ajout de la possibilité d'envoyer des emails via SMTP directement (sans Resend) :
**Modifications de la base de données** :
- Ajout des champs SMTP dans la table `emailConfig` : smtpHost, smtpPort, smtpSecure, smtpUser, smtpPassword

**Backend** :
- Installation de `nodemailer` pour l'envoi SMTP
- Création de `server/_core/smtpSender.ts` avec les fonctions d'envoi SMTP et de test de connexion
- Modification de `server/_core/emailSender.ts` pour supporter les deux méthodes (Resend et SMTP)
- Priorité donnée à SMTP si configuré, sinon fallback sur Resend

**Frontend** :
- Mise à jour de `AdminEmailConfig.tsx` pour permettre le choix entre Resend et SMTP
- Ajout d'un sélecteur de méthode d'envoi (Resend API / SMTP Direct)
- Formulaire de configuration SMTP avec :
  * Hôte SMTP (ex: smtp.gmail.com)
  * Port (587, 465, 25)
  * Sécurité (TLS, SSL, None)
  * Identifiants (utilisateur/mot de passe)
  * Email expéditeur

**Compatibilité** :
- Support des principaux fournisseurs SMTP (Gmail, Outlook, serveurs SMTP personnalisés)
- Instructions pour les mots de passe d'application Gmail
- Mode simulation toujours disponible pour les tests
2025-11-28 06:33:25 -05:00
Manus Sandbox
46f8a6bcfd Checkpoint: Correction complète du bug d'import Excel - Utilisation de $returningId() pour récupérer les IDs après insertion (formations et séquences), ajout de la colonne ordre obligatoire pour les dates de formation. L'import fonctionne maintenant correctement. 2025-11-25 14:33:57 -05:00
Manus Sandbox
c4f9cb9ebc Checkpoint: Correction du bug d'import Excel - Retrait de la colonne publicCible inexistante dans la table formations. Ajout de logs de débogage et amélioration de la gestion des erreurs d'import. 2025-11-25 14:22:36 -05:00
Manus Sandbox
5fde389c85 Checkpoint: Correction du nom de colonne dans l'import Excel : lienInscription → lienUnique pour correspondre au schéma de la base de données 2025-11-25 06:02:19 -05:00
Manus Sandbox
be123c9a88 Checkpoint: Correction du bug d'import Excel causé par un conflit de noms entre le paramètre formations et la table formations du schéma. Renommage des imports pour éviter ce conflit. 2025-11-25 05:58:17 -05:00
Manus Sandbox
f5dfb20e9a Checkpoint: Ajout de la fonctionnalité d'import Excel pour créer des formations et séquences en masse. Inclut le template Excel, la logique backend de parsing et validation, l'interface frontend avec prévisualisation, et la documentation utilisateur complète. 2025-11-25 05:49:13 -05:00
Manus Sandbox
9fffa8c773 Checkpoint: Correction du bug de création/modification de séquence avec public cible "Tous"
- Ajout de la valeur "tous" dans l'enum publicCible du schéma drizzle/schema.ts
- Mise à jour des validations Zod dans server/routers.ts
- Modification directe de la colonne publicCible en base de données via SQL
- Test réussi : création d'une séquence avec public cible "Tous" fonctionne parfaitement
2025-11-25 02:38:12 -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
03efb59cbf Checkpoint: Ajout de filtres de période (dernier mois, trimestre, année) pour affiner l'analyse des tendances. Implémentation de l'export Excel des rapports analytiques avec 5 feuilles (statistiques globales, inscriptions par mois, taux de remplissage, participation par établissement et par fonction). Création du schéma de base de données pour les alertes automatiques (fonctionnalité future). Les utilisateurs peuvent maintenant filtrer les données analytiques par période et télécharger des rapports Excel complets. 2025-11-23 16:36:26 -05:00
Manus Sandbox
64db3f1aa6 Checkpoint: Création d'un tableau de bord analytique avancé avec graphiques interactifs (Recharts). Affiche les statistiques globales, l'évolution temporelle des inscriptions par mois, le taux de remplissage des séquences, le top 10 des établissements participants et la répartition par fonction. Accessible via le menu "Tableau de bord analytique". 2025-11-23 16:25:22 -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
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
62644d544e Checkpoint: Ajout du champ "Corps du message" dans l'interface de gestion des templates d'emails. Les utilisateurs peuvent maintenant personnaliser le contenu principal de leurs emails automatiques (confirmation, teaser, rappel) en plus du titre, des couleurs et du pied de page. Le champ accepte du texte simple et affiche une prévisualisation en temps réel. 2025-11-23 14:57:58 -05:00
Manus Sandbox
645f6f6b5f Checkpoint: Correction de l'authentification locale : utilisation de sdk.createSessionToken() au lieu de jsonwebtoken pour compatibilité avec le système OAuth 2025-11-23 08:50:35 -05:00
Manus Sandbox
fe8b8e90c4 Checkpoint: Ajout d'une page de connexion locale permettant aux utilisateurs de se connecter avec leur identifiant et mot de passe (username/password) au lieu de l'OAuth Manus. Implémentation complète avec route d'authentification backend, hashage bcrypt, session JWT, et reconnaissance automatique des sessions locales vs OAuth. Tests unitaires et manuels réussis avec l'utilisateur adminServFormation. 2025-11-23 04:59:54 -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
2975d92568 Checkpoint: Ajout de la fonctionnalité "Détail par apprenant"
 Nouvelle procédure tRPC `apprenants.getInscriptions` pour récupérer toutes les inscriptions d'un apprenant avec les détails de formation et séquence
 Nouvelle page AdminApprenantDetail (/admin/apprenants/:id) affichant :
   - Informations personnelles de l'apprenant (nom, prénom, email, code établissement, fonction)
   - Tableau complet de toutes ses inscriptions avec :
     * Nom de la formation
     * Nom de la séquence
     * Toutes les dates de la séquence
     * Lieu
     * Public cible
     * Date d'inscription
     * Statut (avec badge coloré : vert pour confirmée, gris pour en attente, rouge pour annulée)
 Bouton "Détail" (icône œil) ajouté dans la colonne Actions de la page AdminApprenants
 Route /admin/apprenants/:id configurée dans App.tsx
 Bouton "Retour aux apprenants" pour navigation facile

Correction appliquée : La procédure getInscriptions extrait maintenant correctement l'objet inscription du résultat retourné par getInscriptionsByApprenant.

Tests réussis : Affichage correct des inscriptions pour l'apprenant "Nouveau Apprenant" (1 inscription à la séquence "Groupe A" avec statut confirmée).
2025-11-20 11:00:53 -05:00
Manus Sandbox
017ad5dd18 Checkpoint: Ajout de la signature du formateur sur les feuilles de présence
 Champ de signature du formateur ajouté en bas de chaque page de feuille de présence
 Comprend :
   - Label "Signature du formateur :" en gras
   - Ligne pour la signature manuscrite (60mm de largeur)
   - Champ "Date : _______________" pour dater la validation

Le formateur peut maintenant valider officiellement chaque journée de formation en signant et en datant la feuille de présence.

Fonctionnalités complètes des feuilles de présence :
- Logo Itinova en haut à droite (40x15mm)
- Nom du formateur dans l'en-tête (récupéré automatiquement depuis la base de données)
- Deux colonnes de signature par apprenant et par journée (Matin / Après-midi)
- Une page par date de formation
- Signature du formateur en bas de chaque page avec date

Tests réussis : PDF généré avec succès via script de test direct, signature du formateur visible et bien positionnée en bas de page.
2025-11-20 09:51:51 -05:00
Manus Sandbox
b9e1a63d82 Checkpoint: Améliorations complètes des feuilles de présence :
 Logo Itinova ajouté en haut à droite de chaque page (40x15mm)
 Nom du formateur affiché dans l'en-tête (récupéré automatiquement depuis la base de données)
 Deux colonnes de signature par apprenant et par journée (Signature Matin / Signature Après-midi)
 Une page générée pour chaque date de formation
 Toutes les informations complètes : Formation, Séquence, Lieu, Formateur, Public cible, Date de la journée
 Tableau avec 6 colonnes : Nom, Prénom, Code établissement, Fonction, Signature Matin, Signature Après-midi

Corrections techniques :
- Utilisation de path.resolve(process.cwd()) au lieu de __dirname pour éviter l'erreur "ReferenceError: __dirname is not defined"
- Ajout du champ formateur dans l'interface FeuillePresenceInfo
- Récupération automatique du nom du formateur via formateurId dans la procédure exportFeuillePresence

Tests réussis : Génération testée avec la séquence "Groupe A" (formateur George Clooney, 2 dates) - PDF généré avec succès avec toutes les modifications visibles.
2025-11-20 05:03:24 -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
1ab817c9ea Checkpoint: Corrections de bugs : calendrier et taux de remplissage
 **Bugs corrigés**

1. **Calendrier de novembre vide** : Correction du nom de propriété dans AdminCalendrier.tsx - utilisation de `seq.dates` au lieu de `seq.datesFormation` pour correspondre aux données retournées par l'API

2. **Taux de remplissage toujours à 0%** : Ajout du calcul du nombre d'inscrits dans la procédure `sequences.list` (routers.ts ligne 127) - appel de `db.countInscriptionsBySequence(seq.id, 'confirmee')` pour chaque séquence

Les séquences s'affichent maintenant correctement dans le calendrier et la barre de progression colorée reflète le véritable taux de remplissage avec le code couleur approprié (vert/orange/rouge).
2025-11-19 11:35:24 -05:00
Manus Sandbox
4b4a885704 Checkpoint: Vérification et finalisation des trois fonctionnalités principales
 **Fonctionnalités vérifiées et opérationnelles**

1. **Barre de progression colorée** : CapacityProgressBar intégré dans AdminSequences avec affichage "inscrits/capacité" et code couleur (vert <70%, orange 70-90%, rouge >90%)

2. **Vue calendrier mensuel** : Page AdminCalendrier accessible via le menu avec navigation mois précédent/suivant, affichage des séquences sur leurs dates, et dialog de détails au clic

3. **Système de rappels personnalisables** : Page AdminRappels accessible via le menu avec procédures tRPC complètes (list, create, update, delete, toggleActif), configuration des rappels (J-15, J-7, J-1), templates d'emails personnalisables avec variables dynamiques

 **Corrections apportées**
- Procédures tRPC rappels ajoutées dans routers.ts
- Routes et liens de navigation vérifiés et fonctionnels
- Tous les composants créés et intégrés correctement
2025-11-19 11:30:44 -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
703d0e4961 Checkpoint: Ajout du champ "Formateur" dans les séquences de formation :
 Base de données : colonne "formateur" ajoutée à la table sequences (VARCHAR 255, nullable)

 Backend : procédures tRPC mises à jour
- sequences.create : champ formateur ajouté (optionnel)
- sequences.update : champ formateur ajouté (optionnel)

 Frontend : formulaires mis à jour
- Formulaire de création : champ "Formateur" ajouté avec placeholder
- Formulaire de modification : champ "Formateur" ajouté avec placeholder
- Le champ est non obligatoire comme demandé

Le champ formateur permet maintenant de spécifier le nom du formateur pour chaque séquence de formation lors de la création ou de la modification.
2025-11-19 09:30:51 -05:00
Manus Sandbox
b9907f9cca Checkpoint: Corrections apportées à la gestion des séquences :
 Ajout du champ "Public cible" dans le dialogue de modification des séquences
- Le champ est maintenant visible et modifiable lors de l'édition d'une séquence
- Support complet de l'option "Tous" ajoutée précédemment

 Affichage du nombre d'inscrits dans la colonne capacité
- Format : "nombre d'inscrits / capacité" (ex: "5 / 12")
- Mise à jour de la procédure sequences.list pour inclure le comptage des inscriptions confirmées
- Mise à jour du schéma de validation pour inclure "tous" dans publicCible

Les deux problèmes signalés sont maintenant corrigés et l'application est prête à l'emploi.
2025-11-19 09:19:47 -05:00
Manus Sandbox
61d64c365b Checkpoint: Correction OAuth callback failed : ajout colonnes openId et loginMethod, password nullable, logs détaillés 2025-11-19 08:57:37 -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
4d2ed3d5d8 Checkpoint: Correction de la redirection OAuth pour revenir à l'application après authentification. Le callback OAuth décode maintenant le state pour rediriger vers /admin au lieu de rester sur le tableau de bord Manus. Le système gère maintenant correctement les deux modes d'authentification (local + OAuth). 2025-11-19 08:24:59 -05:00