Commit Graph

13 Commits

Author SHA1 Message Date
Azmog df911efde1 fix(mobile): déconnexion locale d'abord (instantanée, fiable hors-ligne)
L'appel API /auth/logout pouvait bloquer la déconnexion ; on purge le token et
réinitialise l'état immédiatement, puis on notifie le serveur en arrière-plan.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:34:15 +02:00
Azmog 50bcd3533f fix(mobile): aligne babel-preset-expo sur 54.0.11 (SDK 54)
Une version 56.x avait été installée par erreur et transpilait mal pour Hermes
(« private properties are not supported »). Retour à la version du SDK 54.
Retire aussi le plugin worklets manuel (déjà fourni par le preset).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:25:51 +02:00
Azmog ee4bbf321b fix(mobile): ajoute le plugin babel react-native-worklets (requis par Reanimated 4 / SDK 54)
Corrige l'erreur Hermes « private properties are not supported » au démarrage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:20:43 +02:00
Azmog 511d3b95f0 fix: babel-preset-expo (SDK 54) + navigation wizard sans rognage
- ajoute babel-preset-expo en devDependency (manquant après migration SDK 54,
  bloquait le bundling Metro)
- remplace le fr-btns-group du wizard de saisie par un flex simple : les
  libellés "Précédent/Suivant/Enregistrer" ne sont plus tronqués

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:17:57 +02:00
Azmog 170c6ffce2 chore(mobile): migration Expo SDK 53 -> 54 (pour Expo Go iOS à jour)
- expo ^54, react-native 0.81.5, react 19.1.0, @types/react ~19.1.8
- ajout react-native-worklets (peer de reanimated 4), jest-expo ~54
- expo-doctor 18/18, tsc 0

Permet d'exécuter l'app sur un iPhone avec Expo Go SDK 54.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:07:09 +02:00
Azmog 6921022e87 fix(dsfr): remplace l'usage détourné de fr-card par un panneau .app-panel
.fr-card (flex + height:100% + bordure ::before) débordait quand utilisé comme
conteneur générique (wizard de saisie, journal, rapports, profil, timeline) et
chevauchait le footer. Remplacé par .app-panel (panneau neutre, variables DSFR).
Les vraies cartes structurées (fr-card__body) sont conservées.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:02:33 +02:00
Azmog 1bd8608acb polish(dsfr): layout membre en fond DSFR + masque l'en-tête natif de l'onglet Accueil (mobile)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:49:59 +02:00
Azmog ca88bf7737 feat(mobile): applique l'identité visuelle DSFR (bleu France, République Française)
- palette officielle DSFR (#000091, rouge Marianne, gris DSFR) dans lib/colors.ts
- composant RepubliqueHeader (bloc « République Française » + service CESIZen)
- restyle boutons/champs/cartes/onglets/urgence au style gouv.fr sur tous les écrans
- couleurs d'émotions conservées

Le DSFR étant un framework web, le mobile en reçoit l'identité visuelle (pas les classes fr-*). tsc 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:45:05 +02:00
Azmog 0e07f5a57e test: ajoute des tests automatisés frontend (Vitest) et mobile (Jest)
- Frontend Next.js : Vitest + Testing Library
  - Button (rendu, clic, état loading)
  - auth-store (setAuth, déconnexion, persistance token)
  - script `npm test`, config jsdom + alias @/
- Mobile Expo : Jest (preset jest-expo)
  - getApiError (erreur Axios, validation, erreur générique, sans réponse)
  - script `npm test`, transformIgnorePatterns adapté
- Cahier de tests : section « Outils de test automatisés » (PHPUnit + Vitest + Jest)
  et entrée 6.4 (PV de recette) au sommaire

Suites vertes : backend 15, frontend 6, mobile 4. tsc/lint/build OK, expo-doctor 18/18.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:17:20 +02:00
Azmog 91df66852e fix: aligne le référentiel d'émotions sur le sujet et complète le dossier
Référentiel d'émotions (conformité au sujet) :
- 6 émotions de base (suppression d'« Amour ») et 36 sous-émotions
- libellés exacts du sujet (Surprise dédupliquée : Étonnement listé 2x)
- propagation du décompte 6+36 (CLAUDE.md, plan oral, slides, dossier, mobile)

Corrections dossier (grille d'évaluation Bloc INFCDAAL1) :
- ajout d'un sommaire
- contraintes budget 75 000 EUR et délai 12 mois (chiffres du sujet)
- table des parties prenantes et de leur communication (§4.1)
- mockup du module Informations (les 3 modules ont désormais une maquette)
- cardinalités du MCD agrandies et lisibles
- chiffrement reformulé honnêtement (bcrypt aujourd'hui, AES-256 prévu en prod HDS)
- dossier maintenu à 20 pages (limite respectée)

Vérifs : backend 15 tests, mobile tsc 0, seeder 6+36.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 20:27:33 +02:00
Azmog 6f5b8182ca chore: durcit la configuration pour la production
- mobile: externalise l'URL d'API via EXPO_PUBLIC_API_URL (repli localhost en dev)
- backend: .env.example adapté au projet (PostgreSQL, JWT, FRONTEND_URL, Redis)
- frontend/mobile: ajoute .env.example (+ exception gitignore front)
- mobile: supprime les 4 `any` (helper getApiError, type Feed, glyphMap Ionicons)
- backend: normalise le style PSR-12 via Pint (13 fichiers)

Tests backend 15/15, mobile tsc 0, Pint pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:00:33 +02:00
Azmog 2ec2a78469 fix: corrige les dépendances mobile et la qualité du code frontend
Mobile (Expo SDK 53) :
- supprime victory-native et react-native-svg (dépendances mortes, non
  importées) qui empêchaient l'installation (ETARGET sur svg@~16.0.0 +
  conflit de peer reanimated/skia)
- ajoute les peers manquants expo-constants et expo-linking (requis par
  expo-router)
- aligne expo-router, react-native et react-native-screens sur le SDK 53
- ajoute package-lock.json (installs reproductibles)
- expo-doctor 18/18, tsc sans erreur

Frontend (Next.js) :
- EmotionChart : remplace 4 `any` par les types Recharts (ValueType/NameType)
- EditSaisieModal : remplace le setState dans useEffect par l'ajustement
  d'état pendant le rendu (pattern recommandé par React)
- tsc, eslint et build de production sans erreur

Backend : 15 tests passent (Auth, Admin, Tracker, RGPD).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 17:19:07 +02:00
Azmog bfd35905c9 feat: add mobile application structure with emotion picker and API integration
- Added favicon and icon assets for the mobile app.
- Implemented EmotionPicker component for selecting emotions with child options.
- Created hooks for fetching emotions, feeds, and rapport data.
- Established API service for handling requests and authentication.
- Integrated Zustand for state management of user authentication.
- Defined color palette for the application.
- Set up TypeScript types for various entities including User, Emotion, and Feed.
- Configured Babel and TypeScript for the mobile project.
- Added package.json with necessary dependencies for Expo and React Native.
2026-04-15 16:09:20 +02:00