# Mini-spec — Déplacer les panels `widgets/admin/` → `widgets/dashboard/` **Ticket** : **#155** (phase 2 — même ticket que le rename `Admin*`) **Phase 1** : widgets `Admin*` → `widgets/dashboard/` (déjà sur `feature/155-rename-admin-prefix-dashboard`) **Branche** : poursuivre / rebaser `feature/155-rename-admin-prefix-dashboard` (ou nouvelle branche depuis `develop` après merge phase 1) **Nature** : rename / move mécanique — **zéro** changement UX / métier --- ## Contexte Après la phase 1 (#155), la situation est **hybride** : | Emplacement | Contenu | |-------------|---------| | `widgets/dashboard/` | Composants partagés sans préfixe `Admin*` (modales, cartes, selects, sub-bar…) | | `widgets/admin/` | **Panels** du dashboard staff (listes, wizards, validation, shell `UserManagementPanel`…) + `AdminManagementWidget` | Le dossier `admin/` laisse encore croire « réservé administrateur », alors que **gestionnaire** consomme les mêmes panels (`GestionnaireDashboardScreen` → `UserManagementPanel`). Ce ticket **termine l’option C** au niveau dossier : tout le dashboard staff vit sous `widgets/dashboard/`, sauf ce qui est **vraiment** rôle admin. --- ## Objectif ``` frontend/lib/widgets/admin/ ↓ git mv + update imports frontend/lib/widgets/dashboard/… ``` Critère : un nouveau dev ne doit plus ouvrir `widgets/admin/` pour du code partagé admin+gestionnaire. --- ## Cible d’arborescence (proposée) ``` widgets/dashboard/ ├── (déjà là #155) child_detail_modal.dart, am_edit_modal.dart, user_card.dart, … ├── user_management_panel.dart ← shell onglets ├── user_management_sub_bar.dart ← déjà déplacé #155 ├── dossiers_management_widget.dart ├── dossier_list_card.dart ├── parent_management_widget.dart ← corriger le typo managmant au passage ? ├── enfant_management_widget.dart ├── assistante_maternelle_management_widget.dart ├── gestionnaire_management_widget.dart ├── pending_validation_widget.dart ├── parent_dossier_create_modal.dart ├── parent_dossier_wizard.dart ├── am_dossier_create_modal.dart ├── am_dossier_wizard.dart ├── validation_*.dart ← family/am wizards, refus, theme, confirm ├── parametres_panel.dart ← utilisé par écran admin (OK dans dashboard) ├── relais_management_panel.dart ├── common/ ← sous-dossier optionnel │ ├── suppression_confirm_dialog.dart │ ├── user_list.dart │ └── validation_detail_section.dart └── … widgets/admin/ ← mince, rôle admin seulement └── admin_management_widget.dart ← onglet Administrateurs ``` ### Variante B (plus stricte) `AdminManagementWidget` + éventuels helpers purement admin → `screens/administrateurs/widgets/` et **suppression** du dossier `widgets/admin/`. **Reco** : **variante A** (garder `widgets/admin/` minimal avec seulement `AdminManagementWidget`) — moins de churn screens, clair. --- ## Inventaire à déplacer (état actuel) ### Racine `widgets/admin/` → `widgets/dashboard/` | Fichier actuel | Notes | |----------------|--------| | `user_management_panel.dart` | Shell partagé admin + gestionnaire | | `dossiers_management_widget.dart` | | | `dossier_list_card.dart` | | | `parent_managmant_widget.dart` | Typo historique `managmant` — **option** : renommer → `parent_management_widget.dart` dans le même ticket ou ticket typo séparé | | `enfant_management_widget.dart` | | | `assistante_maternelle_management_widget.dart` | | | `gestionnaire_management_widget.dart` | | | `pending_validation_widget.dart` | | | `parent_dossier_create_modal.dart` | | | `parent_dossier_wizard.dart` | | | `am_dossier_create_modal.dart` | | | `am_dossier_wizard.dart` | | | `validation_am_wizard.dart` | | | `validation_family_wizard.dart` | | | `validation_dossier_modal.dart` | | | `validation_modal_theme.dart` | | | `validation_refus_form.dart` | | | `validation_valider_confirm_dialog.dart` | | | `parametres_panel.dart` | Écran admin seulement, mais pas préfixé Admin — OK dashboard | | `relais_management_panel.dart` | | ### `widgets/admin/common/` → `widgets/dashboard/common/` (ou plat) | Fichier | Notes | |---------|--------| | `suppression_confirm_dialog.dart` | Partagé (y compris `screens/administrateurs/creation/*`) | | `user_list.dart` | | | `validation_detail_section.dart` | | ### **Ne pas** déplacer | Fichier | Destination | |---------|-------------| | `admin_management_widget.dart` | Reste `widgets/admin/` (ou variante B → screens) | ### Déjà fait (#155) — ne pas retraiter Tout ce qui est déjà sous `widgets/dashboard/` (`child_detail_modal`, `am_edit_modal`, `user_card`, `select_*`, `user_management_sub_bar`, …). --- ## Consommateurs d’imports (à mettre à jour) ### Screens - `screens/administrateurs/admin_dashboardScreen.dart` — `UserManagementPanel`, `ParametresPanel` - `screens/gestionnaire/gestionnaire_dashboard_screen.dart` — `UserManagementPanel` - `screens/administrateurs/creation/admin_create.dart` — `suppression_confirm_dialog` - `screens/administrateurs/creation/gestionnaires_create.dart` — idem ### Widgets déjà en `dashboard/` - `am_edit_modal`, `child_detail_modal`, `parent_edit_modal`, `select_*` — imports vers `widgets/admin/common/*` ou panels ### Divers - `widgets/common/identity_block.dart` (si import admin) - Tous les fichiers **déplacés** entre eux (imports relatifs / package) ### Hors scope rename classes Sauf décision explicite sur le typo `parent_managmant_widget` → pas de rename de **classes** métier dans ce ticket (seulement chemins de fichiers + imports). `AdminManagementWidget` **conserve** son nom. --- ## Plan d’exécution 1. Partir de `feature/155-rename-admin-prefix-dashboard` (phase 1) **ou** `develop` si phase 1 déjà mergée 2. `git mv` fichiers selon inventaire 3. Remplacer globalement `package:p_tits_pas/widgets/admin/` → `package:p_tits_pas/widgets/dashboard/` **sauf** `…/widgets/admin/admin_management_widget.dart` 4. Corriger imports relatifs cassés 5. Grep de contrôle (ci-dessous) 6. Build Flutter web (Docker) + smoke dashboard admin **et** gestionnaire 7. Merge → squash master si flux habituel --- ## Vérifs ```bash # Plus de panels partagés sous admin (seul AdminManagement attendu) find frontend/lib/widgets/admin -name '*.dart' # Plus d’imports panels vers l’ancien chemin (sauf AdminManagement) rg -n "widgets/admin/(user_management|dossiers_|parent_|enfant_|assistante|gestionnaire|pending|validation_|parametres|relais|am_dossier|parent_dossier|dossier_list|common/)" frontend/lib # Screens OK rg -n "widgets/admin/" frontend/lib/screens ``` Attendu screens : **0** hit vers panels ; éventuellement plus aucun hit `widgets/admin/` sauf si import explicite `AdminManagementWidget` depuis `user_management_panel` (chemin `widgets/admin/admin_management_widget.dart`). --- ## Hors scope - Refonte UX des modales / panels (ticket dédié annoncé) - Rename `EnfantAdminModel` - Rename `screens/administrateurs/` - Rename `AdminUserFormDialog` / `AdminCreateDialog` - Changement API / back - #152 (`est_multiple`) — autre branche --- ## Critères d’acceptation - [ ] Inventaire déplacé selon tableau - [ ] `widgets/admin/` ne contient plus que `admin_management_widget.dart` (variante A) - [ ] Imports screens + widgets à jour - [ ] Build Flutter OK - [ ] Recette : dashboard **administrateur** et **gestionnaire** (listes, ouverture fiches, validation, création dossier) sans régression - [ ] Aucun changement comportemental volontaire --- ## Risques / notes - **Conflits de merge** si d’autres features touchent les panels → faire ce ticket quand la surface dashboard est calme (fin 0.1.0 OK) - Typo `parent_managmant_widget` : soit inclus (bonus), soit ticket cleanup 1-ligne séparé - Docs d’archive citant `widgets/admin/…` : pas obligatoire de mettre à jour ; `docs/27_BRIEFING-FRONTEND.md` oui si encore listé