From eb3094f3a66cb7333d73fbb18efb4dccd8abff0a Mon Sep 17 00:00:00 2001 From: SaidSoighiri94 Date: Wed, 8 Jul 2026 14:44:09 +0200 Subject: [PATCH] style(frontend): harmonize student demo labels --- eme-frontend/lib/demo_identity.dart | 10 ++++++++++ eme-frontend/lib/models/materiel_item.dart | 7 +++++-- eme-frontend/lib/screens/catalogue_screen.dart | 7 ++++--- .../lib/screens/checklist_depart_screen.dart | 7 ++++--- .../lib/screens/checklist_retour_screen.dart | 7 ++++--- .../lib/screens/confirmation_screen.dart | 5 +++-- eme-frontend/lib/screens/detail_screen.dart | 7 ++++--- eme-frontend/lib/screens/home_screen.dart | 17 ++++++++++------- eme-frontend/lib/screens/login_screen.dart | 3 ++- .../lib/screens/restitution_select_screen.dart | 7 ++++--- .../lib/screens/resultat_retour_screen.dart | 5 +++-- review.md | 9 ++++++++- 12 files changed, 61 insertions(+), 30 deletions(-) create mode 100644 eme-frontend/lib/demo_identity.dart diff --git a/eme-frontend/lib/demo_identity.dart b/eme-frontend/lib/demo_identity.dart new file mode 100644 index 0000000..db9ec0a --- /dev/null +++ b/eme-frontend/lib/demo_identity.dart @@ -0,0 +1,10 @@ +/// Identité simulée utilisée tant que l'authentification Azure AD n'est pas branchée. +class DemoIdentity { + DemoIdentity._(); + + static const userName = "Lucas Martin"; + static const userInitials = "LM"; + static const userSubtitle = "Étudiant · B2 Informatique · Ensitech Cergy"; + static const campusTag = "Saint-Christophe · Cergy"; + static const loginCampusTag = "Ensitech · Cergy"; +} diff --git a/eme-frontend/lib/models/materiel_item.dart b/eme-frontend/lib/models/materiel_item.dart index 7303da3..862f606 100644 --- a/eme-frontend/lib/models/materiel_item.dart +++ b/eme-frontend/lib/models/materiel_item.dart @@ -1,7 +1,8 @@ import "package:flutter/material.dart"; +import "../demo_identity.dart"; /// Représentation d'un matériel affiché dans le catalogue et son détail -/// (données statiques pour l'instant ; sera alimenté par l'API plus tard). +/// à partir des réponses API. class MaterielItem { const MaterielItem({ required this.id, @@ -30,7 +31,9 @@ class MaterielItem { marque: json["marque"] as String, modele: json["modele"] as String, reference: json["reference"] as String, - campus: campus == null ? "Saint-Christophe · Cergy" : "${campus["nom"]} · ${campus["ville"]}", + campus: campus == null + ? DemoIdentity.campusTag + : "${campus["nom"]} · ${campus["ville"]}", etatGeneral: json["etatGeneral"] as String, disponible: json["statut"] == "DISPONIBLE", accessoires: accessoires == null ? const [] : accessoires.cast(), diff --git a/eme-frontend/lib/screens/catalogue_screen.dart b/eme-frontend/lib/screens/catalogue_screen.dart index 587f2c8..2086982 100644 --- a/eme-frontend/lib/screens/catalogue_screen.dart +++ b/eme-frontend/lib/screens/catalogue_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../models/materiel_item.dart"; import "../services/materiel_service.dart"; @@ -98,9 +99,9 @@ class _CatalogueScreenState extends State { children: [ EnsupTopBar( brandText: "Catalogue matériel", - campusTag: "Paris · Ensitech", - userName: "Lucas Martin", - userInitials: "LM", + campusTag: DemoIdentity.campusTag, + userName: DemoIdentity.userName, + userInitials: DemoIdentity.userInitials, onBack: () => Navigator.of(context).pop(), ), Expanded( diff --git a/eme-frontend/lib/screens/checklist_depart_screen.dart b/eme-frontend/lib/screens/checklist_depart_screen.dart index 07c440d..ca8086e 100644 --- a/eme-frontend/lib/screens/checklist_depart_screen.dart +++ b/eme-frontend/lib/screens/checklist_depart_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../models/materiel_item.dart"; import "../services/emprunt_service.dart"; @@ -122,9 +123,9 @@ class _ChecklistDepartScreenState extends State { children: [ EnsupTopBar( brandText: "Checklist de départ", - campusTag: "Paris · Ensitech", - userName: "Lucas Martin", - userInitials: "LM", + campusTag: DemoIdentity.campusTag, + userName: DemoIdentity.userName, + userInitials: DemoIdentity.userInitials, onBack: () => Navigator.of(context).pop(), ), Expanded( diff --git a/eme-frontend/lib/screens/checklist_retour_screen.dart b/eme-frontend/lib/screens/checklist_retour_screen.dart index 2526ed9..1ab37a2 100644 --- a/eme-frontend/lib/screens/checklist_retour_screen.dart +++ b/eme-frontend/lib/screens/checklist_retour_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../models/emprunt_item.dart"; import "../models/anomalie_retour.dart"; @@ -127,9 +128,9 @@ class _ChecklistRetourScreenState extends State { children: [ EnsupTopBar( brandText: "Checklist de retour", - campusTag: "Paris · Ensitech", - userName: "Lucas Martin", - userInitials: "LM", + campusTag: DemoIdentity.campusTag, + userName: DemoIdentity.userName, + userInitials: DemoIdentity.userInitials, onBack: () => Navigator.of(context).pop(), ), Expanded( diff --git a/eme-frontend/lib/screens/confirmation_screen.dart b/eme-frontend/lib/screens/confirmation_screen.dart index 139b2fd..ebc7199 100644 --- a/eme-frontend/lib/screens/confirmation_screen.dart +++ b/eme-frontend/lib/screens/confirmation_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../models/emprunt_response.dart"; import "../models/materiel_item.dart"; @@ -49,7 +50,7 @@ class ConfirmationScreen extends StatelessWidget { children: [ const EnsupTopBar( brandText: "EME · Confirmation", - campusTag: "Paris · Ensitech", + campusTag: DemoIdentity.campusTag, ), Expanded( child: DecoratedBox( @@ -186,7 +187,7 @@ class ConfirmationScreen extends StatelessWidget { _rrow("Matériel", item.nom), _rrow("Référence", item.reference), _rrow("N° emprunt", "#${emprunt.id}"), - _rrow("Emprunteur", "Lucas Martin"), + _rrow("Emprunteur", DemoIdentity.userName), _rrow("Date d'emprunt", date), _rrow("Heure", heure), _rrow("Campus", item.campus), diff --git a/eme-frontend/lib/screens/detail_screen.dart b/eme-frontend/lib/screens/detail_screen.dart index 21a6dd6..5d68078 100644 --- a/eme-frontend/lib/screens/detail_screen.dart +++ b/eme-frontend/lib/screens/detail_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../models/materiel_item.dart"; import "../widgets/ensup_top_bar.dart"; @@ -47,9 +48,9 @@ class DetailScreen extends StatelessWidget { children: [ EnsupTopBar( brandText: "Détail matériel", - campusTag: "Paris · Ensitech", - userName: "Lucas Martin", - userInitials: "LM", + campusTag: DemoIdentity.campusTag, + userName: DemoIdentity.userName, + userInitials: DemoIdentity.userInitials, onBack: () => Navigator.of(context).pop(), ), Expanded( diff --git a/eme-frontend/lib/screens/home_screen.dart b/eme-frontend/lib/screens/home_screen.dart index 77ab1ee..c9e8f5a 100644 --- a/eme-frontend/lib/screens/home_screen.dart +++ b/eme-frontend/lib/screens/home_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../widgets/ensup_top_bar.dart"; import "../widgets/profile_card.dart"; @@ -38,9 +39,9 @@ class HomeScreen extends StatelessWidget { child: Column( children: [ EnsupTopBar( - campusTag: "Paris · Ensitech", - userName: "Lucas Martin", - userInitials: "LM", + campusTag: DemoIdentity.campusTag, + userName: DemoIdentity.userName, + userInitials: DemoIdentity.userInitials, onBack: () => Navigator.of(context).pop(), ), Expanded( @@ -50,9 +51,9 @@ class HomeScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ const ProfileCard( - name: "Lucas Martin", - subtitle: "Étudiant · BTS SIO 2ème année · Ensitech Paris", - initials: "LM", + name: DemoIdentity.userName, + subtitle: DemoIdentity.userSubtitle, + initials: DemoIdentity.userInitials, ), const SizedBox(height: 24), Text( @@ -89,7 +90,9 @@ class HomeScreen extends StatelessWidget { "Restituer un matériel que vous avez emprunté", color: EnsupColors.teal, onTap: () => Navigator.of(context).push( - MaterialPageRoute(builder: (_) => const RestitutionSelectScreen()), + MaterialPageRoute( + builder: (_) => const RestitutionSelectScreen(), + ), ), ), ), diff --git a/eme-frontend/lib/screens/login_screen.dart b/eme-frontend/lib/screens/login_screen.dart index 699553a..00a87e4 100644 --- a/eme-frontend/lib/screens/login_screen.dart +++ b/eme-frontend/lib/screens/login_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../widgets/ensup_top_bar.dart"; import "../widgets/identification_option.dart"; @@ -46,7 +47,7 @@ class LoginScreen extends StatelessWidget { children: [ const EnsupTopBar( brandText: "EME — Emprunt Matériel ENSUP", - campusTag: "Ensitech · Paris", + campusTag: DemoIdentity.loginCampusTag, ), Expanded( child: DecoratedBox( diff --git a/eme-frontend/lib/screens/restitution_select_screen.dart b/eme-frontend/lib/screens/restitution_select_screen.dart index 885ad72..f0c764f 100644 --- a/eme-frontend/lib/screens/restitution_select_screen.dart +++ b/eme-frontend/lib/screens/restitution_select_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../models/emprunt_item.dart"; import "../services/emprunt_service.dart"; @@ -83,9 +84,9 @@ class _RestitutionSelectScreenState extends State { children: [ EnsupTopBar( brandText: "Restitution", - campusTag: "Paris · Ensitech", - userName: "Lucas Martin", - userInitials: "LM", + campusTag: DemoIdentity.campusTag, + userName: DemoIdentity.userName, + userInitials: DemoIdentity.userInitials, onBack: () => Navigator.of(context).pop(), ), Expanded( diff --git a/eme-frontend/lib/screens/resultat_retour_screen.dart b/eme-frontend/lib/screens/resultat_retour_screen.dart index c6a8c2f..bd9bd4b 100644 --- a/eme-frontend/lib/screens/resultat_retour_screen.dart +++ b/eme-frontend/lib/screens/resultat_retour_screen.dart @@ -1,5 +1,6 @@ import "package:flutter/material.dart"; import "package:google_fonts/google_fonts.dart"; +import "../demo_identity.dart"; import "../theme/ensup_colors.dart"; import "../models/emprunt_item.dart"; import "../models/anomalie_retour.dart"; @@ -49,7 +50,7 @@ class ResultatRetourScreen extends StatelessWidget { children: [ const EnsupTopBar( brandText: "EME · Résultat du contrôle", - campusTag: "Paris · Ensitech", + campusTag: DemoIdentity.campusTag, ), Expanded( child: DecoratedBox( @@ -227,7 +228,7 @@ class ResultatRetourScreen extends StatelessWidget { valeurCouleur: EnsupColors.red, ), _drow("Matériel", "${emprunt.materiel.nom} · ${emprunt.materiel.reference}"), - _drow("Emprunteur", "Lucas Martin"), + _drow("Emprunteur", DemoIdentity.userName), _drow("Date détection", date), ], ), diff --git a/review.md b/review.md index 23ae885..26271ec 100644 --- a/review.md +++ b/review.md @@ -252,6 +252,13 @@ En terminal interactif (VS Code), `migrate dev` fonctionne normalement (taper `y - Flux non conforme validé en réel : création emprunt -> restitution avec élément absent -> statut `RETOUR_NON_CONFORME` -> matériel retiré du catalogue disponible. - Aucun correctif code nécessaire après ces tests ; backend `build` et `lint` restent verts. +### Étape 32 — Polish V1 étudiant +- Branche dédiée `feat/v1-student-polish` créée après merge de `feat/student-flow-stabilization` dans `develop`. +- Identité simulée et campus MVP centralisés dans `lib/demo_identity.dart` tant que l'auth Azure AD n'est pas branchée. +- Libellés UI harmonisés sur le contexte réel du MVP : `Saint-Christophe · Cergy` / `Ensitech Cergy` au lieu de `Paris · Ensitech`. +- Commentaire obsolète du modèle `MaterielItem` corrigé : les données viennent maintenant de l'API. +- `TODO.md` mis à jour : les parcours emprunt et restitution étudiant sont maintenant branchés API. + --- -*Dernière mise à jour : 2026-07-08 — Parcours étudiant complet testé en réel avec SQL Server Docker.* +*Dernière mise à jour : 2026-07-08 — Parcours étudiant complet testé et libellés V1 harmonisés.*