diff --git a/Guide_Lancement_CESIZen.md b/Guide_Lancement_CESIZen.md new file mode 100644 index 0000000..d3e6e22 --- /dev/null +++ b/Guide_Lancement_CESIZen.md @@ -0,0 +1,144 @@ +# 🚀 Guide de lancement CESIZen — web, API, mobile & dĂ©mo + +> Tout se lance en **une commande** pour la partie web/API (Docker). Le mobile se lance Ă  part (Expo). + +--- + +## 0. PrĂ©requis (Ă  vĂ©rifier une fois) +- **Docker Desktop** installĂ© et **lancĂ©** (l'icĂŽne baleine doit ĂȘtre active dans la barre de menu). +- Pour le mobile uniquement : **Node.js** (dĂ©jĂ  installĂ© : v22) et l'app **Expo Go** sur ton tĂ©lĂ©phone (App Store / Play Store). +- Se placer dans le dossier du projet : + ```bash + cd ~/Desktop/CESI/Cesizen + ``` + +--- + +## 1. 🌐 Lancer le site web + l'API + la base (Docker) + +Une seule commande construit et dĂ©marre **tout** (PostgreSQL + Redis + API Laravel + front Next.js), applique les migrations et le seed (dont le compte de dĂ©mo) : + +```bash +docker compose up -d +``` + +- `-d` = en arriĂšre-plan (tu rĂ©cupĂšres ton terminal). +- Le **premier** lancement build les images (quelques minutes). Les suivants dĂ©marrent en ~20 s. + +**VĂ©rifier que c'est prĂȘt :** +```bash +docker compose ps # les 4 services doivent ĂȘtre "Up" / "healthy" +``` + +**Adresses une fois lancĂ© :** +| Service | URL | +|---|---| +| đŸ–„ïž Site web | **http://localhost:3000** | +| 🔌 API (REST JSON) | http://localhost:8000/api/v1 | +| đŸ—„ïž PostgreSQL | localhost:5432 (db `cesizen` / user `cesizen`) | + +âžĄïž Ouvre **http://localhost:3000** dans ton navigateur. + +--- + +## 2. 🔑 Comptes de dĂ©monstration (dĂ©jĂ  créés par le seed) + +| RĂŽle | Email | Mot de passe | Pour montrer
 | +|---|---|---|---| +| **Membre** (dĂ©mo) | `demo@cesizen.fr` | `Demo123!` | Le **Tracker** : journal dĂ©jĂ  rempli (18 saisies) + rapports parlants | +| **Admin** | `admin@cesizen.fr` | `Admin123!` | Le **back-office** : gestion users / contenus / Ă©motions | + +> 💡 Pour la dĂ©mo de soutenance, connecte-toi avec **`demo@cesizen.fr`** : son journal et ses rapports sont dĂ©jĂ  fournis (camembert + courbe), pas besoin de saisir en direct. + +--- + +## 3. 🎬 Le parcours de dĂ©mo (≈ 4 min, sur le web) + +ConnectĂ© en `demo@cesizen.fr`, dĂ©roule dans cet ordre : +1. **Informations** (accessible mĂȘme sans compte) → *« voici le module Informations »* +2. **Journal de bord** → l'historique des saisies (dĂ©jĂ  rempli) +3. **Nouvelle saisie** → wizard **3 Ă©tapes** : Ă©motion → sous-Ă©motion + intensitĂ© (slider) → date + note → **Valider** (elle apparaĂźt dans le journal) +4. **Rapports** → changer la pĂ©riode (Semaine / Mois / 
) → **camembert** de rĂ©partition + **courbe** d'Ă©volution +5. *(option)* ConnectĂ© en **admin**, montrer la **configuration des Ă©motions** + +🛟 **Si la dĂ©mo plante** : bascule sur les **maquettes des slides** (slide 9), sans t'excuser. + +--- + +## 4. đŸ“± Lancer l'application mobile (Expo) + +> La partie Docker (API) doit **dĂ©jĂ  tourner** (Ă©tape 1), car l'app mobile interroge l'API. + +```bash +cd ~/Desktop/CESI/Cesizen/mobile +npm install # la premiĂšre fois seulement +npx expo start # dĂ©marre le serveur Expo + affiche un QR code +``` + +Ensuite, **3 façons** de voir l'app : + +### a) Sur ton tĂ©lĂ©phone (le plus simple pour une dĂ©mo) +1. TĂ©lĂ©phone et Mac sur le **mĂȘme WiFi**. +2. L'app doit pointer vers l'API via l'**IP locale du Mac** (pas `localhost`, qui dĂ©signe le tĂ©lĂ©phone). Lance plutĂŽt : + ```bash + EXPO_PUBLIC_API_URL=http://192.168.1.127:8000/api/v1 npx expo start + ``` + *(192.168.1.127 = IP actuelle de ton Mac. Si elle change, retrouve-la avec `ipconfig getifaddr en0`.)* +3. Ouvre **Expo Go** sur le tĂ©lĂ©phone → scanne le **QR code** affichĂ© dans le terminal. + +### b) Sur simulateur iOS (Mac avec Xcode) +- Dans le terminal Expo, appuie sur **`i`** → l'app s'ouvre dans le simulateur. (Ici `localhost` fonctionne tel quel.) + +### c) Sur Ă©mulateur Android (Android Studio) +- Appuie sur **`a`**. (L'app utilise automatiquement `10.0.2.2` pour joindre l'API du Mac.) + +> Pour la soutenance, le plus fiable est de **montrer le web** (projetĂ©) et d'**Ă©voquer le mobile** avec 1-2 Ă©crans (tĂ©lĂ©phone ou simulateur). Une double dĂ©mo live = double risque. + +--- + +## 5. âč ArrĂȘter / relancer + +```bash +docker compose down # arrĂȘte tout (les donnĂ©es de dĂ©mo sont CONSERVÉES) +docker compose up -d # relance (le compte dĂ©mo + les 18 saisies reviennent) +``` + +- ⚠ **Ne jamais** faire `docker compose down -v` : le `-v` **efface** la base (tu perdrais les donnĂ©es de dĂ©mo). Sans `-v`, tout est conservĂ© dans le volume. +- Mobile : `Ctrl + C` dans le terminal Expo pour l'arrĂȘter. + +--- + +## 6. đŸ§Ș Lancer les tests (si on te le demande) + +```bash +# API (Laravel) — 15 tests +docker compose exec backend php artisan test +# ou en local : cd backend && php artisan test + +# Web (Next.js) — 6 tests +cd frontend && npm test + +# Mobile (Expo) — 4 tests +cd mobile && npm test +``` + +--- + +## 7. 🆘 DĂ©pannage rapide + +| ProblĂšme | Solution | +|---|---| +| `Cannot connect to the Docker daemon` | Docker Desktop n'est pas lancĂ© → ouvre-le, attends que la baleine soit active. | +| Port `3000`/`8000` dĂ©jĂ  utilisĂ© | Une appli occupe le port. Ferme-la, ou : `lsof -nP -iTCP:3000 -sTCP:LISTEN` pour l'identifier. | +| Le site charge mais « erreur rĂ©seau » | L'API n'est pas prĂȘte → `docker compose ps` (backend doit ĂȘtre Up) ; relance `docker compose up -d`. | +| Le mobile n'atteint pas l'API | Mauvaise URL → utilise `EXPO_PUBLIC_API_URL=http://:8000/api/v1` (Ă©tape 4a). | +| Repartir d'une base propre | `docker compose down -v && docker compose up -d` (⚠ efface puis recrĂ©e tout, dĂ©mo comprise). | + +--- + +### ✅ Checklist « 5 min avant l'oral » +- [ ] Docker Desktop lancĂ© +- [ ] `docker compose up -d` exĂ©cutĂ© · `docker compose ps` = tout **Up** +- [ ] Navigateur ouvert sur **http://localhost:3000**, **dĂ©jĂ  connectĂ©** en `demo@cesizen.fr` +- [ ] Page **Journal de bord** affichĂ©e, zoom Ă  **125 %**, notifications coupĂ©es +- [ ] Slides ouvertes en second (`.pptx` + un export **PDF** de secours) diff --git a/Plan_Oral_CESIZen.md b/Plan_Oral_CESIZen.md index 6f14f2f..1db3699 100644 --- a/Plan_Oral_CESIZen.md +++ b/Plan_Oral_CESIZen.md @@ -2,7 +2,8 @@ **Apprenant :** Adam Marzuk · **Bloc :** INFCDAAL1 — Concevoir les solutions logicielles **Format :** 20 min de prĂ©sentation + ~10 min de questions/rĂ©ponses -**Support :** `CESIZen_Soutenance.pptx` (16 slides : 14 + 2 annexes) +**Support :** `CESIZen_Soutenance.pptx` (16 slides : 14 + 2 annexes) + **dĂ©mo live de l'app** (compte `demo@cesizen.fr` / `Demo123!`) +**AntisĂšche Ă  garder en main :** `Plan2_Oral_CESIZen.md` · **Lancement :** voir `Guide_Lancement_CESIZen.md` > Objectif : montrer la **dĂ©marche** (recueil → analyse → modĂ©lisation) autant que le rĂ©sultat. > Le jury note aussi la **prise de parole** : posture, voix, regard, gestion du temps. @@ -13,16 +14,17 @@ | Temps | Slide(s) | Sujet | Messages clĂ©s Ă  dire | |---|---|---|---| -| **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, 6+36 Ă©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. | +| **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 **avec une dĂ©monstration de l'application**, puis la modĂ©lisation technique et la conformitĂ© RGPD. » PrĂ©senter le sommaire (slide 2). | +| **2:00 – 4:30** (2â€Č30) | 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Ă©. » | +| **4:30 – 6:00** (1â€Č30) | 5 — 6 | **Besoins & priorisation** | PĂ©rimĂštre : 2 modules obligatoires + Tracker au choix ; modules Ă©cartĂ©s assumĂ©s. Grille pondĂ©rĂ©e /15 (5 critĂšres). Conclusion : « le Tracker cumule 4 fonctionnalitĂ©s Ă  9-10/15, c'est le module au choix le plus rentable. » | +| **6:00 – 8:30** (2â€Č30) | 7 — 8 | **RĂ©ponse fonctionnelle (Comptes + Informations)** | Module Comptes : JWT, RGPD, admin (slide 7 + maquette). Module Informations : feeds, modĂ©ration, slug auto (slide 8 + maquette). EnchaĂźner : « pour le Tracker, je vais vous le montrer en direct. » | +| **8:30 – 12:30** (4â€Č) | dĂ©mo live | **🎬 DĂ©mo de l'application — Tracker** | Sur l'app web (compte `demo@cesizen.fr` **dĂ©jĂ  connectĂ©**) : page Informations → journal de bord → **nouvelle saisie** (wizard 3 Ă©tapes : Ă©motion → sous-Ă©motion + intensitĂ© → date + note) → **Rapports** (changer la pĂ©riode : camembert + courbe d'Ă©volution). 🛟 Si ça plante : basculer sur les maquettes (slide 9) sans s'excuser. | +| **12:30 – 16:00** (3â€Č30) | 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Ă© : bcrypt (mots de passe), JWT, HDS, table audits ; chiffrement AES-256 au repos prĂ©vu en production. | +| **17:30 – 19:00** (1â€Č30) | 14 | **Prototype & perspectives** | Prototype fonctionnel (Laravel + Next.js + Expo + Docker), **25 tests automatisĂ©s** (15 back + 6 front + 4 mobile). Ouverture : activer les modules Ă©cartĂ©s sans réécrire le modĂšle, Open Data, Mon Espace SantĂ© (FHIR). | | **19:00 – 20:00** (1â€Č) | 14 | **Conclusion** | SynthĂšse : besoin reformulĂ© → pĂ©rimĂštre priorisĂ© → rĂ©ponse fonctionnelle → architecture pĂ©renne → conformitĂ©. Remercier, ouvrir les questions. | -**RepĂšres de rythme :** ~1 slide / 1 min 20. Si retard Ă  12:00, raccourcir la modĂ©lisation (garder MCD + MVC, survoler les cas d'usage). +**RepĂšres de rythme :** checkpoint mental Ă  **12:30** (fin de la dĂ©mo). Si retard, raccourcir la modĂ©lisation (garder MCD + MVC, survoler les cas d'usage) et garder 1 min pour conclure. ⚠ **Lance la stack et connecte-toi AVANT d'entrer** dans la salle (sois dĂ©jĂ  sur le journal de bord). --- @@ -53,7 +55,7 @@ ### DonnĂ©es & sĂ©curitĂ© (RGPD) **Q8. Les donnĂ©es Ă©motionnelles sont sensibles — comment ĂȘtes-vous conforme ?** -> Consentement explicite Ă  l'inscription (case non prĂ©-cochĂ©e), finalitĂ©s documentĂ©es, droits CNIL implĂ©mentĂ©s (accĂšs, rectification, effacement, portabilitĂ© via export JSON, anonymisation). HĂ©bergement HDS, chiffrement AES-256 au repos et TLS en transit, table `audits` pour la traçabilitĂ©. +> Consentement explicite Ă  l'inscription (case non prĂ©-cochĂ©e), finalitĂ©s documentĂ©es, droits CNIL implĂ©mentĂ©s (accĂšs, rectification, effacement, portabilitĂ© via export JSON, anonymisation). HĂ©bergement HDS, TLS en transit, **bcrypt** sur les mots de passe (chiffrement AES-256 au repos prĂ©vu pour la mise en production), table `audits` pour la traçabilitĂ©. **Q9. DiffĂ©rence entre soft delete et anonymisation ?** > Soft delete (`deleted_at`) = suppression rĂ©versible 30 j puis purge — pour le droit Ă  l'effacement avec fenĂȘtre de rĂ©tractation. Anonymisation = on dissocie les donnĂ©es de l'identitĂ© (note vidĂ©e, contacts supprimĂ©s) tout en gardant des statistiques agrĂ©gĂ©es non identifiantes. @@ -70,11 +72,17 @@ ### Questions « piĂšge » frĂ©quentes **Q13. Qu'est-ce qui est rĂ©ellement dĂ©veloppĂ© vs spĂ©cifiĂ© ?** -> Un prototype fonctionnel des 3 modules (API + web + mobile) accompagne le dossier ; les spĂ©cifications dĂ©taillĂ©es couvrent les 2 modules obligatoires + le Tracker, conformĂ©ment Ă  la consigne. +> Un prototype fonctionnel des 3 modules (API + web + mobile) accompagne le dossier, avec **25 tests automatisĂ©s** (15 PHPUnit back, 6 Vitest web, 4 Jest mobile) ; les spĂ©cifications dĂ©taillĂ©es couvrent les 2 modules obligatoires + le Tracker, conformĂ©ment Ă  la consigne. **Q14. Si c'Ă©tait Ă  refaire, que changeriez-vous ?** > J'ajouterais des tests automatisĂ©s d'accessibilitĂ© RGAA dĂšs le dĂ©but, et je formaliserais un diagramme de classes en complĂ©ment du MCD pour la couche mĂ©tier. +**Q15. Ce que vous avez montrĂ© en dĂ©mo est-il rĂ©el ?** +> Oui, c'est le prototype qui tourne en local (Docker) : API Laravel + front Next.js + PostgreSQL. Les saisies et les rapports affichĂ©s sont calculĂ©s en direct par l'API (service `RapportService`), pas des Ă©crans figĂ©s. + +**Q16. Comment testez-vous la qualitĂ© du code ?** +> Tests automatisĂ©s sur les 3 briques, lançables en une commande : `php artisan test` (15 tests : auth, tracker, admin, RGPD), `npm test` cĂŽtĂ© web (Vitest : composants + store) et mobile (Jest : appels API). Plus le type-checking strict (TypeScript) et le linting (ESLint, Pint). + --- ## Conseils de prise de parole (la santĂ© mentale
 commence par la vĂŽtre)