Commit Graph

198 Commits

Author SHA1 Message Date
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
Manus
1460b41f2d Checkpoint: Colorisation des boutons d'actions de la fenêtre "Inscrits à la séquence" avec des couleurs pastel et animations au survol 2026-01-25 08:12:39 -05:00
Manus
9762cac6d3 Checkpoint: Mise à jour du tableau de bord formateur avec le même design moderne que le tableau de bord admin : cartes colorées avec dégradés, animations au survol, et redirection automatique des formateurs 2026-01-25 07:57:25 -05:00
Manus
3c6f3eb741 Checkpoint: Restreindre les droits des formateurs : masquer les boutons de création/modification/suppression des apprenants pour les formateurs (seuls les administrateurs peuvent les voir) 2026-01-23 11:49:46 -05:00
Manus
953677467a Checkpoint: Restreindre les droits des formateurs : masquer les boutons de création/modification/suppression des formations et séquences pour les formateurs (seuls les administrateurs peuvent les voir) 2026-01-23 11:42:31 -05:00
Manus
5d40b5be96 Checkpoint: Ajout validation frontend temps réel + backend pour dates séquences (date fin > date début). Indicateur visuel (bordure rouge + message erreur) dans formulaires création/édition. Validation backend dans procédures create/update. Correction structure table logsrappels. Amélioration système test rappels (badge compteur, désactivation visuelle, boîte dialogue avec email + progression). 2026-01-23 10:09:17 -05:00
Manus
95245b38e8 Checkpoint: Ajout d'une validation backend dans les procédures create et update des séquences pour garantir que la date de fin soit toujours après la date de début pour toutes les dates de formation. Cela empêche la création de fichiers ICS invalides. 2026-01-23 08:57:41 -05:00
Manus
71678af959 Checkpoint: Amélioration visuelle du bouton de test de rappels
- Ajout d'un badge de compteur indiquant le nombre de rappels actifs (ex: "1")
- Désactivation visuelle du bouton pour les séquences sans rappels actifs (icône grisée)
- Tooltip informatif adapté selon le contexte (nombre de rappels ou message d'erreur)
- Amélioration de l'expérience utilisateur avec feedback visuel clair
2026-01-22 10:32:58 -05:00
Manus
a20ad09d7c Checkpoint: Correction de l'erreur "Aucun rappel actif configuré pour cette séquence"
- Retrait de la validation frontend complexe qui ne fonctionnait pas correctement
- Le backend gère maintenant l'erreur et affiche un message clair via toast
- L'utilisateur reçoit un message d'erreur explicite au lieu d'une erreur technique
- Amélioration de l'expérience utilisateur lors du test de rappels
2026-01-22 10:22:31 -05:00
Manus
2a1f739901 Checkpoint: Amélioration de l'indicateur de progression du test de rappels
- Indicateur visuel moderne avec animation (spinner + effet ping)
- Message "Envoi en cours..." pendant le traitement
- Toast final affichant le nombre exact d'emails envoyés
- Approche simple et efficace sans complexité de streaming temps réel
2026-01-22 09:34:32 -05:00
Manus
e3dffb85f4 Checkpoint: Amélioration du test de rappels avec envoi multiple et indicateur de progression
- Modification du backend pour envoyer un email par inscrit confirmé (tous à l'adresse de test)
- Ajout d'un indicateur de progression moderne avec animation (spinner + effet ping)
- Message de succès affichant le nombre d'emails envoyés
- Validation avec séquence "test 3" : 3 emails envoyés correctement (4ème inscrit sans email ignoré)
- Synchronisation complète de la structure de la table logsrappels avec le VPS
2026-01-22 08:50:00 -05:00
Manus
94fed67d19 Checkpoint: Modification de la boîte de dialogue de test de rappels
- Ajout d'un champ de saisie pour l'email du destinataire
- Modification du texte : "Tous les rappels configurés pour cette séquence seront envoyés à l'adresse email que vous indiquez ci-dessous"
- Validation de l'email avant envoi
- Backend modifié pour envoyer à l'email saisi au lieu de tous les inscrits
- Les logs enregistrent correctement l'email de test utilisé
2026-01-22 08:33:07 -05:00
Manus
58cbc2d85c Checkpoint: Ajout d'une boîte de dialogue de confirmation avant l'envoi de test des rappels
 Correction de la structure de la table logsrappels pour correspondre au VPS
- Modification de la colonne statut: ENUM('succes','echec') au lieu de ENUM('success','failed')
- Modification de la colonne typeEnvoi: ENUM('automatique','test')
- Suppression des colonnes en trop (emailDestinataire, typeRappel, dateSequence, createdAt)
 Les logs de rappels s'enregistrent maintenant correctement dans la base de données
2026-01-22 08:16:00 -05:00
Manus
87c53ba75a Checkpoint: Ajout d'un badge orange pâle (bg-orange-50, text-orange-700, border-orange-200) pour la colonne Type dans l'historique des rappels pour améliorer la lisibilité et la cohérence visuelle 2026-01-21 13:25:41 -05:00
Manus
c18425ea42 Checkpoint: Harmonisation des boutons d'action (Prévisualiser, Envoyer, Charger) en bleu, ajout d'un indicateur de progression pour l'upload des PDF, et correction de l'erreur logsRappels (colonne type déjà présente) 2026-01-21 13:14:47 -05:00
Manus
be0b12f6c2 Checkpoint: Modification du bouton "Charger" dans la page de gestion des attestations pour le mettre en bleu vif (bg-blue-600 hover:bg-blue-700) avec texte blanc. Le bouton est maintenant plus visible et attrayant. Déployé sur le serveur de production. 2026-01-21 13:05:08 -05:00
Manus
dc78f234f9 Checkpoint: Ajout de badges colorés orange avec icônes calendrier pour chaque date dans l'affichage des rappels automatiques. Format complet : Badge Formation (bleu) › Badge Séquence (vert) : Badge Date 1 (orange), Badge Date 2 (orange), etc. Affichage très visuel et attrayant. Déployé sur le serveur de production. 2026-01-21 12:59:07 -05:00
Manus
61418f619e Checkpoint: Amélioration visuelle de l'affichage des rappels automatiques : ajout de badges colorés avec icônes (🎓 bleu pour formation, 📅 vert pour séquence) tout en conservant le format compact sur une seule ligne. Format : Badge Formation › Badge Séquence : Date1, Date2. Déployé sur le serveur de production. 2026-01-21 12:54:17 -05:00
Manus
72c7f077ae Checkpoint: Modification de l'affichage de la fenêtre des rappels automatiques : regroupement des informations de formation/séquence/dates sur une seule ligne au lieu de plusieurs badges, et resserrement des colonnes du tableau pour une meilleure lisibilité. Format compact : "Formation › Séquence : Date1, Date2". Déployé sur le serveur de production. 2026-01-21 12:37:01 -05:00
Manus
8722cd57aa Checkpoint: Harmonisation de la charte graphique : remplacement des classes Tailwind arbitraires par la classe CSS .page-title pour les titres des pages AdminNotifications et AdminFormateurs. Déploiement réussi sur le serveur de production avec couleur #60a5fa et drop-shadow. 2026-01-21 11:27:29 -05:00
Manus
0c8c4654ee Checkpoint: Harmonisation des titres de pages avec le style CSS bleu clair et ombre portée :
**Pages modifiées :**

1. **Tableau de bord des Notifications** (`client/src/pages/admin/AdminNotifications.tsx`)
   - Ajout du style `text-[#60a5fa] drop-shadow-md` au titre h1
   - Le titre est maintenant en bleu clair (#60a5fa) avec une ombre portée

2. **Gestion des Formateurs** (`client/src/pages/admin/AdminFormateurs.tsx`)
   - Ajout du style `text-[#60a5fa] drop-shadow-md` au titre h1
   - Le titre est maintenant en bleu clair (#60a5fa) avec une ombre portée

**Résultat :**
 Les titres des deux pages sont maintenant harmonisés avec le reste de l'application
 Le style CSS est cohérent avec les autres pages (Analytics, Rapport Public Cible, etc.)
 L'interface utilisateur est plus moderne et visuellement cohérente
2026-01-20 12:14:13 -05:00
Manus
fc4df8ed36 Checkpoint: Correction des erreurs sur la page rapport-public-cible et harmonisation de la charte graphique des titres :
**Corrections d'erreurs :**

1. **Erreurs SQL DATE_FORMAT corrigées** (analyticsDb.ts) :
   - Remplacement des sous-requêtes corrélées par des JOIN dans getTauxRemplissageByMonth()
   - Utilisation de COUNT(CASE WHEN...) au lieu de SUM(SELECT COUNT(*))
   - Ajout de leftJoin pour éviter les erreurs de sous-requêtes

2. **Erreur React "Cannot read properties of null" corrigée** (AdminRapportPublicCible.tsx) :
   - Ajout de l'opérateur null-safe `?.` pour accéder à `insc.apprenant?.fonction`
   - Vérification explicite si la fonction est null/undefined
   - Gestion du cas "public cible = tous" qui correspond toujours

3. **Tests réussis** :
   - Page rapport-public-cible : affiche correctement les statistiques et recommandations
   - Tableau de bord analytique : graphiques et statistiques fonctionnels
   - Page suivi questionnaires : affiche correctement les données

**Harmonisation charte graphique :**

- Application du style bleu clair (#6B9FE8) avec ombre portée à tous les titres des 32 pages
- Création de la classe CSS `.page-title` réutilisable dans index.css
- Cohérence visuelle sur toute l'application

**Résultat :**
 Toutes les erreurs SQL et React sont corrigées
 Les pages fonctionnent correctement sans erreur
 Charte graphique harmonisée sur toutes les pages
2026-01-20 11:46:56 -05:00
Manus
6bd47f7577 Checkpoint: Menu latéral et tableau de bord harmonisés avec palette pastel + correction bugs "Cannot convert undefined or null to object" sur pages émargement formateur et suivi questionnaires 2026-01-20 08:43:38 -05:00
Manus
a7a5ebdfe8 Checkpoint: Menu latéral moderne avec couleurs pastel (version douce et élégante) + correction du bug 'Cannot convert undefined or null to object' sur la page émargement formateur 2026-01-20 08:31:21 -05:00
Manus
b7b2134289 Checkpoint: Refonte complète de l'ergonomie du tableau de bord avec design moderne, animations et couleurs vives.
**Améliorations visuelles :**

1. **Icônes modernes et colorées** :
   - Icônes plus grandes (6x6) avec fond gradient coloré
   - Effet de rotation au survol des icônes (rotate-12)
   - 4 palettes de couleurs distinctes : bleu (formations), vert (séquences ouvertes), violet (apprenants), orange (séquences terminées)

2. **Liserés et bordures colorés** :
   - Bordure gauche épaisse (4px) sur chaque carte de statistique
   - Bordures colorées (2px) sur les cartes de graphiques
   - Fond légèrement teinté coordonné aux couleurs (bg-blue-50/50, bg-green-50/50, etc.)

3. **Palette de couleurs enrichie** :
   - Titre principal avec gradient bleu-violet (bg-gradient-to-r from-blue-600 to-purple-600)
   - Valeurs des statistiques avec gradients colorés
   - En-têtes de graphiques avec fond gradient subtil (from-blue-50 to-purple-50)

4. **Animations fluides** :
   - Fade-in au chargement de la page (animate-in fade-in duration-500)
   - Slide-in séquentiel des cartes avec délai progressif (100ms entre chaque carte)
   - Effet hover : scale-105 + translate-y-1 + shadow-xl
   - Effet de brillance au survol des cartes (gradient animé)
   - Zoom léger des graphiques au survol (scale-105)
   - Animation des graphiques recharts (800ms)

5. **Détails supplémentaires** :
   - Badge "Données en temps réel" avec icône TrendingUp en haut à droite
   - Indicateur "Actif" avec flèche verte sur chaque carte
   - Ombres portées dynamiques au survol (hover:shadow-xl)
   - Titres avec text-xl et font-bold pour plus d'impact

**Résultat :**
 Interface moderne et dynamique
 Expérience utilisateur améliorée avec animations fluides
 Meilleure hiérarchie visuelle grâce aux couleurs et liserés
 Design professionnel et engageant
 Testé et validé sur la sandbox
2026-01-20 07:01:11 -05:00
Manus
21ed7f7355 Checkpoint: Renommage du bouton "Ajouter un inscrit" et application de l'alternance de couleurs blanc/bleu clair sur tous les tableaux.
**Modifications apportées :**

1. **Renommage du bouton d'ajout d'apprenant** :
   - Bouton renommé de "Ajouter un inscrit" à "Ajouter un apprenant"
   - Titre de la boîte de dialogue mis à jour
   - Description améliorée : "Sélectionnez un apprenant dans la liste ci-dessous pour l'inscrire à cette séquence. La liste affichée correspond à l'ensemble des apprenants enregistrés dans le système."

2. **Alternance de couleurs blanc/bleu clair (bg-blue-50/70)** appliquée sur tous les tableaux :
   - Liste des formations (AdminFormations.tsx)
   - Liste des séquences (AdminSequences.tsx)
   - Liste des apprenants (AdminApprenants.tsx)
   - Liste des inscrits dans la fenêtre de gestion des attestations (AdminGestionAttestations.tsx)
   - Liste des utilisateurs (AdminUsers.tsx)
   - Liste des formateurs (AdminFormateurs.tsx)

**Résultat :**
 Meilleure cohérence terminologique dans l'interface
 Amélioration significative de la lisibilité de tous les tableaux grâce à l'alternance de couleurs
 Expérience utilisateur plus fluide et professionnelle
 Déployé et testé avec succès sur le VPS de production (https://formations.itinova.org)
2026-01-20 05:08:27 -05:00
Manus
dc28caa3fd Checkpoint: Restauration des boutons d'ajout de balises dans la gestion des templates d'emails.
**Problème identifié :**
Les boutons d'ajout de balises (variables dynamiques) avaient été supprimés lors d'une modification précédente du fichier AdminEmailTemplates.tsx.

**Correction apportée :**
- Restauration de 10 boutons de variables dynamiques : {{nom}}, {{prenom}}, {{nomFormation}}, {{nomSequence}}, {{dateDebut}}, {{dateFin}}, {{lieu}}, {{formateur}}, {{datesHTML}}, {{lienReinitialisation}}
- Les boutons sont placés au-dessus de l'éditeur TipTap pour faciliter l'insertion rapide de variables
- Chaque bouton insère la balise correspondante à la position du curseur dans l'éditeur
- Message d'aide mis à jour pour encourager l'utilisation des boutons

**Résultat :**
 Les boutons sont de nouveau visibles et fonctionnels dans l'interface
 Déployé et testé avec succès sur le VPS de production (https://formations.itinova.org)
 L'expérience utilisateur est améliorée pour la création et modification des templates d'emails
2026-01-19 12:15:29 -05:00
Manus
b925117d76 Checkpoint: Correction complète de l'erreur de validation lors de la modification des templates "Rappel 1" et "Rappel 2". Tous les enums ont été mis à jour (rappel → rappel1, rappelJ1 → rappel2) dans AdminEmailTemplates.tsx (types ET liste déroulante templateTypes). Ajout de la fonctionnalité d'ajout manuel d'apprenant dans la fenêtre des inscrits. Amélioration visuelle avec alternance de couleurs bleues sur le tableau des rappels et icônes colorées pour les pièces jointes. 2026-01-19 11:45:41 -05:00
Manus
731a5b4d02 Checkpoint: Ajout manuel d'apprenant : Bouton et dialogue pour inscrire manuellement un apprenant à une séquence.
**Fonctionnalité ajoutée :**
- Bouton "Ajouter un inscrit" avec icône UserPlus dans le header de la liste des inscrits
- Dialogue de sélection avec liste déroulante des apprenants disponibles (filtrés pour exclure ceux déjà inscrits)
- Sélection du statut (Confirmé / Liste d'attente)
- Mutation backend `inscriptions.create` pour l'ajout manuel par l'admin (sans vérifications de blocage/capacité)

**Fichiers modifiés :**
- client/src/pages/AdminSequenceInscrits.tsx : Ajout du bouton et du dialogue
- client/src/components/AddInscritForm.tsx : Nouveau composant de formulaire
- server/routers.ts : Ajout de la mutation inscriptions.create

**Résultat :**
Les administrateurs peuvent maintenant ajouter manuellement des apprenants à une séquence depuis l'interface des inscrits.
2026-01-19 11:04:24 -05:00
Manus
032020eb42 Checkpoint: Amélioration visuelle : Ajout d'une alternance de couleurs blanc/bleu sur le tableau des rappels.
**Modification apportée :**
- Alternance de fond entre lignes paires (blanc) et impaires (bleu clair bg-blue-50/70)
- Bleu légèrement soutenu pour un meilleur contraste visuel que le gris
- Opacité à 70% pour un effet subtil et élégant

**Résultat :**
Tableau plus lisible avec une identité visuelle cohérente (thème bleu), améliore le suivi des lignes et la navigation visuelle.
2026-01-19 09:27:31 -05:00
Manus
b66d6b406f Checkpoint: Amélioration visuelle : Ajout d'une alternance de couleurs (zebra striping) sur le tableau des rappels.
**Modification apportée :**
- Alternance de fond entre lignes paires (blanc) et impaires (gris très clair bg-gray-50/50)
- Améliore la lisibilité et facilite le suivi visuel des lignes
- Effet subtil et élégant grâce à l'opacité réduite

**Résultat :**
Tableau plus lisible et professionnel, conforme aux standards modernes d'interface utilisateur.
2026-01-19 09:24:33 -05:00
Manus
ab19f2f325 Checkpoint: Amélioration complète de l'affichage des pièces jointes dans la gestion des rappels.
**Modifications apportées :**
1. Badge "Non" en rouge (bg-red-50, text-red-700, border-red-200) pour un meilleur contraste visuel avec le vert
2. Tooltip informatif au survol du badge "Oui" affichant le nom du fichier et sa taille en Ko
3. Badge "Oui" cliquable pour télécharger directement la pièce jointe sans ouvrir la fenêtre de modification
4. Effet hover vert clair (hover:bg-green-100) pour indiquer l'interactivité

**Résultat :**
Interface plus intuitive et fonctionnelle avec code couleur cohérent (vert = présent/actif, rouge = absent/inactif) et actions directes pour améliorer l'expérience utilisateur.
2026-01-19 09:13:38 -05:00
Manus
91785b4b4d Checkpoint: Amélioration visuelle : Ajout d'icônes colorées pour l'affichage des pièces jointes dans la configuration des rappels.
**Modification apportée :**
- Remplacement de l'affichage texte simple par des badges avec icônes SVG
- Badge vert avec icône check-circle (✓) pour "Oui" (pièce jointe présente)
- Badge gris avec icône x-circle (✗) pour "Non" (pas de pièce jointe)
- Alignement cohérent avec flex et gap pour une meilleure lisibilité

**Résultat :**
Interface plus moderne et visuelle, conforme aux préférences d'UI avec utilisation accrue de la couleur et des icônes de taille appropriée.
2026-01-19 09:01:14 -05:00
Manus
c0076647d8 Checkpoint: Réorganisation du menu de navigation : création d'une nouvelle section "Gestion technique" et déplacement de "Sécurité SSH (Fail2Ban)" depuis Configuration vers cette nouvelle section. Intégration de la page AdminFail2Ban dans DashboardLayout pour afficher le menu latéral lors de la navigation. Déployé et testé sur le VPS de production. 2026-01-18 13:40:33 -05:00
Manus
4b407b9c83 Checkpoint: Système complet de monitoring Fail2Ban déployé avec succès. Tableau de bord admin affichant en temps réel les IPs bannies, statistiques d'attaques, et historique des bannissements. Fonctionnalité de débannissement manuel d'IPs. Système d'alertes email automatiques configuré : envoie une notification au propriétaire lorsque plus de 10 IPs sont bannies en 1 heure. Vérification toutes les 15 minutes. Déployé et testé sur le VPS de production avec logs confirmant l'initialisation correcte. 2026-01-18 13:26:55 -05:00
Manus
2c0f379c52 Checkpoint: Ajout d'un bouton "Tout renvoyer" dans la page de gestion des attestations pour envoyer en masse toutes les attestations d'une formation. Création de la procédure backend sendAllAttestations qui envoie toutes les attestations disponibles et enregistre chaque envoi dans l'historique. Correction du scheduler de rappels pour vérifier l'heure configurée (intervalle 15 min au lieu de 1h). 2026-01-18 08:39:13 -05:00