Files
petitspas/docs/tmp/153-mini-spec-front-dossiers.md
jmartinandCursor 84e46162fd feat(#153): onglet permanent Dossiers — liste unifiée + pending.
Remplace l’onglet conditionnel « À valider » par un onglet Dossiers
(pending en haut, familles + AM en dessous), avec GET /dossiers,
recherche, et libellés pending NOM Prénom.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 19:41:44 +02:00

7.1 KiB
Raw Permalink Blame History

Mini-spec front — Onglet permanent « Dossiers » (#153)

Branche Git (front + back) : feature/153-onglet-dossiers
Ticket Gitea : #153 (ticket normal, plus epic)

Suite prévue : #135 = au clic, mode édition wizard + ajout 2ᵉ parent.
#153 = onglet + listes + navigation / validation pending. Pas de création, pas d’édition complète.


Contexte / objectif

Remplacer longlet conditionnel « À valider » (apparaît/disparaît selon pending) par un onglet permanent « Dossiers » dans le dashboard admin/gestionnaire.

Quand on ouvre Dossiers :

  1. En haut — section Dossiers à valider (AM + familles pending)
  2. En dessous — liste de tous les dossiers (familles et AM), 1 ligne = 1 numero_dossier
  3. Différenciation visuelle famille vs AM : couleur + icône
  4. Barre de recherche (n° dossier, nom, email…)

Pas de bouton « Créer un dossier » ici (création via + Parents #129 / + Asmat #156).


UX cible

Onglets dashboard (UserManagementPanel)

Avant (#107) Après (#153)
« À valider » conditionnel si pending « Dossiers » toujours visible (admin + gestionnaire)
Contenu = seulement pending Pending en haut + liste complète en bas

Ordre suggéré des onglets :

Dossiers | Parents | Enfants | Assistantes maternelles | Gestionnaires | (Administrateurs)

Section haute — À valider

  • Réutiliser / adapter PendingValidationWidget (ou extraire la liste dans un sous-widget).
  • Sources déjà branchées :
    • UserService.getPendingUsers(role: 'assistante_maternelle')
    • UserService.getPendingFamilies()
  • Clic ligne pending → ValidationDossierModal / wizards .review (inchangé).
  • Si section vide : ne pas afficher de gros vide ; masquer la section ou message court « Aucun dossier en attente ».

Section basse — Tous les dossiers

1 ligne = 1 dossier (numero_dossier), type :

Type Libellé UI Couleur (suggestion)
famille Famille / Parents teinte existante parents (ex. violet / rose dashboard)
assistante_maternelle AM teinte existante AM (ex. teal / bleu)

Colonnes / infos utiles (cartes style AdminUserCard ou lignes type pending) :

  • n° dossier
  • type (pastille couleur + icône)
  • libellé (noms parents ou AM)
  • email(s) principal(aux)
  • statut user / dossier si dispo (actif, en_attente, …)
  • date utile si dispo

Déduplication : un foyer (pivot + co-parent) = une ligne famille (même numero_dossier). Idem AM.

Recherche

  • La search bar du panel (aujourdhui désactivée / hint « pas de recherche » sur À valider) doit filtrer la liste unifiée (et idéalement aussi le pending affiché).
  • Critères minimum : numero_dossier, nom, prénom, email.
  • Harmoniser le hint : Rechercher un dossier (n°, nom, email)…

État vide liste complète

Aide optionnelle : « Pour créer un dossier → onglet Parents (+ Parents) ou Assistantes maternelles (+ Asmat) ».

Clic sur un dossier de la liste complète (#153)

Cas Comportement #153
Pending Ouvrir validation (review) — déjà en place
Dossier actif / non pending Ouvrir consultation via GET /dossiers/:numeroDossier (UserService.getDossierByNumero) en lecture / review si possible sans save édition

Ne pas implémenter le mode edit ni le switch 2ᵉ parent → #135.

Si louverture « review » dun dossier actif est trop lourde pour ce ticket : clic peut temporairement no-op / snackbar « Édition dossier : prochainement (#135) »à éviter si getDossierByNumero + wizard review marche déjà pour les deux types.


Données / APIs (front)

Déjà disponibles (préférer composer côté front pour #153)

Besoin API / service
Pending AM getPendingUsers(role: assistante_maternelle)
Pending familles getPendingFamilies()
Parents (avec numero_dossier) getParents()
AM (avec numero_dossier) getAssistantesMaternelles()
Détail unifié getDossierByNumero(numero)GET /dossiers/:numeroDossier

Pas dendpoint GET /dossiers liste aujourdhui. Pour #153 :

  • Construire la liste unifiée côté client à partir de getParents() + getAssistantesMaternelles() (group by numero_dossier).
  • Exclure ou marquer les pending déjà dans la section haute (éviter doublons visuels, ou les laisser dans les deux avec badge « à valider » — préférence : pending uniquement en haut ; liste basse = tous hors pending ou tous avec badge ; choisir une règle claire et documenter dans le PR).

Règle recommandée :

  • Haut = pending only
  • Bas = tous les dossiers ayant un numero_dossier (y compris pending) OU bas = non-pending only
    Recommandation produit : bas = tous (vision complète), pending aussi en haut pour action rapide. Si doublon gênant : bas = non-pending only.

Si le back ajoute plus tard GET /dossiers

Brancher UserService.getDossiers() — hors scope bloquant #153 front si composition client OK.


Fichiers front probables

Fichier Rôle
frontend/lib/widgets/admin/user_management_panel.dart Onglet permanent Dossiers ; retirer logique conditionnelle À valider ; search sur cet onglet
frontend/lib/widgets/admin/pending_validation_widget.dart Réemploi section haute (ou refactor léger)
Nouveau …/dossiers_management_widget.dart (nom libre) Shell onglet : pending + liste unifiée + refresh
Nouveau modèle léger DossierListItem (type, numero, libelle, emails, statut…) Mapping parents/AM → ligne
user_service.dart / api_config.dart Seulement si helper getDossiersUnified() côté client (pas forcément nouvel endpoint)
validation_dossier_modal.dart Réemploi ouverture pending / détail

Réutiliser look & feel cartes / hover « Ouvrir » de _PendingValidationRow / AdminUserCard.


Hors scope (#153)

  • Bouton créer dossier
  • Mode edit wizard + ajout 2ᵉ parent → #135
  • Suppressions → #154
  • Famille N responsables → #139
  • Changer les onglets Parents / AM / Enfants (restent)

Critères dacceptation front

  • Onglet Dossiers toujours visible (même 0 pending)
  • Plus donglet conditionnel « À valider »
  • Section haute pending si non vide ; validation au clic OK
  • Liste unifiée familles + AM en dessous ; 1 ligne / numero_dossier
  • Couleur + icône différencient famille / AM
  • Recherche filtre (n° + nom + email minimum)
  • Aucun bouton créer dans cet onglet
  • Pas de régression validation pending (valider / refuser)

Back (info — Cursor back séparé si besoin)

  • Liste unifiée : pas bloquante si composition front
  • Optionnel : GET /api/v1/dossiers (liste) pour perf / pagination plus tard
  • GET /dossiers/:numero déjà là (#119)

Branche

feature/153-onglet-dossiers (depuis develop)