docs: réécrit l'antisèche orale en 'ce que je dis' (phrases prêtes + glossaire)

This commit is contained in:
Azmog
2026-06-19 15:55:20 +02:00
parent 7fcbe8ff64
commit cd7dfb6ce9
+176 -100
View File
@@ -1,123 +1,199 @@
# 🎯 Antisèche oral CESIZen — à garder sous les yeux # 🎤 Mon oral CESIZen — ce que je dis, étape par étape
**20 min (présentation + démo live de l'app) + 10 min Q/R · 16 slides · checkpoint à 12:30** **Format : 20 min de présentation (avec démo en direct) + 10 min de questions.**
Garde cette feuille sous les yeux. À chaque étape : ce que je **dis**, ce que je **montre**, et la phrase pour **enchaîner**.
> 🌐 App en ligne : **https://cesizen.cleanows.fr** (API : api.cesizen.cleanows.fr) · Interface au **Système de Design de l'État (DSFR)** > 🌐 L'appli est en ligne pour de vrai : **https://cesizen.cleanows.fr**
> 🎨 Toute l'interface suit la charte graphique de l'État (le **DSFR**, comme les sites en gouv.fr).
--- ---
## 🔢 Chiffres à sortir sans hésiter ## 🔢 Les chiffres à connaître par cœur (à glisser pour faire pro)
- **22 %** des Français = trouble de santé mentale au cours de leur vie (Santé Publique France, 2023)
- **2** modules obligatoires (Comptes, Informations) **+ 1** au choix (Tracker) - **1 Français sur 5** (22 %) connaît un trouble de santé mentale au cours de sa vie.
- Priorisation **/15** → le Tracker cumule **4 fonctions à 9-10/15** - **3 modules** développés : 2 obligatoires (Comptes, Informations) + 1 au choix (le **Tracker d'émotions**).
- **6** émotions de base **+ 36** sous-émotions (référentiel du sujet) - **6 émotions de base** (Joie, Colère, Peur, Tristesse, Surprise, Dégoût) + **36 sous-émotions**.
- **8** entités au MCD · **1** API REST → **2** clients (web + mobile) - **1 seule API** (le cerveau côté serveur) qui alimente **2 applications** : le site web et l'appli mobile.
- JWT **60 min** + refresh · throttle login **5/min** - **29 tests automatisés** qui vérifient que tout marche (19 serveur + 6 web + 4 mobile).
- **29** tests automatisés (19 back + 6 front + 4 mobile) - Contraintes du sujet : **75 000 €** de budget, **12 mois** de délai.
- **DSFR** : interface au Système de Design de l'État (charte gouv.fr) — web + mobile
- **Déployé en ligne** : https://cesizen.cleanows.fr (Docker + HTTPS, vrai service en prod) *Si tu retiens UNE phrase : « 3 modules aboutis, une seule API pour le web et le mobile, et c'est déployé en ligne pour de vrai. »*
- Contraintes sujet : budget **75 000 €**, livraison **12 mois**
--- ---
## 🗺️ Déroulé (mots-clés seulement) — démo live intégrée ## 🗺️ Le déroulé — qu'est-ce que je raconte, dans l'ordre ?
**0:00–2:00 · Intro (slides 1-2)** > 💡 Astuce : à l'intro, j'annonce mon plan en une phrase simple. C'est ça, le « fil rouge » : je raconte mon projet **comme une histoire** — d'abord le besoin, puis mes choix, puis la solution, puis la technique, puis la sécurité.
- Qui je suis · commanditaire = Ministère · objet = plateforme grand public santé mentale
- Fil rouge : *« recueil → priorisation → réponse fonctionnelle + démo → modélisation → RGPD »*
- ➡️ *« Commençons par le contexte. »*
**2:00–4:30 · Contexte & parties prenantes (slides 3-4)** ### ⏱ 0:00–2:00 — Introduction (slides 1-2)
- Enjeu sociétal (22 %, stigmatisation) · 4 objectifs stratégiques 🎤 **Je dis :**
- Parties prenantes : Ministère ↔ apprenant ↔ HDS ↔ utilisateurs ↔ CNIL · 3 acteurs > « Bonjour, je m'appelle Adam Marzuk, je suis étudiant à CESI. Je vais vous présenter **CESIZen**, une plateforme grand public de santé mentale. Le commanditaire est le **Ministère des Solidarités et de la Santé**. »
- 💬 *« le besoin a été reformulé, pas recopié »* >
- ➡️ *« Comment ai-je choisi quoi développer ? »* > « Pour vous présenter mon travail, je vais suivre le cheminement d'un vrai projet : **1)** comprendre le besoin, **2)** choisir quoi développer en priorité, **3)** vous montrer la solution avec une **démonstration en direct**, **4)** l'architecture technique, et **5)** la protection des données. »
**4:30–6:00 · Besoins & priorisation (slides 5-6)** 👉 **J'enchaîne :** « Commençons par le contexte. »
- Périmètre : 2 oblig + Tracker · modules écartés **assumés**
- Grille pondérée /15 → Tracker = plus rentable
- ➡️ *« Voyons la réponse fonctionnelle. »*
**6:00–8:30 · Réponse fonctionnelle Comptes + Informations (slides 7-8)**
- **Comptes** : JWT · RGPD · admin CRUD (maquette)
- **Informations** : feeds · slug auto · modération (maquette)
- 💬 **DSFR transversal** : toute l'interface (web + mobile) suit le **Système de Design de l'État** → en-tête « République Française », accessibilité RGAA, crédibilité institutionnelle
- ➡️ *« Et pour le Tracker, je vais vous le montrer en direct. »*
**8:30–12:30 · 🎬 DÉMO LIVE — le Tracker (voir script ci-dessous)**
- inscription/connexion → journal → wizard 3 étapes → rapport graphique
- 💬 chaque écran = réponse à un besoin précis
- ➡️ *« Voyons maintenant ce qui structure tout ça techniquement. »*
**12:30–16:00 · Modélisation (slides 10-11-12)** — ⚠️ si retard, accélère ici
- **Cas d'usage UML** : couverture par acteur
- **MCD Merise** : 8 entités · cardinalités · hiérarchie émotions auto-référencée (parent_id)
- **MVC découplé** : 1 API → 2 clients · justif = testabilité, évolutivité, non-duplication
- ➡️ *« Ces données étant sensibles, parlons RGPD. »*
**16:00–17:30 · RGPD & sécurité (slide 13)**
- Données de santé = sensibles (art. 9) · consentement · droits CNIL (export/anonymisation)
- bcrypt (mdp) · soft delete · **table audits alimentée** (observers Eloquent : création/modif/suppression tracées) · AES-256 prévu en prod HDS · TLS
- ➡️ *« Tout cela est concrétisé par un prototype. »*
**17:30–19:00 · Prototype & perspectives (slide 14)**
- Stack réelle : Laravel + Next.js + Expo + Docker · **29 tests automatisés**
- **Déployé en ligne** : https://cesizen.cleanows.fr (Coolify, conteneurs Docker, HTTPS) → *« ce n'est pas qu'une maquette, c'est en production »*
- Ouverture : activer les modules écartés sans réécrire · Mon Espace Santé (FHIR) · Open Data
**19:00–20:00 · Conclusion**
- 1 phrase : *besoin reformulé → périmètre priorisé → réponse fonctionnelle → archi pérenne → conformité*
- Remercier · *« Je suis à votre disposition pour vos questions. »*
--- ---
## 🎬 Script de démo (≈ 4 min) — le Tracker en direct ### ⏱ 2:00–4:30 — Le contexte et les personnes concernées (slides 3-4)
🎤 **Je dis :**
> « La santé mentale est un enjeu de société majeur : **1 Français sur 5** est concerné, et le sujet reste tabou. L'objectif du Ministère, c'est d'aider chacun à mieux comprendre et gérer son stress au quotidien. »
>
> « Plusieurs acteurs entrent en jeu : le **Ministère** (le commanditaire), les **utilisateurs** (le grand public), et la **CNIL** (le gendarme des données personnelles, qu'on doit respecter). Dans l'appli, il y a **3 profils** : le visiteur non connecté, l'utilisateur connecté, et l'administrateur. »
**AVANT de commencer l'oral** (à faire pendant l'installation, app déjà lancée) : 💬 **Phrase qui montre que j'ai réfléchi :**
- onglet navigateur ouvert sur **https://cesizen.cleanows.fr** (en ligne) — repli **http://localhost:3000** si pas de réseau (`docker compose up -d`) > « J'ai **reformulé** le besoin avec mes mots, je ne me suis pas contenté de recopier le sujet. »
- **déjà connecté** sur le compte de démo · zoom navigateur à **125 %** · notifications coupées
- Compte : laisser le **journal pré-rempli** de quelques saisies (sinon le rapport est vide)
**Pendant la démo (chemin balisé, ne pas improviser) :** 👉 **J'enchaîne :** « Maintenant, comment j'ai choisi quoi développer ? »
1. *(20 s)* Page **Informations** publique → *« voici le module Informations, accessible sans compte »*
2. *(30 s)* **Journal de bord** → *« le membre retrouve son historique émotionnel »*
3. *(90 s)* **Nouvelle saisie** → wizard : Étape 1 émotion (Joie) → Étape 2 sous-émotion + intensité (slider) → Étape 3 date + note → **Valider** → *« elle apparaît immédiatement dans le journal »*
4. *(60 s)* **Rapports** → changer la période (semaine → mois) → *« camembert de répartition + courbe d'évolution, calculés côté API »*
5. *(20 s, si le temps)* mention rapide **admin** : config des émotions
🛟 **Filet de sécurité** : si la démo plante, je bascule sur les **maquettes des slides** sans m'excuser → *« je vous montre les écrans clés »*. Zéro stress.
🔑 Admin seedé : `admin@cesizen.fr` / `Admin123!`
--- ---
## ❓ Q/R — réflexes (question → mots-clés de réponse) ### ⏱ 4:30–6:00 — Mes choix : qu'est-ce que je développe en priorité ? (slides 5-6)
- **Pourquoi le Tracker ?** → grille /15 en tête · 3 modules aboutis > 6 superficiels · archi extensible 🎤 **Je dis :**
- **Pourquoi MVC découplé ?** → 1 API → 2 clients · logique non dupliquée · testable > « Je ne pouvais pas tout faire. J'ai donc **noté chaque fonctionnalité** selon des critères : sa complexité, sa valeur pour le Ministère, sa valeur pour l'utilisateur, etc. — une note sur 15. »
- **Stack ?** → Laravel (MVC mature, sécu native) · Next (SSR/SEO) · Expo (iOS+Android) · Postgres (ACID, HDS) >
- **Tracker en 1-1 (HasOne) ?** → journal personnel unique · extensible en 1-N > « Résultat : le **Tracker d'émotions** ressort en tête. J'ai préféré faire **3 modules aboutis** plutôt que 6 modules bâclés. Les modules que j'ai écartés, je l'assume : c'est un choix réfléchi, pas un oubli. »
- **Hiérarchie émotions ?** → 1 table, auto-référence parent_id · niveau 1 NULL / niveau 2 renseigné
- **Données sensibles / RGPD ?** → consentement · droits CNIL implémentés · HDS · bcrypt + AES prévu
- **Soft delete vs anonymisation ?** → soft delete = réversible 30j ; anonymisation = dissocie identité
- **JWT, risques ?** → stateless/scalable · expiration courte + refresh · throttle anti-bruteforce · MFA prévu
- **Où est stocké le token ?** → mobile = SecureStore (chiffré OS) · web = localStorage (limite XSS assumée, cible = cookie HttpOnly en v2)
- **Traçabilité ?** → table audits **réellement alimentée** par observers Eloquent (qui/quoi/quand : action, table, anciennes/nouvelles valeurs, IP) · mdp jamais loggé
- **Scalabilité 5000 users ?** → API stateless · index Postgres · pagination · cache TanStack Query
- **Réellement développé ?** → prototype 3 modules (API+web+mobile) + 29 tests automatisés · **déployé en ligne** (Coolify/Docker/HTTPS)
- **Pourquoi le DSFR ?** → service de l'État → charte obligatoire gouv.fr · accessibilité RGAA native · cohérence + confiance · gain de temps (composants prêts)
- **Vraiment en production ?** → oui : https://cesizen.cleanows.fr · conteneurs Docker · base PostgreSQL · CI de build · HTTPS
### 🛡️ Si une question pique (écarts assumés à défendre calmement) 👉 **J'enchaîne :** « Voyons maintenant la solution que j'ai construite. »
- **« Mot de passe oublié »** → écran présent, flux backend prévu en v2
- **Chiffrement AES** → honnête : bcrypt aujourd'hui, AES-256 au repos prévu en prod HDS
- **Diagramme d'état-transition** → non inclus, le MCD + séquences couvrent l'essentiel
- *Règle d'or : si je ne sais pas, je l'assume et je propose une piste.*
--- ---
## 🧘 Réflexes de prise de parole ### ⏱ 6:00–8:30 — La solution : Comptes + Informations (slides 7-8)
- 3 respirations avant d'entrer (clin d'œil au sujet) 🎤 **Je dis :**
- Debout, ancré · **commenter** les slides, ne pas les lire > « Le module **Comptes** gère l'inscription, la connexion sécurisée, le profil, et un espace d'administration. »
- Pause après chaque idée clé · regarder les 3 évaluateurs >
- Checkpoint **12:00** = fin réponse fonctionnelle ; garder 1 min pour conclure > « Le module **Informations**, ce sont des articles de prévention sur la santé mentale, consultables même sans compte. »
- Finir sur l'ouverture, jamais sur une excuse >
> « Petit point important sur tout le projet : l'interface suit le **Système de Design de l'État**, la charte graphique officielle des sites publics français. D'où l'en-tête **"République Française"**. Ça apporte de la **crédibilité** et ça respecte les normes d'**accessibilité**. »
👉 **J'enchaîne :** « Et le cœur du projet, le Tracker, je vais vous le montrer en direct. »
---
### ⏱ 8:30–12:30 — 🎬 LA DÉMO EN DIRECT (le Tracker)
👉 *Voir le script de démo détaillé plus bas.* Idée à répéter pendant que je clique :
> « Chaque écran que je vous montre répond à un besoin précis de l'utilisateur. »
👉 **J'enchaîne :** « Voyons maintenant ce qui fait tourner tout ça, côté technique. »
---
### ⏱ 12:30–16:00 — La technique (slides 10-11-12)
> ⚠️ Si je suis en retard, c'est ici que j'accélère.
🎤 **Je dis (en montrant les schémas) :**
> « Voici le **diagramme des cas d'usage** : il montre qui peut faire quoi (le visiteur, l'utilisateur, l'admin). »
>
> « Voici le **MCD**, le plan de ma base de données : **8 tables** et leurs liens. Détail intéressant : les émotions et sous-émotions sont dans **une seule table** qui se référence elle-même (une émotion peut avoir une émotion "parente"). »
>
> « Et voici mon choix d'architecture : **une seule API** centrale qui sert **deux applications** (le web et le mobile). L'avantage : je n'écris la logique **qu'une seule fois**, c'est plus facile à tester et à faire évoluer. »
👉 **J'enchaîne :** « Comme on manipule des données de santé, parlons de leur protection. »
---
### ⏱ 16:00–17:30 — La protection des données / RGPD (slide 13)
🎤 **Je dis :**
> « Les données de santé sont **sensibles** au sens de la loi (article 9 du RGPD). J'ai donc prévu : le **consentement** à l'inscription, le droit d'**exporter ses données** et de **supprimer son compte**. »
>
> « Côté sécurité : les **mots de passe sont chiffrés**, et toutes les actions importantes sont **tracées** dans un journal d'audit (qui a fait quoi, et quand). Pour une vraie mise en production sur un hébergeur de santé, le **chiffrement complet des données** est prévu. »
👉 **J'enchaîne :** « Tout cela n'est pas qu'un dossier : c'est une appli qui tourne. »
---
### ⏱ 17:30–19:00 — Le prototype et la suite (slide 14)
🎤 **Je dis :**
> « J'ai développé un vrai prototype des 3 modules, en web **et** en mobile, avec **29 tests automatisés**. »
>
> « Et surtout : **c'est déployé en ligne, en vrai**, sur https://cesizen.cleanows.fr, dans des conteneurs Docker, en HTTPS. Ce n'est pas une maquette. »
>
> « Pour la suite, on pourrait activer les modules écartés sans tout réécrire, ou se connecter à Mon Espace Santé. »
---
### ⏱ 19:00–20:00 — Conclusion
🎤 **Je dis :**
> « Pour résumer : j'ai **compris le besoin**, **priorisé** ce qui compte, livré une **solution concrète et déployée**, sur une **architecture solide**, en respectant la **protection des données**. Merci de votre attention, je suis à votre disposition pour vos questions. »
---
## 🎬 Script de la démo (≈ 4 min) — à suivre dans l'ordre
**✅ À préparer AVANT de commencer (pendant l'installation) :**
- Onglet déjà ouvert sur **https://cesizen.cleanows.fr**, **déjà connecté** au compte de démo.
- Zoom du navigateur à **125 %**, notifications coupées.
- Vérifier que le journal a **déjà des saisies** (sinon les rapports sont vides).
- 🔑 Compte démo : `demo@cesizen.fr` / `Demo123!` · Admin : `admin@cesizen.fr` / `Admin123!`
**▶️ Pendant la démo (je clique et je commente) :**
1. *(20 s)* **Page Informations** → « Voici les articles de prévention, accessibles sans même se connecter. »
2. *(30 s)* **Mon journal** → « Ici, l'utilisateur retrouve l'historique de ses émotions. »
3. *(90 s)* **Nouvelle saisie** → « On enregistre une émotion en 3 étapes : 1) on choisit l'émotion (ex. Joie), 2) on précise la sous-émotion et l'intensité, 3) on ajoute une note. Je valide… et elle apparaît tout de suite dans le journal. »
4. *(60 s)* **Mes rapports** → « Et voici les statistiques : un camembert de répartition et une courbe d'évolution. Je change la période, semaine puis mois — tout est recalculé par l'API. »
5. *(20 s, si le temps)* **Espace admin** → « Côté administrateur, on peut configurer les émotions disponibles. »
🛟 **Si la démo plante :** je reste calme et je bascule sur les **captures d'écran de mes slides**, sans m'excuser → « Je vous montre les écrans clés directement. »
---
## ❓ Questions du jury — mes réponses prêtes (en phrases)
> Pour chaque question : une réponse courte que je peux dire telle quelle.
**« Pourquoi avoir choisi le Tracker d'émotions ? »**
> « Parce qu'il ressort en tête de ma grille de priorisation, et qu'il valait mieux faire 3 modules aboutis que 6 superficiels. En plus, mon architecture permet d'ajouter les autres plus tard. »
**« Pourquoi une seule API pour deux applications ? »**
> « Pour ne pas écrire deux fois la même logique. La règle métier est au même endroit, c'est plus simple à tester, à corriger et à faire évoluer. Le web et le mobile ne sont que deux "façades" sur le même cerveau. »
**« Quelles technologies, et pourquoi ? »**
> « **Laravel** côté serveur, car c'est un framework mature et sécurisé. **Next.js** pour le web. **Expo / React Native** pour avoir iOS et Android avec un seul code. Et **PostgreSQL** comme base de données, fiable pour des données sensibles. »
**« Comment gérez-vous les émotions et sous-émotions ? »**
> « Tout est dans une seule table qui se référence elle-même : une émotion de niveau 1 n'a pas de parent, une sous-émotion de niveau 2 pointe vers son émotion parente. C'est souple et facile à étendre. »
**« Et le RGPD, sur des données de santé ? »**
> « Consentement à l'inscription, possibilité d'exporter ses données et de supprimer son compte, mots de passe chiffrés, et un journal d'audit qui trace les actions. Pour la vraie production, un hébergement agréé santé (HDS) et le chiffrement complet sont prévus. »
**« La sécurité de la connexion ? »**
> « J'utilise des **jetons JWT** : à la connexion, le serveur donne un jeton temporaire (60 min) que l'appli renvoie à chaque requête. J'ai aussi une limite de tentatives de connexion pour bloquer les attaques par force brute. »
**« Est-ce vraiment développé ? »**
> « Oui, complètement : web, mobile et serveur, avec 29 tests automatisés. Et c'est **déployé en ligne**, je peux vous le montrer en direct. »
**« Pourquoi la charte de l'État (DSFR) ? »**
> « Parce que c'est un service public : la charte gouv.fr est la référence, elle garantit l'accessibilité et inspire confiance. Et elle m'a fait gagner du temps grâce à des composants prêts à l'emploi. »
### 🛡️ Si une question me met en difficulté (à assumer calmement)
- **« Mot de passe oublié »** → « L'écran existe, le branchement complet est prévu dans une prochaine version. »
- **« Les données sont-elles chiffrées ? »** → « Les mots de passe oui. Le chiffrement complet du reste est prévu pour la mise en production sur hébergeur de santé. » *(Ne jamais dire "tout est chiffré".)*
- **Une question dont je n'ai pas la réponse** → « C'est une bonne question, je ne l'ai pas traitée en détail, mais je partirais sur telle piste… » *(Assumer + proposer une piste, jamais inventer.)*
---
## 📖 Glossaire — comprendre les mots que je dis
| Mot | En une phrase simple |
|---|---|
| **API** | Le "cerveau" côté serveur : il reçoit les demandes du web/mobile et renvoie les données. |
| **MVC** | Une façon d'organiser le code en 3 parties (données / logique / affichage) pour s'y retrouver. |
| **MCD** | Le plan de la base de données : quelles tables, et comment elles sont reliées. |
| **JWT** | Un jeton temporaire prouvant qu'on est connecté, renvoyé à chaque requête. |
| **DSFR** | La charte graphique officielle de l'État (sites gouv.fr) : couleurs, polices, composants. |
| **RGPD** | La loi européenne qui protège les données personnelles. |
| **CNIL** | L'autorité française qui veille au respect du RGPD. |
| **HDS** | "Hébergeur de Données de Santé" : un hébergement certifié, obligatoire pour de vraies données médicales. |
| **Soft delete** | Suppression "douce" : la donnée est masquée mais récupérable, au lieu d'être effacée définitivement. |
| **Anonymisation** | On garde la donnée mais on enlève tout ce qui permet d'identifier la personne. |
| **Docker / conteneur** | Une "boîte" qui embarque l'appli et tout ce qu'il lui faut, pour qu'elle tourne pareil partout. |
| **Throttle** | Une limite du nombre de tentatives (ex. connexions) pour bloquer les abus. |
---
## 🧘 Réflexes pour bien parler
- Je respire un grand coup avant d'entrer.
- Je reste **debout, posé**. Je **commente** mes slides, je ne les **lis pas**.
- Je fais une **pause** après chaque idée importante, et je **regarde** les évaluateurs.
- **Repère de temps :** à **12 minutes**, j'ai fini la démo. Je garde **1 minute** pour conclure.
- Je termine sur l'ouverture (la suite du projet), **jamais sur une excuse**.