Commit Graph

251 Commits

Author SHA1 Message Date
Manus
6952ae6907 Checkpoint: Implémentation complète de la fonctionnalité "Gestion des plans de formations" :
- Schéma DB : 3 nouvelles tables (catalogueFormation, planFormation, planFormationItem)
- Backend tRPC : routers catalogue et planFormation (CRUD, import bulk CSV, suggestions, toggle validée Itinova)
- Frontend : page Plans de formation (liste par établissement/année, CRUD, soumission/validation)
- Frontend : page Détail plan (items, liaison catalogue, suggestions automatiques)
- Frontend : page Catalogue de formation (liste, filtres thème/Itinova/OPCO, import CSV, badges)
- Menu sidebar : nouvelle section "Plans de formations" avec sous-menus
- Tests unitaires : 13 tests (scoring suggestions, validation données, parsing CSV)
2026-05-27 16:39:18 +00:00
Manus
4063e298b9 Checkpoint: V1.26 - Feuille de présence : un PDF par jour (A4 portrait, colonnes sig. matin + après-midi sur même ligne, zone signature formateur). Correction des bugs d'upload attestations et de plantage PDF. 2026-03-02 04:39:32 -05:00
Manus
429d6cf264 Checkpoint: V1.23 - Amélioration boîte de dialogue d'ajout manuel d'apprenant : tri alphabétique (nom puis prénom) et champ de recherche en temps réel sur nom/prénom/email 2026-02-26 12:52:34 -05:00
Manus
35eb0e78f8 Checkpoint: Implémentation du paramètre notificationsActives pour contrôler les notifications d'inscription et d'annulation aux formateurs. Le paramètre permet maintenant de désactiver les notifications formateur tout en gardant les rappels actifs. Déployé sur TEST. 2026-02-26 09:00:42 -05:00
Manus
bf12b9b680 Checkpoint: V1.20 - Amélioration de l'envoi d'attestations par groupe. Le bouton d'envoi par séquence est maintenant toujours visible dès qu'il y a des attestations disponibles, permettant d'envoyer les nouvelles attestations ou de renvoyer celles déjà envoyées. Message de confirmation adapté selon la situation. 2026-02-26 07:53:53 -05:00
Manus
198656947f Checkpoint: V1.19 - Ajout de l'affichage de l'URL complète sous le QR code d'émargement apprenant. L'URL est maintenant visible et cliquable, permettant de tester l'émargement directement depuis un navigateur web sans avoir besoin de scanner le QR code. 2026-02-26 03:30:45 -05:00
Manus
844118251b Checkpoint: V1.18 - Correction définitive et robuste de l'erreur "(void 0) is not a function" lors de la suppression de dates. Utilisation de useCallback pour stabiliser la référence de la fonction removeDate et éviter les problèmes de closure React. Préservation des signatures lors de l'ajout de dates grâce au champ id dans le schéma Zod. 2026-02-11 09:16:33 -05:00
Manus
69fd3f01cc Checkpoint: V1.16 - Correction définitive perte de signatures lors de l'ajout de dates dans une séquence. Le frontend envoie maintenant les IDs des dates existantes pour permettre au backend de les mettre à jour au lieu de les supprimer/recréer. 2026-02-11 08:24:34 -05:00
Manus
6e27e3909e Checkpoint: Correction du bug "inscription requise pour un apprenant" lors de l'émargement formateur
Problème identifié :
- Le paramètre typeUtilisateur: "formateur" n'était pas passé dans l'appel à la mutation validerPresence depuis EmargementFormateurScan.tsx
- Sans ce paramètre, le backend traitait la requête comme un apprenant et déclenchait l'erreur "Inscription requise pour un apprenant"

Correction appliquée :
- Ajout du paramètre typeUtilisateur: "formateur" dans l'appel à validerPresence (ligne 101 de EmargementFormateurScan.tsx)
- Le backend peut maintenant distinguer correctement les formateurs des apprenants

Prochaines étapes :
- Déployer sur les serveurs VPS (recette et production)
- Tester avec l'email marianne.tarrieu@gmail.com sur la séquence 1 du 03/02/26
2026-02-10 10:04:15 -05:00
Manus
62bf5f3a99 Checkpoint: Ajout d'un cadre bleu (border-2 border-blue-500) autour des images de signature des apprenants et formateurs dans la page d'émargement. L'effet hover passe au bleu foncé (border-blue-700) pour une meilleure interactivité visuelle. 2026-02-10 09:54:35 -05:00
Manus
023a047ee0 Checkpoint: Affichage des images de signature (matin et après-midi) directement dans la page d'émargement pour les apprenants et formateurs. Les images s'affichent en miniature (h-8 w-16) à côté des informations de présence et sont cliquables pour agrandissement. 2026-02-10 05:09:37 -05:00
Manus
5d8054b4b8 Checkpoint: Modification du format d'affichage des signatures formateurs
Modifications apportées :
- Format d'affichage identique à celui des apprenants
- Une zone par date avec deux lignes (matin et après-midi)
- Case verte (CheckCircle2) pour indiquer qu'une signature est présente
- Affichage du nom "Formateur", de la date/heure de signature
- Icône de signature cliquable pour voir la signature tactile en grand
- Suppression de l'affichage avec les grandes images de signature
- Ergonomie cohérente avec la section apprenants
- Déployé sur recette (108.143.67.56) et production (98.71.216.234)
2026-02-09 11:43:12 -05:00
Manus
04d8faf919 Checkpoint: Amélioration de l'ergonomie de l'encart des signatures formateurs
Modifications apportées :
- Regroupement des signatures formateurs par date (au lieu d'une signature par ligne)
- Affichage d'une zone par date avec les signatures matin et après-midi à l'intérieur
- Ergonomie identique à celle des apprenants pour une meilleure cohérence visuelle
- Affichage de "Aucune signature" pour les périodes sans signature
- Heure de signature affichée dans un badge pour chaque période
- Design distinct avec bordure bleue pour différencier des signatures apprenants
- Déployé sur recette (108.143.67.56) et production (98.71.216.234)
2026-02-09 11:10:56 -05:00
Manus
37924ad4fd Checkpoint: Ajout d'un encart dédié pour afficher les signatures des formateurs sur la page d'émargement numérique
Modifications apportées :
- Backend : Ajout de la fonction getSignaturesFormateursBySequence dans presenceDb.ts
- Backend : Ajout de la procédure tRPC presences.listSignaturesFormateurs dans routers.ts
- Frontend : Ajout de l'encart visuel des signatures formateurs dans FormateurEmargement.tsx
- L'encart affiche les signatures avec date, période (matin/après-midi), heure et image de signature
- Rafraîchissement automatique toutes les 30 secondes
- Design distinct avec bordure bleue pour différencier des signatures apprenants
- Déployé sur recette (108.143.67.56) et production (98.71.216.234)
2026-02-09 11:04:09 -05:00
Manus
a40e0bf6cd Checkpoint: Checkpoint: Restauration de la procédure sequences.getDatesByFormateurToken et de la fonction getSequenceByFormateurToken dans db.ts. Le système d'émargement formateur fonctionne maintenant correctement avec chargement des dates. Prochaine étape : corriger l'affichage du message "[ERREUR MUTATION]" pour les doublons. 2026-02-06 09:43:43 -05:00
Manus
98c3b21ec1 Checkpoint: Implémentation complète de la fonctionnalité QR code formateur :
- Procédure generateQRCodeFormateur dans routers.ts
- Fonction validerPresenceFormateur dans presenceDb.ts
- Bouton "QR Code Formateur" dans FormateurEmargement.tsx
- Page EmargementFormateurScan.tsx pour le scan du QR code
- Route /emargement-formateur/{token}
- Gestion automatique de la date du jour
- Stockage de la signature sur S3
- Champ qrCodeFormateurToken dans le schéma sequences

Prêt pour déploiement et tests sur le VPS.
2026-02-03 11:04:37 -05:00
Manus
70f9055073 Rollback to eebcb648 2026-02-02 17:32:58 -05:00
Manus
04001e7bcd Checkpoint: Implémentation du QR code dédié pour l'émargement formateur avec signature tactile
- Création de la page /emargement-formateur/:token avec formulaire simplifié
- Procédure backend presences.validerFormateur dédiée
- Deux boutons QR code dans l'interface formateur (apprenants + formateur)
- Génération automatique des URL distinctes pour chaque type d'utilisateur
- Déploiement réussi sur le VPS de production
2026-02-02 15:11:18 -05:00
Manus
f9983adada Checkpoint: Correction du bug d'émargement formateur bloqué sur la saisie d'email
- Ajout de la détection automatique formateur/apprenant dans EmargementScan.tsx
- Nouvelle procédure tRPC getSequenceByToken pour récupérer les infos de séquence
- Interface adaptée selon le type d'utilisateur (apprenant ou formateur)
- Déploiement réussi sur le VPS de production

Le système détecte maintenant automatiquement si l'email correspond à un apprenant ou un formateur, et affiche l'interface appropriée pour chaque cas.
2026-02-02 14:18:46 -05:00
Manus
e8410230a9 Checkpoint: Implémentation de l'émargement formateur par QR code avec signature tactile
Modifications principales :
- Ajout des champs typeUtilisateur et formateurId dans la table presences pour distinguer formateurs et apprenants
- Détection automatique du rôle (formateur/apprenant) via l'email lors du scan du QR code
- Interface de signature tactile réutilisée pour les formateurs
- Intégration des signatures tactiles formateur dans la génération PDF de la feuille de présence
- QR code dans l'espace formateur accessible pour l'émargement
- Tests unitaires validés avec succès

Le système permet maintenant aux formateurs d'émarger (matin et après-midi) via le même QR code que les apprenants, avec détection automatique du rôle et intégration des signatures dans le PDF.
2026-02-02 13:24:08 -05:00
Manus
b74e575d11 Checkpoint: Retrait des compteurs dynamiques de taux de présence et ajout d'une vérification backend empêchant l'émargement avant la date de formation concernée 2026-02-02 10:27:19 -05:00
Manus
68df39a072 Checkpoint: Ajout d'un indicateur visuel de rafraîchissement (badge "Mis à jour il y a X secondes" avec icône animée) et de statistiques en temps réel du taux de présence par période (matin/après-midi) sur la page d'émargement numérique 2026-02-02 10:17:14 -05:00
Manus
0163b46e5d Checkpoint: Ajout d'un rafraîchissement automatique toutes les 30 secondes sur la page d'émargement numérique pour mettre à jour automatiquement la liste des inscrits et des présences sans recharger manuellement la page 2026-02-02 10:09:48 -05:00
Manus
fec271c19a Checkpoint: Réorganisation complète de la modal des rappels : largeur optimisée (50vw), labels et champs sur une seule ligne horizontale pour Configuration générale et Timing d'envoi, pièces jointes compactes avec icône et textes alignés, 4 zones colorées distinctes, espacement optimisé pour écran 24 pouces 2026-02-02 08:00:46 -05:00
Manus
014c2cd68b Checkpoint: Unification de l'ergonomie de chargement de fichiers dans toute l'application : le composant FileUpload utilise maintenant la même interface élégante que la boîte de dialogue d'attestations. Affichage immédiat du nom de fichier, animation de chargement avec barre de progression, feedback visuel cohérent (gris → bleu → vert). Cette amélioration s'applique automatiquement à toutes les pièces jointes des rappels (2 par rappel). Déployé sur le VPS de production. 2026-02-02 06:13:58 -05:00
Manus
a77123e07f Checkpoint: Solution finale pour le feedback instantané lors de l'upload d'attestations : affichage immédiat du nom du fichier sélectionné dans la boîte de dialogue dès la sélection. Le nom reste visible pendant toute la durée de l'upload avec la barre de progression. Cette approche simple et fiable résout définitivement le problème de latence en donnant un feedback visuel instantané à l'utilisateur. Déployé sur le VPS de production. 2026-01-30 09:54:14 -05:00
Manus
e68949baeb Checkpoint: Résolution du problème de latence d'affichage avec double requestAnimationFrame : cette technique garantit que le navigateur peint l'animation à l'écran avant de bloquer sur le fetch. Le premier requestAnimationFrame permet à React de mettre à jour l'état, le second force le navigateur à afficher visuellement l'animation avant de démarrer l'upload. Déployé sur le VPS de production. 2026-01-30 09:37:18 -05:00
Manus
1bbbe842b5 Checkpoint: Résolution définitive de la latence d'affichage du message d'upload : utilisation de flushSync() de React DOM pour forcer un rendu synchrone et immédiat de l'interface avant le traitement du fichier. L'animation "Upload en cours..." s'affiche maintenant instantanément dès la sélection du fichier, sans aucune latence. Déployé sur le VPS de production. 2026-01-30 09:09:14 -05:00
Manus
f9401dcb72 Checkpoint: Correction définitive de la latence d'affichage du message d'upload : ajout d'un délai de 50ms après setUploading(true) pour permettre à React de rafraîchir l'interface avant de démarrer le traitement du fichier. L'animation "Upload en cours..." s'affiche maintenant instantanément dès la sélection du fichier. Déployé sur le VPS de production. 2026-01-30 08:57:56 -05:00
Manus
41af13c47e Checkpoint: Amélioration du feedback visuel pendant le chargement du fichier d'attestation : l'indicateur de progression s'affiche maintenant immédiatement dès la sélection du fichier, sans délai d'attente. Déployé sur le VPS de production. 2026-01-30 08:50:31 -05:00
Manus
c102572403 Checkpoint: Corrections multiples sur les attestations : bug de modal bloquée corrigé, remplacement des variables dans l'email d'attestation fonctionnel, et type attestation ajouté au schéma de validation 2026-01-30 08:46:39 -05:00
Manus
7032fd890f Checkpoint: Interface modernisée de chargement d'attestations avec design coloré (dégradés bleu-violet), icônes grandes et expressives, zone de drop stylisée, et meilleure hiérarchie visuelle. Déployé sur le VPS de production. 2026-01-30 08:04:36 -05:00
Manus
53609e901e Checkpoint: Ajout d'une colonne 'Mode d'envoi' dans l'historique des attestations pour distinguer les envois manuels des envois automatiques. Modifications: ajout du champ modeEnvoi dans la table historiqueAttestations, mise à jour du scheduler d'attestations, et ajout de la colonne dans l'interface utilisateur. Déployé sur le VPS de production. 2026-01-30 06:01:30 -05:00
Manus
26a16327cf Checkpoint: Correction et finalisation du template email attestation : ajout du type 'attestation' dans le frontend, création automatique du template au démarrage de l'application, déploiement réussi sur le VPS. Le template est maintenant visible et modifiable dans l'interface de gestion des templates. 2026-01-30 04:04:16 -05:00
Manus
a221deb4f1 Checkpoint: Correction des permissions : les super formateurs n'ont plus accès à la section Configuration, uniquement à Gestion, Traçabilité et Analyses. 2026-01-29 11:41:13 -05:00
Manus
c16392900c Checkpoint: Ajout du rôle super_formateur avec accès à toutes les formations et séquences. Migration SQL appliquée en local et sur le VPS de production. 2026-01-29 11:35:35 -05:00
Manus
f0f3d83fae Checkpoint: Correction de l'affichage des labels des pièces jointes qui apparaissaient en double. Ajout d'un prop label au composant FileUpload pour personnaliser le texte. Déployé sur le VPS. 2026-01-28 12:21:05 -05:00
Manus
86d3d437bd Checkpoint: Évolution du système de rappels pour permettre jusqu'à 2 pièces jointes au lieu d'une seule. Migration SQL appliquée en local et sur le VPS de production. Les rappels existants sont préservés. 2026-01-28 10:13:32 -05:00
Manus
5821f82eb2 Rollback to feb708bb 2026-01-27 08:14:31 -05:00
Manus
abca9956ff Checkpoint: Correction de l'affichage des signatures dans l'émargement :
- Format modifié : "Prénom Nom a validé(e) le date et heure"
- Icône de signature agrandie (h-5 w-5) et plus visible avec hover bleu
- Ajout d'un title "Voir la signature" sur l'icône
- Espacement amélioré (ml-3)
2026-01-27 07:44:50 -05:00
Manus
feb708bb3e Checkpoint: Affichage des informations de signature dans la fenêtre d'émargement numérique :
- Ajout des champs signatureUrl, signatureS3Key et dateSigned dans getPresencesByInscription
- Affichage du nom du signataire, date/heure de validation à côté de chaque puce matin/après-midi
- Icône cliquable pour visualiser la signature en grand format
- Modale Dialog pour afficher la signature manuscrite
- Fonction getPresenceInfo pour récupérer les détails de présence
- Interface moderne avec icône de stylo SVG pour les signatures
2026-01-27 07:38:59 -05:00
Manus
1e915acd5b Checkpoint: Implémentation de la signature manuscrite tactile pour l'émargement via QR code :
- Intégration du composant SignaturePad dans EmargementScan.tsx
- Ajout des champs de signature dans la table presences (signatureUrl, signatureS3Key, dateSigned)
- Modification de la procédure presences.valider pour accepter et uploader la signature en S3
- Stockage automatique de l'URL et de la clé S3 dans la base de données
- Correction des types nullables dans exportService.ts (codeEtablissement, fonction)
- Les apprenants doivent maintenant signer avec le doigt sur l'écran avant de valider leur présence
2026-01-27 04:29:01 -05:00
Manus
b3b808145c Checkpoint: Ajout d'une confirmation visuelle améliorée après émargement réussi : animations fluides, heure d'enregistrement précise et design moderne 2026-01-25 15:20:13 -05:00
Manus
2ebc3dfa99 Checkpoint: Améliorations de la page de gestion des attestations :
- Affichage de la date de début dans l'en-tête de chaque séquence
- Tri chronologique des séquences par date de début
- Filtre fonctionnel : Toutes les séquences / Séquences terminées / Séquences à venir
- Badge de statut visuel (Terminée en vert, À venir en orange)
- Compteur d'envois par séquence
- Bouton "Tout renvoyer" pour envoi groupé par séquence
- Correction robuste de l'affichage des apprenants
2026-01-25 11:29:16 -05:00
Manus
8efcb65f0f Rollback to 8e20ac40 2026-01-25 11:19:22 -05:00
Manus
b32487aa4d Checkpoint: Améliorations de la gestion des attestations :
- Affichage de la date de début dans l'en-tête de chaque séquence
- Bouton d'envoi groupé par séquence
- Filtre séquences terminées/à venir
2026-01-25 09:16:22 -05:00
Manus
f51e027a5c Checkpoint: Correction de l'affichage vide des apprenants dans la gestion des attestations après le regroupement par séquence. Le problème venait de la référence à un champ premiereDate inexistant. Solution: utiliser l'ID de séquence pour le tri et le regroupement. 2026-01-25 09:03:13 -05:00
Manus
77a65cbfa2 Checkpoint: Ajout du tri chronologique des séquences dans la gestion des attestations:
- Modification du backend pour inclure la première date de chaque séquence
- Tri des séquences par ordre chronologique (première date en premier)
- Les séquences sont maintenant affichées dans l'ordre temporel pour une meilleure organisation
2026-01-25 08:56:53 -05:00
Manus
63e8ea17d1 Checkpoint: Modification de l'affichage de la gestion des attestations pour regrouper les apprenants par séquence:
- Ajout d'en-têtes visuels pour chaque séquence avec nom et compteur d'apprenants
- Badge affichant le nombre d'attestations envoyées par séquence
- Amélioration de l'organisation et de la lisibilité pour les formateurs
- Suppression de la colonne "Séquence" devenue redondante
2026-01-25 08:50:50 -05:00
Manus
3e14adcf70 Checkpoint: Implémentation de l'émargement numérique avec deux signatures par jour (matin et après-midi):
- Ajout du champ 'periode' dans la table presences
- Modification des procédures backend pour gérer les deux périodes
- Mise à jour de l'interface EmargementScan avec choix de période
- Mise à jour de l'interface FormateurEmargement avec validation séparée matin/après-midi
- La feuille de présence PDF était déjà configurée avec deux colonnes
2026-01-25 08:26:42 -05:00