Commit Graph

143 Commits

Author SHA1 Message Date
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
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
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
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
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
a1d67c7451 Checkpoint: Implémentation authentification hybride (cookies + Authorization header) - Résolution du problème de connexion dans l'environnement de preview Manus 2025-11-19 06:40:14 -05:00
Manus Sandbox
cc0bd97248 Checkpoint: Migration complète vers l'authentification locale avec email/mot de passe
 Modifications apportées :
- Remplacement de l'authentification OAuth Manus par un système local
- Ajout des champs email, password, emailVerified dans la table users
- Implémentation du hashage des mots de passe avec bcrypt
- Création des procédures auth.login et auth.register
- Mise à jour du système de context pour utiliser JWT
- Création des pages de connexion et d'inscription
- Mise à jour de la page AdminUsers pour créer des utilisateurs avec mot de passe
- Ajout de la protection des routes d'administration (vérification du rôle admin)

 Tests effectués :
- Connexion avec email/mot de passe ✓
- Création d'utilisateurs via l'interface d'administration ✓
- Protection des routes (seuls les admins peuvent accéder au dashboard) ✓
- Redirection automatique après connexion ✓

Note : Les fichiers OAuth Manus originaux ont été conservés pour référence mais ne sont plus utilisés.
2025-11-19 05:35:17 -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
3f16cd8a48 Checkpoint: Ajout du champ "Public cible" dans tous les exports (Excel, PDF liste d'inscrits, PDF feuille de présence) pour une meilleure traçabilité des séquences 2025-11-17 06:06:23 -05:00
Manus Sandbox
732b84fee8 Checkpoint: Correction : déplacement du champ "Public cible" des formations vers les séquences. Le public cible est maintenant défini au niveau de chaque séquence, permettant d'avoir des séquences différentes pour des publics différents au sein d'une même formation. Mise à jour complète du schéma de base de données, des procédures tRPC, du formulaire de création/édition de séquences avec affichage dans le tableau, et affichage du public cible pour chaque séquence sur la page d'inscription publique. 2025-11-13 11:18:02 -05:00
Manus Sandbox
5f4a049e05 Checkpoint: Ajout du champ "Public cible" dans la fiche formation avec liste déroulante identique à celle de "Fonction" des apprenants (Directeur, Chef de service, Autre). Mise à jour du schéma de base de données, des procédures tRPC, du formulaire de gestion des formations avec affichage dans le tableau, et affichage du public cible sur la page d'inscription publique. 2025-11-13 10:35:54 -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
7e0e9d0586 Checkpoint: Correction définitive du décalage horaire : parseLocalDateTime retourne maintenant directement une chaîne au format MySQL "YYYY-MM-DD HH:mm:ss" au lieu d'un objet Date JavaScript. Cela évite toute conversion UTC automatique lors de l'insertion en base de données. L'heure saisie (par exemple 09:48) est maintenant stockée et affichée exactement telle quelle sans décalage. 2025-11-13 10:17:35 -05:00
Manus Sandbox
f266e8dde8 Checkpoint: Amélioration de la gestion d'erreurs pour la modification des séquences : ajout de validation dans parseLocalDateTime, protection contre les valeurs nulles dans handleEdit avec fonction safeFormatDate, remplacement de invalidate() par refetch() pour forcer le rafraîchissement immédiat, et ajout de logs détaillés côté serveur pour faciliter le débogage. 2025-11-12 12:01:14 -05:00
Manus Sandbox
7135a9d2c6 Checkpoint: Correction du décalage d'une heure entre la saisie et l'affichage des dates de séquences. Création d'un module dateUtils.ts avec des fonctions parseLocalDateTime et formatToLocalDateTime pour gérer correctement les conversions entre heure locale et UTC. Toutes les procédures de création et mise à jour de séquences utilisent maintenant ces fonctions pour préserver l'heure locale saisie par l'utilisateur. 2025-11-12 11:35:01 -05:00
Manus Sandbox
d198d4ce3f Checkpoint: Correction du calcul du nombre d'inscrits sur la page d'inscription publique - le frontend utilisait uniquement capaciteMax au lieu de calculer capaciteMax - nbInscrits. Ajout de logs de débogage côté client et serveur pour investiguer le problème de modification des heures des séquences qui persiste malgré les corrections précédentes. 2025-11-12 10:44:41 -05:00
Manus Sandbox
12bfc657e5 Checkpoint: Correction du bug de modification des horaires des séquences. Le problème venait du fait que les champs de la procédure update étaient marqués comme optionnels, ce qui empêchait la mise à jour correcte des dates. Tous les champs sont maintenant obligatoires et les dates sont systématiquement supprimées puis recréées lors de la modification pour garantir la cohérence des données. 2025-11-12 10:25:13 -05:00
Manus Sandbox
5c9b6637c4 Checkpoint: Refonte majeure : transformation du système de sessions en séquences avec support de jusqu'à 4 dates par séquence. L'inscription à une séquence inscrit automatiquement l'apprenant à toutes les dates. Mise à jour complète du backend (schéma DB, procédures tRPC, emails, exports) et du frontend (AdminSequences, AdminSequenceInscrits, Inscription, Admin). Toutes les fonctionnalités existantes (filtres, statistiques, exports PDF/Excel, emails automatiques) sont préservées et adaptées au nouveau modèle. 2025-11-12 09:57:58 -05:00
Manus Sandbox
ca9b1c3d37 Checkpoint: Implémentation des trois améliorations demandées : ajout de filtres par fonction sur les pages apprenants et inscrits, création d'un graphique circulaire de répartition par fonction sur le tableau de bord avec recharts, et personnalisation des templates d'emails (confirmation, teaser, rappel J-7) incluant la fonction de l'apprenant dans la salutation. 2025-11-12 09:35:58 -05:00
Manus Sandbox
9d591b64ba Checkpoint: Ajout du champ "Fonction" (Directeur, Chef de service, Autre) dans la fiche apprenant : mise à jour du schéma de base de données, ajout dans les formulaires d'inscription et de gestion des apprenants, affichage dans le tableau des apprenants, et intégration dans tous les exports (Excel, PDF, feuille de présence). 2025-11-12 09:30:30 -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