docs: Ajout briefing développement frontend
This commit is contained in:
parent
95d1c3741b
commit
b3ec1b94ea
266
docs/BRIEFING-FRONTEND.md
Normal file
266
docs/BRIEFING-FRONTEND.md
Normal file
@ -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*
|
||||||
Loading…
x
Reference in New Issue
Block a user