From 19dbe9cccc40a0454ff662face015395a54005e1 Mon Sep 17 00:00:00 2001 From: Manus Sandbox Date: Mon, 17 Nov 2025 04:52:17 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Ajout=20d'une=20alerte=20d'inform?= =?UTF-8?q?ation=20non=20bloquante=20qui=20s'affiche=20lorsqu'un=20apprena?= =?UTF-8?q?nt=20s'inscrit=20=C3=A0=20une=20s=C3=A9quence=20dont=20le=20pub?= =?UTF-8?q?lic=20cible=20ne=20correspond=20pas=20=C3=A0=20sa=20fonction.?= =?UTF-8?q?=20L'alerte=20persiste=208=20secondes=20avec=20un=20d=C3=A9lai?= =?UTF-8?q?=20de=202=20secondes=20avant=20la=20soumission=20pour=20laisser?= =?UTF-8?q?=20le=20temps=20de=20lecture.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/pages/Inscription.tsx | 25 +++++++++++++++++++++++++ todo.md | 7 +++++++ 2 files changed, 32 insertions(+) diff --git a/client/src/pages/Inscription.tsx b/client/src/pages/Inscription.tsx index 1bd2b3b..8a4c033 100644 --- a/client/src/pages/Inscription.tsx +++ b/client/src/pages/Inscription.tsx @@ -62,6 +62,31 @@ export default function Inscription() { return; } + // Vérifier si le public cible correspond à la fonction de l'apprenant + const selectedSequence = sequences?.find(s => s.id === selectedSequenceId); + if (selectedSequence && selectedSequence.publicCible) { + const publicCibleMap: Record = { + "directeur": "directeur", + "chef_service": "chef_service", + "autre": "autre" + }; + + if (publicCibleMap[selectedSequence.publicCible] !== formData.fonction) { + const publicCibleLabel = selectedSequence.publicCible === "directeur" ? "Directeurs" : + selectedSequence.publicCible === "chef_service" ? "Chefs de service" : "Autre"; + const fonctionLabel = formData.fonction === "directeur" ? "Directeur" : + formData.fonction === "chef_service" ? "Chef de service" : "Autre"; + + toast.info( + `Information : Cette séquence est destinée aux ${publicCibleLabel}, mais vous êtes inscrit(e) en tant que ${fonctionLabel}. Vous pouvez tout de même vous inscrire.`, + { duration: 8000 } + ); + + // Attendre 2 secondes pour que l'utilisateur puisse lire l'alerte + await new Promise(resolve => setTimeout(resolve, 2000)); + } + } + try { // Vérifier si l'apprenant existe déjà const existingApprenant = await utils.client.apprenants.getByEmail.query({ email: formData.email }); diff --git a/todo.md b/todo.md index dc3ee3c..0fcc5c7 100644 --- a/todo.md +++ b/todo.md @@ -137,3 +137,10 @@ - [x] La validation d'une inscription ne fonctionne pas (déjà corrigé dans la version restaurée) - [x] Lorsqu'un apprenant s'inscrit, il n'apparaît pas dans la liste des apprenants (déjà corrigé dans la version restaurée) + +## Nouvelle fonctionnalité - Alerte public cible + +- [x] Analyser le code d'inscription pour identifier où ajouter l'alerte +- [x] Implémenter la logique de vérification du public cible dans le formulaire d'inscription +- [x] Afficher une alerte d'information (non bloquante) si le public cible ne correspond pas +- [x] Tester l'alerte avec différents scénarios (correspondance, non-correspondance)