From b3ec1b94eaadd18181baa7f0e3e54f0e583a3a06 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Tue, 27 Jan 2026 16:21:22 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20Ajout=20briefing=20d=C3=A9veloppement?= =?UTF-8?q?=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/BRIEFING-FRONTEND.md | 266 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 266 insertions(+) create mode 100644 docs/BRIEFING-FRONTEND.md diff --git a/docs/BRIEFING-FRONTEND.md b/docs/BRIEFING-FRONTEND.md new file mode 100644 index 0000000..fde9ca1 --- /dev/null +++ b/docs/BRIEFING-FRONTEND.md @@ -0,0 +1,266 @@ +# 🎯 BRIEFING - Développement Frontend P'titsPas + +## Projet +Application de gestion de crèches/assistantes maternelles - Frontend Flutter Web + +--- + +## Accès Git + +```bash +# Cloner le repo +git clone https://git.ptits-pas.fr/jmartin/petitspas.git +cd petitspas/frontend + +# Identifiants Gitea (si demandé) +# User: jmartin +# Token: giteabu_1796c6aace0e2ef7e4fdb49cdc3bc1bf8ee31fbc + +# API Gitea pour consulter les tickets frontend +curl -H "Authorization: token giteabu_1796c6aace0e2ef7e4fdb49cdc3bc1bf8ee31fbc" \ + "https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues?state=open" | jq '.[] | select(.labels[].name == "frontend") | {number, title}' +``` + +--- + +## Backend API (déjà déployé) + +**URL de base** : `https://app.ptits-pas.fr/api/v1/` + +### Endpoints clés disponibles + +| Endpoint | Méthode | Description | +|----------|---------|-------------| +| `/configuration/setup/status` | GET | Vérifie si setup terminé (`setupCompleted: true/false`) | +| `/auth/login` | POST | Connexion (`{email, password}`) | +| `/auth/me` | GET | Profil utilisateur (inclut `changement_mdp_obligatoire`) | +| `/auth/change-password-required` | POST | Changement MDP obligatoire | +| `/auth/refresh` | POST | Rafraîchir les tokens | +| `/configuration` | GET | Liste toutes les configs (super_admin) | +| `/configuration/:category` | GET | Configs par catégorie (email, app, security) | +| `/configuration/bulk` | PATCH | Mise à jour multiple des configs | +| `/configuration/test-smtp` | POST | Test connexion SMTP | +| `/configuration/setup/complete` | POST | Marquer setup comme terminé | +| `/gestionnaires` | POST | Créer gestionnaire (super_admin only) | +| `/gestionnaires` | GET | Liste des gestionnaires | +| `/documents-legaux/actifs` | GET | CGU et Privacy actifs | + +### Compte test super_admin + +``` +Email: admin@ptits-pas.fr +MDP: 4dm1n1strateur +changement_mdp_obligatoire: true (première connexion) +``` + +--- + +## Tickets Frontend prioritaires + +### Workflow d'initialisation (P1 - BLOQUANT) + +| # | Ticket | Description | Effort | +|---|--------|-------------|--------| +| **#14** | Setup Wizard | Écran configuration initiale (SMTP, app) | 4-5h | +| **#47** | Changement MDP Obligatoire | Modale bloquante après login si flag=true | 1-2h | +| **#35** | Création Gestionnaire | Formulaire création gestionnaire | 2-3h | + +### Authentification (P3) + +| # | Ticket | Description | Effort | +|---|--------|-------------|--------| +| **#43** | Écran Création MDP | Page `/create-password?token=xxx` | 2h | +| **#48** | Gestion Erreurs & Messages | Snackbars, intercepteur HTTP | 2h | + +### Dashboard Gestionnaire (P3) + +| # | Ticket | Description | Effort | +|---|--------|-------------|--------| +| **#44** | Structure Dashboard | Layout avec onglets Parents/AM | 2h | +| **#45** | Liste Parents | Liste des parents en attente | 2h | +| **#46** | Liste AM | Liste des AM en attente | 2h | + +### Inscription (P3) + +| # | Ticket | Description | Effort | +|---|--------|-------------|--------| +| **#38** | Inscription Parent Étape 3 | Enfants | 3h | +| **#39** | Inscription Parent Étapes 4-6 | Finalisation | 4h | +| **#40-42** | Inscription AM | 3 panneaux | 6h | +| **#50** | Affichage CGU dynamique | Version lors inscription | 1h | + +### Admin (P3) + +| # | Ticket | Description | Effort | +|---|--------|-------------|--------| +| **#49** | Gestion Documents Légaux | Upload/activation CGU/Privacy | 4h | +| **#51** | Écran Logs Admin | Optionnel v1.1 | 4h | + +--- + +## Règles de codage + +### Langue + +- **Français** pour : commentaires, descriptions, noms métier +- **Anglais** pour : termes techniques (controller, service, widget, singleton, etc.) + +### Exemples + +```dart +// ✅ BON - Noms métier en français, technique en anglais +class EcranConnexion extends StatefulWidget { } +final utilisateurConnecte = authService.recupererUtilisateur(); +final gestionnaire = await gestionnaireService.creer(donnees); + +// Widget avec nom métier +class CarteEnfant extends StatelessWidget { } +class FormulaireInscriptionParent extends StatefulWidget { } + +// ❌ MAUVAIS - Tout en anglais +class LoginScreen extends StatefulWidget { } +final loggedInUser = authService.getUser(); +class ChildCard extends StatelessWidget { } +``` + +### Termes à garder en anglais +- Widget, StatefulWidget, StatelessWidget +- Controller, Service, Provider +- Singleton, Factory, Builder +- async, await, Future, Stream +- Navigator, Router, Route +- API, HTTP, JSON, DTO + +### Termes métier en français +- Utilisateur, Parent, Enfant, Gestionnaire, Administrateur +- AssistanteMaternelle (ou AM) +- Inscription, Connexion, Déconnexion +- Configuration, Paramètres +- Validation, Refus, EnAttente + +--- + +## Structure frontend existante + +``` +frontend/lib/ +├── config/ +│ └── env.dart # Configuration environnement +├── controllers/ +│ └── parent_dashboard_controller.dart +├── models/ +│ ├── user_registration_data.dart +│ ├── parent_user_registration_data.dart +│ └── am_user_registration_data.dart +├── navigation/ +│ └── app_router.dart # Routes de l'application +├── screens/ +│ ├── auth/ +│ │ ├── login_screen.dart ✅ Fait +│ │ ├── register_choice_screen.dart ✅ Fait +│ │ ├── parent_register_step1-5_screen.dart ✅ Fait +│ │ ├── am/ ✅ 4 étapes faites +│ │ └── parent/ ✅ 5 étapes faites +│ ├── administrateurs/ +│ │ ├── admin_dashboardScreen.dart +│ │ └── creation/ +│ │ └── gestionnaires_create.dart ⚠️ Placeholder +│ ├── home/ +│ │ ├── home_screen.dart +│ │ └── parent_screen/ +│ └── legal/ +├── services/ +│ ├── auth_service.dart +│ ├── bug_report_service.dart +│ ├── dashboardService.dart +│ ├── login_navigation_service.dart +│ └── api/ +│ ├── api_config.dart +│ └── tokenService.dart +├── utils/ +│ └── data_generator.dart +└── widgets/ + ├── admin/ + │ ├── dashboard_admin.dart + │ ├── gestionnaire_card.dart + │ ├── gestionnaire_management_widget.dart + │ └── parent_managmant_widget.dart + ├── dashbord_parent/ + └── ... +``` + +--- + +## Workflow Git + +```bash +# 1. Créer une branche feature +git checkout develop +git pull origin develop +git checkout -b feature/XX-nom-ticket + +# 2. Développer et commiter +git add . +git commit -m "feat(#XX): Description courte" + +# 3. Pousser et créer PR +git push -u origin feature/XX-nom-ticket + +# 4. Créer PR vers master via Gitea ou API +curl -X POST \ + -H "Authorization: token giteabu_1796c6aace0e2ef7e4fdb49cdc3bc1bf8ee31fbc" \ + -H "Content-Type: application/json" \ + -d '{"title":"feat(#XX): Titre","body":"Description\n\nCloses #XX","head":"feature/XX-nom-ticket","base":"master"}' \ + "https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/pulls" +``` + +--- + +## Commandes Flutter + +```bash +# Installation des dépendances +cd frontend +flutter pub get + +# Lancer en mode développement +flutter run -d chrome +# ou +flutter run -d windows +# ou +flutter run -d macos + +# Build web +flutter build web + +# Analyser le code +flutter analyze +``` + +--- + +## Fichiers de configuration importants + +### `lib/config/env.dart` +```dart +class Env { + static const String apiUrl = 'https://app.ptits-pas.fr/api/v1'; +} +``` + +### `lib/services/api/api_config.dart` +Configuration des appels API avec intercepteurs. + +--- + +## Recommandation de démarrage + +1. **Ticket #47** - Modale changement MDP obligatoire (simple, rapide) +2. **Ticket #14** - Setup Wizard (écran configuration initiale) +3. **Ticket #35** - Formulaire création gestionnaire + +Ces 3 tickets complètent le **workflow d'initialisation** ! + +--- + +*Dernière mise à jour : 27 janvier 2026*