Files
petitspas/docs/tmp/155-suite-move-admin-panels-to-dashboard.md

8.1 KiB
Raw Permalink Blame History

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 (GestionnaireDashboardScreenUserManagementPanel).

Ce ticket termine loption 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/<panels & common partagés>
        ↓  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 darborescence (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 managmantoption : 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 dimports (à mettre à jour)

Screens

  • screens/administrateurs/admin_dashboardScreen.dartUserManagementPanel, ParametresPanel
  • screens/gestionnaire/gestionnaire_dashboard_screen.dartUserManagementPanel
  • screens/administrateurs/creation/admin_create.dartsuppression_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 dexé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

# Plus de panels partagés sous admin (seul AdminManagement attendu)
find frontend/lib/widgets/admin -name '*.dart'

# Plus dimports panels vers lancien 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 dacceptation

  • 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 dautres 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 darchive citant widgets/admin/… : pas obligatoire de mettre à jour ; docs/27_BRIEFING-FRONTEND.md oui si encore listé