Files
cesizen-individuel/Plan2_Oral_CESIZen.md
T
Azmog 4f54340e89 fix: corrections post-audit (traçabilité, identité État, accents, graphique mobile)
Backend:
- table audits réellement alimentée via trait Auditable (observers Eloquent)
  sur Utilisateur, SaisieTracker, Feed, Emotion ; mot de passe jamais loggé
- 4 nouveaux tests (19/19 au total)

Frontend web:
- en-tête/pied République Française ajoutés aux pages connexion/inscription
- bouton variant danger réellement rouge (tokens erreur DSFR)

Mobile:
- ~30 libellés ré-accentués (Intensité, Succès, Déconnexion, Répartition...)
- Colors.secondary = rouge Marianne #E1000F (différenciation cartes/icônes)
- vrai camembert SVG des rapports (react-native-svg)

Docs: plans oraux mis à jour (audits actif, 29 tests, stockage JWT en Q/R)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 11:17:40 +02:00

8.0 KiB
Raw Blame History

🎯 Antisèche oral CESIZen — à garder sous les yeux

20 min (présentation + démo live de l'app) + 10 min Q/R · 16 slides · checkpoint à 12:30

🌐 App en ligne : https://cesizen.cleanows.fr (API : api.cesizen.cleanows.fr) · Interface au Système de Design de l'État (DSFR)


🔢 Chiffres à sortir sans hésiter

  • 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)
  • Priorisation /15 → le Tracker cumule 4 fonctions à 9-10/15
  • 6 émotions de base + 36 sous-émotions (référentiel du sujet)
  • 8 entités au MCD · 1 API REST → 2 clients (web + mobile)
  • JWT 60 min + refresh · throttle login 5/min
  • 29 tests automatisés (19 back + 6 front + 4 mobile)
  • 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)
  • Contraintes sujet : budget 75 000 €, livraison 12 mois

🗺️ Déroulé (mots-clés seulement) — démo live intégrée

0:00–2:00 · Intro (slides 1-2)

  • 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)

  • Enjeu sociétal (22 %, stigmatisation) · 4 objectifs stratégiques
  • Parties prenantes : Ministère ↔ apprenant ↔ HDS ↔ utilisateurs ↔ CNIL · 3 acteurs
  • 💬 « le besoin a été reformulé, pas recopié »
  • ➡️ « Comment ai-je choisi quoi développer ? »

4:30–6:00 · Besoins & priorisation (slides 5-6)

  • 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

AVANT de commencer l'oral (à faire pendant l'installation, app déjà lancée) :

  • onglet navigateur ouvert sur https://cesizen.cleanows.fr (en ligne) — repli http://localhost:3000 si pas de réseau (docker compose up -d)
  • 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) :

  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)

  • Pourquoi le Tracker ? → grille /15 en tête · 3 modules aboutis > 6 superficiels · archi extensible
  • Pourquoi MVC découplé ? → 1 API → 2 clients · logique non dupliquée · testable
  • 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
  • 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)

  • « 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

  • 3 respirations avant d'entrer (clin d'œil au sujet)
  • Debout, ancré · commenter les slides, ne pas les lire
  • Pause après chaque idée clé · regarder les 3 évaluateurs
  • Checkpoint 12:00 = fin réponse fonctionnelle ; garder 1 min pour conclure
  • Finir sur l'ouverture, jamais sur une excuse