diff --git a/CESIZen_Soutenance.pptx b/CESIZen_Soutenance.pptx index 6c5de94..22dbbd7 100644 Binary files a/CESIZen_Soutenance.pptx and b/CESIZen_Soutenance.pptx differ diff --git a/CLAUDE.md b/CLAUDE.md index c936d55..6939626 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -48,7 +48,7 @@ Cesizen/ | Configurer les émotions (2 niveaux) | Admin | ✅ | N/A | ### Hiérarchie des émotions (seed) -7 émotions de base (niveau 1) avec 28 sous-émotions (niveau 2) : +7 émotions de base (niveau 1) avec 33 sous-émotions (niveau 2) : Joie, Tristesse, Colère, Peur, Dégoût, Surprise, Amour. ## Grille de priorisation des besoins diff --git a/Plan_Oral_CESIZen.md b/Plan_Oral_CESIZen.md index 54fddc6..2630671 100644 --- a/Plan_Oral_CESIZen.md +++ b/Plan_Oral_CESIZen.md @@ -16,7 +16,7 @@ | **0:00 – 2:00** (2′) | 1 — 2 | **Introduction** | Se présenter. Annoncer le commanditaire (Ministère) et l'objet : une plateforme grand public de santé mentale. Donner le fil rouge : « je vais dérouler le recueil du besoin, la priorisation, la réponse fonctionnelle, puis la modélisation technique et la conformité RGPD. » Présenter le sommaire (slide 2). | | **2:00 – 5:00** (3′) | 3 — 4 | **Contexte, enjeux, parties prenantes** | Rappeler l'enjeu sociétal (22 % des Français, SPF 2023) et la stigmatisation. Énoncer les 4 objectifs stratégiques. Présenter les parties prenantes et les 3 acteurs (Visiteur, Utilisateur, Administrateur). Insister : « le besoin a été **reformulé**, pas recopié. » | | **5:00 – 7:00** (2′) | 5 — 6 | **Besoins & priorisation** | Périmètre : 2 modules obligatoires + Tracker au choix ; modules écartés assumés. Présenter la grille pondérée /15 (5 critères). Conclusion argumentée : « le Tracker cumule 4 fonctionnalités à 9-10/15, c'est le module au choix le plus rentable. » | -| **7:00 – 12:00** (5′) | 7 — 8 — 9 | **Réponse fonctionnelle** | Module Comptes : JWT, RGPD, admin (slide 7 + maquette). Module Informations : feeds, modération, slug auto (slide 8). Module Tracker : wizard 3 étapes, journal, rapports 4 périodes, 7+28 émotions (slide 9 + maquettes). Montrer que chaque écran répond à un besoin précis. | +| **7:00 – 12:00** (5′) | 7 — 8 — 9 | **Réponse fonctionnelle** | Module Comptes : JWT, RGPD, admin (slide 7 + maquette). Module Informations : feeds, modération, slug auto (slide 8). Module Tracker : wizard 3 étapes, journal, rapports 4 périodes, 7+33 émotions (slide 9 + maquettes). Montrer que chaque écran répond à un besoin précis. | | **12:00 – 16:00** (4′) | 10 — 11 — 12 | **Modélisation** | Cas d'usage UML (slide 10) : couverture par acteur. MCD Merise (slide 11) : 8 entités, cardinalités, hiérarchie d'émotions auto-référencée. Architecture MVC découplée (slide 12) : 1 API REST Laravel → 2 clients ; justifier le pattern (testabilité, évolutivité, non-duplication). | | **16:00 – 17:30** (1′30) | 13 | **RGPD & données sensibles** | Données de santé = sensibles (art. 9). Consentement, droits CNIL (export/anonymisation), soft delete. Sécurité : chiffrement AES-256/TLS, JWT, HDS, table audits. | | **17:30 – 19:00** (1′30) | 14 | **Prototype & perspectives** | Prototype fonctionnel (Laravel + Next.js + Expo + Docker). Ouverture : activer les modules écartés sans réécrire le modèle, Open Data, Mon Espace Santé (FHIR), i18n. | @@ -49,7 +49,7 @@ > Le besoin est un journal personnel unique ; le tracker est créé automatiquement à l'inscription. Le modèle reste extensible (passer en 1-N) si un jour on veut plusieurs journaux thématiques. **Q7. Comment gérez-vous la hiérarchie d'émotions à 2 niveaux ?** -> Une seule table `emotions` avec auto-référence `parent_id` : niveau 1 = parent_id NULL, niveau 2 = parent_id renseigné. 7 émotions de base + 28 sous-émotions. L'admin la configure via le CRUD émotions. +> Une seule table `emotions` avec auto-référence `parent_id` : niveau 1 = parent_id NULL, niveau 2 = parent_id renseigné. 7 émotions de base + 33 sous-émotions. L'admin la configure via le CRUD émotions. ### Données & sécurité (RGPD) **Q8. Les données émotionnelles sont sensibles — comment êtes-vous conforme ?** diff --git a/frontend/src/components/features/EditSaisieModal.tsx b/frontend/src/components/features/EditSaisieModal.tsx index 33c7e99..78251f3 100644 --- a/frontend/src/components/features/EditSaisieModal.tsx +++ b/frontend/src/components/features/EditSaisieModal.tsx @@ -24,6 +24,8 @@ export default function EditSaisieModal({ saisie, isOpen, onClose }: EditSaisieM // Synchronise le formulaire quand une nouvelle saisie est passée : ajustement // d'état pendant le rendu (pattern recommandé par React, sans effet). + // À la fermeture (saisie = null) on réinitialise prevSaisieId pour que la + // réouverture de la MÊME saisie réaffiche bien ses valeurs d'origine. const [prevSaisieId, setPrevSaisieId] = useState(null); if (saisie && saisie.id !== prevSaisieId) { setPrevSaisieId(saisie.id); @@ -31,6 +33,8 @@ export default function EditSaisieModal({ saisie, isOpen, onClose }: EditSaisieM setIntensite(saisie.intensite); setNote(saisie.note || ''); setDateSaisie(saisie.date_saisie.split('T')[0]); + } else if (!saisie && prevSaisieId !== null) { + setPrevSaisieId(null); } const handleSubmit = async () => { diff --git a/generate_cahier_charges.py b/generate_cahier_charges.py index 24419cc..0331a8a 100644 --- a/generate_cahier_charges.py +++ b/generate_cahier_charges.py @@ -585,7 +585,7 @@ pdf.h2("5.3 Module 'Tracker d'émotions' (au choix)") pdf.paragraph( "Le module Tracker permet à l'utilisateur d'enregistrer son état émotionnel via un wizard en 3 étapes, " "de consulter son journal, et de visualiser des rapports analytiques sur 4 périodes (semaine, mois, trimestre, année). " - "Les émotions sont structurées en 2 niveaux (7 émotions de base + 28 sous-émotions précises)." + "Les émotions sont structurées en 2 niveaux (7 émotions de base + 33 sous-émotions précises)." ) pdf.h3("Wizard d'ajout de saisie (3 étapes)") pdf.block_callout( diff --git a/generate_slides.py b/generate_slides.py index 9d95bfb..34f5aaf 100644 --- a/generate_slides.py +++ b/generate_slides.py @@ -229,7 +229,7 @@ cols = [ ]), ("1 module AU CHOIX (retenu)", BLUE, [ "Tracker d'émotions : journal, saisies, rapports périodiques.", - "Hiérarchie : 7 émotions de base + 28 sous-émotions.", + "Hiérarchie : 7 émotions de base + 33 sous-émotions.", ]), ("Modules ÉCARTÉS", GREY, [ "Diagnostic de stress.", @@ -326,7 +326,7 @@ bullets(s, [ "Journal de bord : consultation, modification, suppression des saisies.", "Rapports analytiques sur 4 périodes : semaine, mois, trimestre, année.", "Statistiques : intensité moyenne, émotion dominante, répartition, évolution.", - "Hiérarchie configurable par l'admin : 7 émotions + 28 sous-émotions.", + "Hiérarchie configurable par l'admin : 7 émotions + 33 sous-émotions.", "Web (graphiques Recharts) et mobile (Expo) synchronisés via l'API.", ], Inches(0.7), Inches(1.45), Inches(7.0), Inches(5.3), size=16, gap=10) image_fit(s, "mockup_wizard.png", Inches(7.9), Inches(1.35), Inches(2.5), Inches(5.3))