fix: corrige la régression EditSaisieModal et le nombre réel de sous-émotions

Suite à la revue par agents :
- EditSaisieModal : réinitialise prevSaisieId à la fermeture (saisie=null) pour
  que la réouverture de la MÊME saisie réaffiche ses valeurs d'origine
  (régression introduite par le passage de useEffect à l'ajustement d'état)
- corrige le nombre de sous-émotions 28 -> 33 (compte réel du seeder :
  6+5+5+5+4+4+4) dans le dossier, les slides, le plan d'oral et CLAUDE.md
- régénère le cahier des charges (19 p.) et le support de soutenance (16 slides)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Azmog
2026-06-16 17:24:21 +02:00
parent e8b49c6b94
commit 052e2f22cd
6 changed files with 10 additions and 6 deletions
Binary file not shown.
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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 ?**
@@ -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<number | null>(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 () => {
+1 -1
View File
@@ -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(
+2 -2
View File
@@ -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))