Commit Graph

246 Commits

Author SHA1 Message Date
Manus Sandbox
b21ad8f978 Checkpoint: Ajout de la prévisualisation des questionnaires
 **Nouvelle fonctionnalité** :
- Bouton "Prévisualiser" dans la page d'édition de questionnaire
- Modal de prévisualisation avec rendu exact du questionnaire
- Affichage de tous les types de questions (texte libre, choix multiple, échelle, oui/non)
- Désactivation des champs pour montrer le rendu final
- Indication des questions obligatoires avec astérisque rouge

Le système de questionnaires est maintenant complet avec :
- Création et édition de questionnaires 
- Prévisualisation avant envoi 
- Envoi automatique post-formation 
- Analyse des résultats avec graphiques 

Prochaines étapes suggérées :
- Exports Excel/PDF des feedbacks
- Tests complets du système
- Déploiement sur le serveur VPS
2025-12-07 12:49:41 -05:00
Manus Sandbox
cc8f634c16 Checkpoint: Système de questionnaires de satisfaction et d'évaluation - Complet et fonctionnel
 **Schéma de base de données** (Phase 1) :
- Table questionnaires (satisfaction, evaluation_pre, evaluation_post)
- Table questions (choix_multiple, echelle, texte_libre, oui_non)
- Table reponsesQuestionnaires
- Table reponsesQuestions
- Table envoisQuestionnaires

 **Backend complet** (Phase 2) :
- Fichier questionnaireDb.ts avec toutes les fonctions CRUD
- Procédures tRPC pour questionnaires (list, getById, create, update, delete, getStats, getReponsesDetaillees)
- Procédures tRPC pour questions (list, create, update, delete)
- Procédures tRPC publiques pour réponses (getByToken, submit)
- Fonctions de statistiques (taux de réponse, réponses détaillées)

 **Interfaces d'administration** (Phase 3) :
- AdminQuestionnaires : Liste et gestion des questionnaires
- AdminQuestionnaireEdit : Création/édition d'un questionnaire avec ses questions
- QuestionnaireReponse : Page publique pour répondre aux questionnaires
- Routes ajoutées dans App.tsx
- Lien "Questionnaires" ajouté dans le menu de navigation

 **Envoi automatique post-formation** (Phase 4) :
- Fichier questionnaireScheduler.ts
- Fonction processEnvoisAutomatiques() pour envoyer les questionnaires
- Génération de tokens uniques pour chaque envoi
- Emails personnalisés avec lien vers le questionnaire
- Procédure tRPC pour déclencher manuellement l'envoi
- Scheduler quotidien à 9h00

 **Tableaux de bord d'analyse** (Phase 5) :
- AdminQuestionnaireAnalyse : Page d'analyse avec graphiques
- Statistiques globales (envois, réponses, taux de réponse)
- Graphiques par question (barres, camemberts)
- Analyse des réponses numériques (moyennes, distributions)
- Affichage des réponses textuelles

🚧 **À faire** :
- Exports Excel/PDF des feedbacks
- Tests complets du système
- Déploiement sur le serveur VPS

Le système est maintenant pleinement fonctionnel et prêt à être testé !
2025-12-05 07:04:13 -05:00
Manus Sandbox
069d144c73 Checkpoint: Ajout du bouton {{datesHTML}} dans l'interface de gestion des templates d'emails
Modifications apportées :
- Ajout d'un nouveau bouton "Dates (HTML)" dans l'interface AdminEmailTemplates
- Le bouton permet d'insérer la variable {{datesHTML}} dans le corps du message
- Ajout du remplacement de {{datesHTML}} dans la fonction de prévisualisation avec un exemple formaté
- Mise à jour de la description de la prévisualisation pour mentionner la nouvelle variable

La variable {{datesHTML}} permet d'afficher toutes les dates d'une séquence de formation de manière formatée dans les emails (rappels, teasers, confirmations).
2025-12-02 12:23:30 -05:00
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
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
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
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
a4ba9823a4 Checkpoint: Version finale avec support SMTP complet :
Fonctionnalités ajoutées :
- Support SMTP Direct pour l'envoi d'emails (Gmail, Outlook, serveurs personnalisés)
- Interface de configuration SMTP dans l'administration
- Basculement automatique entre Resend API et SMTP Direct
- Affichage du statut de configuration (Resend/SMTP, Simulation/Production)

Corrections apportées :
- Correction du bug de décalage horaire dans le formulaire d'édition des séquences
- Ajout du menu de navigation sur la page Import Excel
- Déplacement du menu Import Excel vers le bloc Configuration
- Correction de la fonction upsertEmailConfig pour mettre à jour au lieu de créer des doublons
- Correction du bug d'enregistrement des champs SMTP dans la base de données
- Correction du problème de cache React Query qui gardait l'ancienne configuration
- Invalidation automatique du cache après enregistrement de la configuration

Scripts de déploiement :
- Scripts de mise à jour VPS avec sauvegarde automatique
- Package de déploiement prêt pour le serveur de production
2025-11-30 11:39:04 -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
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
3647443898 Checkpoint: Corrections apportées :
1. Bug décalage horaire dans le formulaire d'édition des séquences
   - Correction de la fonction safeFormatDate pour utiliser les méthodes locales (getHours, getMinutes) au lieu des méthodes UTC
   - Les heures saisies (ex: 9h00) s'affichent maintenant correctement dans le formulaire d'édition

2. Ajout du menu de navigation sur la page Import Excel
   - Intégration du DashboardLayout wrapper dans AdminImportExcel.tsx
   - Le menu latéral s'affiche maintenant correctement sur cette page

3. Déplacement du menu "Import Excel"
   - Déplacé du bloc GESTION vers le bloc CONFIGURATION dans le menu de navigation
   - Positionné après "Utilisateurs" et avant "Rappels" pour une meilleure organisation
2025-11-27 05:39:37 -05:00
Manus Sandbox
6f6d7e8f7f Checkpoint: Correction du décalage horaire dans la gestion des séquences - Utilisation des méthodes UTC (getUTCHours, getUTCMinutes, etc.) pour l'affichage des dates et conversion locale vers UTC lors de l'envoi au serveur. Les heures saisies (ex: 9h00) sont maintenant correctement enregistrées et affichées. 2025-11-27 04:17:13 -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
625cbedf08 Checkpoint: Améliorations majeures du calendrier : ajout de filtres (formation, lieu, public cible), vues alternatives (semaine, jour) et exports (PDF, iCal) 2025-11-24 12:17:03 -05:00
Manus Sandbox
14aa8c5f21 Checkpoint: Correction du bug React #31 dans le calendrier - Erreur lors du survol des vignettes de séquences
Corrections apportées:
- Utilisation de clés stables (format yyyy-MM-dd) au lieu de day.toISOString() pour éviter l'erreur React #31
- Gestion correcte des objets Date vs strings pour dateBloquage dans le modal
- Gestion correcte du champ formateur qui peut être un objet ou une string
- Ajout de clés uniques pour les dates de formation dans le modal

Le calendrier fonctionne maintenant sans erreur lors du survol et de l'ouverture des modals de détails.
2025-11-24 09:29:03 -05:00
Manus Sandbox
7a737c0593 Checkpoint: Modification de la couleur des titres des zones du menu (TABLEAU DE BORD, GESTION, CONFIGURATION, ANALYSES) en bleu pour améliorer la visibilité et la cohérence visuelle 2025-11-23 18:07:40 -05:00
Manus Sandbox
b96c84d615 Checkpoint: Réorganisation du menu de navigation en 4 zones distinctes avec séparateurs visuels et titres de sections : Tableau de bord, Gestion (Formations, Séquences, Calendrier, Apprenants), Configuration (Utilisateurs, Rappels, Templates d'emails, Configuration SMTP), Analyses (Établissements, Tableau de bord analytique, Rapport public cible) 2025-11-23 18:05:00 -05:00
Manus Sandbox
1e4543e672 Checkpoint: Correction de l'erreur React #31 dans le modal de détails du calendrier en gérant correctement la conversion des objets Date en string avant affichage 2025-11-23 17:55:36 -05:00
Manus Sandbox
65a2d00358 Checkpoint: Correction de l'erreur d'affichage au clic sur un événement du calendrier (ajout import useState manquant) et correction du menu invisible sur la page Établissements (ajout DashboardLayout wrapper) 2025-11-23 17:48:36 -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
9a38fc9dd3 Checkpoint: Amélioration visuelle de la page des apprenants : l'icône œil (visualisation) s'affiche en bleu, l'icône corbeille en rouge pour mieux signaler l'action destructive. La fonction de chaque apprenant est maintenant colorée (Directeurs en bleu, Chefs de service en vert, Autre en gris) pour faciliter l'identification visuelle rapide et maintenir une cohérence avec le reste de l'interface. 2025-11-23 17:22:05 -05:00
Manus Sandbox
193ffd7ecc Checkpoint: Correction de l'algorithme de génération de couleur pour les formations : utilisation d'un mapping basé sur l'ordre d'apparition des formations plutôt que sur leur ID. Chaque formation reçoit maintenant une couleur unique parmi 10 couleurs disponibles (bleu, violet, rose, indigo, cyan, teal, violet, fuchsia, sky, amber), garantissant une distinction visuelle claire entre toutes les formations dans le tableau des séquences. 2025-11-23 17:17:47 -05:00
Manus Sandbox
d2bb185ea5 Checkpoint: Amélioration visuelle de la fenêtre des séquences : l'icône œil (visualisation) s'affiche maintenant en bleu pour mieux la distinguer. Chaque formation a une couleur unique (bleu, violet, rose, indigo, cyan, etc.) appliquée à son nom dans le tableau, facilitant l'identification visuelle rapide des séquences par formation sans utiliser vert, orange ou rouge déjà réservés aux indicateurs de capacité. 2025-11-23 17:12:59 -05:00
Manus Sandbox
41fc4874fd Checkpoint: Amélioration visuelle de la gestion des séquences : le taux de remplissage (pourcentage) s'affiche maintenant en couleur conditionnelle (vert pour <70%, orange pour 70-90%, rouge pour >90%) pour faciliter l'identification rapide des séquences proches de la capacité maximale. L'icône corbeille de suppression est maintenant affichée en rouge pour mieux signaler l'action destructive. 2025-11-23 17:05:45 -05:00
Manus Sandbox
3ec648f8cf Checkpoint: Ajout du graphique de répartition par établissement sur le tableau de bord principal, affiché côte à côte avec le graphique de répartition par fonction. Le graphique affiche le top 10 des établissements avec le plus d'apprenants inscrits, utilisant des couleurs distinctes pour faciliter la lecture. Les deux graphiques sont maintenant visibles en grille responsive (2 colonnes sur desktop, 1 colonne sur mobile). 2025-11-23 16:48:29 -05:00
Manus Sandbox
a807183e2b Checkpoint: Correction de l'incohérence dans les statistiques de répartition des apprenants par fonction. Le tableau de bord principal et le tableau de bord analytique affichent maintenant les mêmes pourcentages car ils comptent tous les deux le nombre d'apprenants (et non le nombre d'inscriptions). Les deux graphiques sont maintenant cohérents. 2025-11-23 16:42:38 -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
4e825dbf99 Checkpoint: Correction de l'erreur de compatibilité React Quill avec React 19. Remplacement par TipTap (éditeur moderne compatible React 19). Barre d'outils complète (gras, italique, barré, titres H2/H3, listes). 7 boutons de variables dynamiques fonctionnels. Prévisualisation HTML en temps réel. Imports corrigés pour utiliser les exports nommés. 2025-11-23 16:05:38 -05:00
Manus Sandbox
e16bdb22a1 Checkpoint: Ajout d'un éditeur de texte riche (React Quill) pour formater facilement le contenu des emails (gras, italique, listes, couleurs, liens). Ajout de 7 boutons pour insérer rapidement des variables dynamiques : {{nomApprenant}}, {{prenomApprenant}}, {{nomFormation}}, {{nomSequence}}, {{dateDebut}}, {{lieu}}, {{formateur}}. La prévisualisation affiche le contenu HTML formaté en temps réel. 2025-11-23 15:36:56 -05:00
Manus Sandbox
3de0e39350 Checkpoint: Amélioration de la prévisualisation des templates d'emails : la prévisualisation affiche maintenant en temps réel le contenu saisi dans le champ "Corps du message". Lorsque le champ est vide, un message d'aide s'affiche. Le contenu se met à jour automatiquement pendant la saisie, permettant de visualiser exactement l'email final avant de l'enregistrer. 2025-11-23 15:29:04 -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
ccb1484839 Checkpoint: Amélioration de la page de choix de connexion : ajout de la détection automatique de l'état de connexion. Les utilisateurs déjà connectés sont maintenant redirigés automatiquement vers le tableau de bord admin, tandis que les utilisateurs non connectés voient la page de choix entre connexion Manus OAuth et connexion locale. Cela évite d'afficher la page de choix inutilement aux utilisateurs déjà authentifiés. 2025-11-23 06:22:04 -05:00
Manus Sandbox
92d5825ead Checkpoint: Correction de la redirection après déconnexion : l'utilisateur est maintenant redirigé vers la page de choix de connexion (/) après s'être déconnecté, au lieu de rester sur la même page. Cela permet de choisir à nouveau entre connexion Manus OAuth et connexion locale après chaque déconnexion. 2025-11-23 06:16:58 -05:00
Manus Sandbox
83b32f44ab Checkpoint: Ajout d'une page de choix de connexion à la racine (/) permettant de sélectionner entre "Connexion Manus OAuth" et "Connexion locale". La page affiche deux cartes avec icônes distinctes (bouclier bleu pour OAuth, clé verte pour connexion locale) et redirige vers la page appropriée selon le choix de l'utilisateur. Cette page résout le problème de redirection automatique vers OAuth en production en offrant un point d'entrée clair pour les deux modes d'authentification. 2025-11-23 05:45:41 -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
b2e7505afb Checkpoint: Email modifiable pour l'utilisateur administrateur
Modification apportée :
- Le champ email est maintenant modifiable pour l'utilisateur adminServFormation
- Mise à jour du message dans le formulaire d'édition : "Seuls l'email et le mot de passe peuvent être modifiés pour cet utilisateur"
- Les champs nom et identifiant restent en lecture seule (grisés et désactivés)
- Les champs email, mot de passe et rôle sont modifiables pour cet utilisateur spécial
2025-11-21 10:39:00 -05:00
Manus Sandbox
422f5634f9 Checkpoint: Création d'un utilisateur administrateur spécial non supprimable
Modifications apportées :
- Création de l'utilisateur "Administrateur" avec identifiant "adminServFormation" et mot de passe "Itinova69!" (hashé avec bcrypt)
- Modification de l'interface pour désactiver le bouton de suppression pour cet utilisateur (grisé avec tooltip explicatif)
- Modification du formulaire d'édition pour rendre les champs nom, email et identifiant en lecture seule (grisés et désactivés)
- Ajout d'un message explicatif dans le formulaire : "Seul le mot de passe peut être modifié pour cet utilisateur"
- Seuls les champs "Nouveau mot de passe" et "Rôle" restent modifiables pour cet utilisateur
- L'utilisateur est identifié par son username "adminServFormation" pour appliquer les restrictions
- Cet utilisateur ne peut pas être supprimé et ses informations de base ne peuvent pas être modifiées, garantissant un accès administrateur permanent au système
2025-11-21 10:18:49 -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
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
01c23405af Checkpoint: Corrections d'affichage du formateur :
- Correction du placeholder du formateur dans le formulaire de modification de séquence (suppression de "(optionnel)")
- Ajout d'une colonne "Formateur" dans le tableau de la liste des séquences
- Le formateur s'affiche maintenant dans la liste avec "-" si non assigné
- Tests réussis : le placeholder est correct et la colonne formateur est visible
2025-11-19 12:28:18 -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
6264693dff Checkpoint: Trois corrections appliquées
 **1. Champ formateur dans nouvelle séquence**
Ajout du champ formateur avec autocomplétion dans le formulaire de création de séquence, permettant de sélectionner ou ajouter rapidement un formateur.

 **2. Placeholder du formateur**
Le placeholder affiche "Sélectionner un formateur" (déjà correct par défaut dans le composant).

 **3. Nom séquence + formation dans calendrier**
Le calendrier affiche maintenant le nom de la séquence ET le nom de la formation associée pour une meilleure identification visuelle.
2025-11-19 12:03:25 -05:00
Manus Sandbox
1eba34a31f Checkpoint: Trois corrections appliquées
 **1. "Tous" dans le formulaire nouvelle séquence**
Ajout de l'option "Tous" dans la liste des publics cible du formulaire de création de séquence, avec badge violet et labels correspondants.

 **2. Couleurs de la barre de progression**
Correction du composant Progress pour supporter `indicatorClassName`. La barre affiche maintenant les bonnes couleurs selon le taux de remplissage : vert (<70%), orange (70-90%), rouge (>90%).

 **3. Informations complètes dans le calendrier**
Enrichissement des cases du calendrier avec lieu, formateur et nombre d'inscrits pour chaque séquence, permettant une vue d'ensemble plus complète.
2025-11-19 11:54:47 -05:00
Manus Sandbox
a130d464d0 Checkpoint: Correction bug calendrier - Gestion robuste des dates
 **Bug corrigé**

**Erreur "e.split is not a function"** : Ajout d'une vérification du type de `dateDebut` dans AdminCalendrier.tsx avant d'appeler `parseISO`. Le code gère maintenant trois cas :
- Si `dateDebut` est une chaîne : utilisation de `parseISO` pour la convertir en Date
- Si `dateDebut` est déjà un objet Date : utilisation directe
- Sinon : retour false pour ignorer cette date invalide

Le calendrier fonctionne maintenant correctement sans plantage, quel que soit le format des dates retournées par l'API.
2025-11-19 11:41:02 -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