7.1 KiB
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 l’onglet conditionnel « À valider » (apparaît/disparaît selon pending) par un onglet permanent « Dossiers » dans le dashboard admin/gestionnaire.
Quand on ouvre Dossiers :
- En haut — section Dossiers à valider (AM + familles pending)
- En dessous — liste de tous les dossiers (familles et AM), 1 ligne = 1
numero_dossier - Différenciation visuelle famille vs AM : couleur + icône
- 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 (aujourd’hui 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 l’ouverture « review » d’un 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 d’endpoint GET /dossiers liste aujourd’hui. Pour #153 :
- Construire la liste unifiée côté client à partir de
getParents()+getAssistantesMaternelles()(group bynumero_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
editwizard + ajout 2ᵉ parent → #135 - Suppressions → #154
- Famille N responsables → #139
- Changer les onglets Parents / AM / Enfants (restent)
Critères d’acceptation front
- Onglet Dossiers toujours visible (même 0 pending)
- Plus d’onglet 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/:numerodéjà là (#119)
Branche
feature/153-onglet-dossiers (depuis develop)