Commit Graph

218 Commits

Author SHA1 Message Date
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
c0446e5ba8 Checkpoint: Correction du bug "drizzle-kit: not found" lors de la mise à jour :
**Problème identifié** :
Le script `update-app.sh` utilisait `pnpm install --prod` qui n'installe que les dépendances de production, excluant les devDependencies comme `drizzle-kit` nécessaire pour les migrations.

**Solution appliquée** :
1. **update-app.sh** : Changé `pnpm install --prod` en `pnpm install` pour installer toutes les dépendances (production + développement)
2. **GUIDE_MISE_A_JOUR.md** : Mise à jour de la documentation pour refléter ce changement

**Justification** :
`drizzle-kit` est nécessaire pour exécuter `pnpm db:push` qui applique les migrations de base de données. Sans les devDependencies, la commande échoue.

**Nouveau package créé** :
- formation-manager-update-20251127_114306.tar.gz (2.6M)
- Prêt pour déploiement avec la correction
2025-11-27 11:44:55 -05:00
Manus Sandbox
21439c7af1 Checkpoint: Correction des scripts de déploiement pour utiliser le bon nom de répertoire :
**Modifications apportées** :

1. **backup-before-update.sh** :
   - APP_DIR: /var/www/formation-manager-itinova
   - BACKUP_DIR: /var/backups/formation-manager-itinova

2. **update-app.sh** :
   - APP_DIR: /var/www/formation-manager-itinova
   - SERVICE_NAME: formation-manager-itinova

3. **GUIDE_MISE_A_JOUR.md** :
   - Tous les chemins mis à jour vers formation-manager-itinova
   - Tous les noms de service corrigés

4. **README.md** :
   - Documentation mise à jour avec les bons chemins
   - Exemples corrigés

5. **Nouveau package créé** :
   - formation-manager-update-20251127_095935.tar.gz (2.6M)
   - Prêt pour déploiement sur le serveur VPS
2025-11-27 10:01:47 -05:00
Manus Sandbox
2ae8592480 Checkpoint: Ajout des scripts de mise à jour pour le serveur VPS :
1. **backup-before-update.sh** : Script de sauvegarde automatique
   - Sauvegarde complète des fichiers de l'application
   - Export de la base de données MySQL
   - Sauvegarde du fichier .env
   - Conservation des 10 dernières sauvegardes

2. **update-app.sh** : Script de mise à jour automatique
   - Création d'une sauvegarde de sécurité
   - Arrêt/redémarrage du service
   - Copie des nouveaux fichiers
   - Installation des dépendances
   - Application des migrations de base de données
   - Vérification du bon fonctionnement

3. **create-deployment-package.sh** : Script de création de package
   - Crée une archive .tar.gz prête à transférer
   - Inclut tous les fichiers nécessaires
   - Exclut node_modules, .git, .env

4. **Documentation complète** :
   - GUIDE_MISE_A_JOUR.md : Guide détaillé avec procédures de mise à jour et rollback
   - README.md : Documentation des scripts avec exemples d'utilisation

5. **Package de déploiement créé** :
   - formation-manager-update-20251127_074417.tar.gz (2.6M)
   - Prêt à être transféré sur le serveur VPS
2025-11-27 07:46:29 -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
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
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
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
59edce13d7 Checkpoint: Ajout du guide complet de configuration HTTPS avec Let's Encrypt, script d'installation automatique et template nginx optimisé 2025-11-23 12:40:25 -05:00
Manus Sandbox
f9d1f21011 Checkpoint: Version finale avec authentification locale corrigée : utilisation de sdk.createSessionToken() et configuration SameSite=Lax pour compatibilité HTTP 2025-11-23 10:10:13 -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
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
614680ac95 Checkpoint: Checkpoint final incluant la page de connexion locale à /login avec formulaire username/password. La page fonctionne correctement en développement. Après publication, la route /login sera accessible sur le domaine public. Identifiants de test : adminServFormation / Itinova69! 2025-11-23 05:36:40 -05:00
Manus Sandbox
aa6d5c940d Checkpoint: Vérification et confirmation que la page d'accueil (Home.tsx) contient bien deux boutons de connexion pour les utilisateurs non authentifiés : "Connexion locale" (vers /login) et "Connexion OAuth" (vers OAuth Manus). Les boutons sont visibles dans le header de la page d'accueil pour les utilisateurs non connectés. Pour accéder directement à la page de connexion locale, utiliser l'URL /login. 2025-11-23 05:11:39 -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
fad88c5257 Checkpoint: Correction majeure du problème de création excessive d'utilisateurs
Problème identifié :
- La contrainte UNIQUE sur la colonne openId n'existait pas dans la base de données
- Tous les utilisateurs partageaient le même openId
- Chaque connexion créait un nouvel utilisateur au lieu de mettre à jour l'existant
- 344 utilisateurs en double ont été créés

Solution appliquée :
- Nettoyé 343 utilisateurs en double (gardé le plus récent pour chaque openId)
- Ajouté la contrainte UNIQUE sur la colonne openId via ALTER TABLE
- Maintenant onDuplicateKeyUpdate fonctionne correctement

Résultat :
- Plus aucun utilisateur en double ne sera créé
- À chaque connexion, l'utilisateur existant est mis à jour
- Table users propre avec seulement les utilisateurs uniques
2025-11-21 09:53:16 -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