petitspas/docs/28_EVOLUTION-FAMILLE-ET-RESPONSABLES.md
Julien Martin 003fe6b762 feat(#131): fiches parent/AM éditable, placement AM↔enfant, statuts garde/sans_garde
Squash merge develop → master.

- Fiche parent éditable (co-parent, PATCH fiche, GET /parents)
- Fiche AM 3 onglets (PATCH fiche, rattacher/détacher enfants)
- Table enfants_assistantes_maternelles + enum garde/sans_garde
- Migration SQL + BDD.sql canonique
- Correctifs recette : @Get() parents, DTO fiche AM, fix NIR

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-11 22:49:57 +02:00

16 KiB
Raw Blame History

Évolution — Modèle famille, responsables légaux et dossiers

Version : 1.1
Date : 16 juin 2026
Statut : Réflexions produit / architecture — complément au CDC
Documents liés : EVOLUTIONS_CDC.md, 24_DECISIONS-PROJET.md, 23_LISTE-TICKETS.md


1. Objet de ce document

Ce document trace les réflexions menées en 2026 sur :

  • les limites du modèle « famille / numéro de dossier » en v1.0.0 ;
  • les contournements acceptés pour la release 1.0.0 ;
  • les évolutions envisagées post-1.0.0 (unités de dossier, affiliation parentenfant, terminologie).

Il ne remplace pas le CDC : il documente lécart assumé entre le modèle idéal long terme et ce qui est livré en 1.0.0, ainsi que la feuille de route pour aller plus loin.


2. Modèle actuel (v1.0.0) — rappel

Concept Implémentation
Responsable inscrit Rôle applicatif parent + entité parents
Second adulte Co-parent optionnel (id_co_parent) — un seul
Enfant Entité enfants
Affiliation Table enfants_parents (liens many-to-many)
Dossier famille dossier_famille + dossier_famille_enfants (motivation, etc.)
Numéro de dossier Format AAAA-NNNNNN, sur utilisateurs et parents
« Famille » calculée Graphe : co-parent ou enfants partagés (getFamilyUserIds)
Workflows Validation, refus, reprise : souvent par numero_dossier ou par ce graphe

Le numéro de dossier est aujourdhui une aide forte pour les cas simples (un couple, N enfants, une motivation), mais il tend à devenir lidentifiant métier de la famille — ce qui pose problème dans les cas complexes.


3. Limitation connue v1.0.0 — familles recomposées et multi-contextes

3.1 Exemple type (illustration)

Année 1 :  Responsable M + co-responsable A  →  enfant α
Année 2 :  Responsable M + co-responsable B  →  enfant β

Même personne M au centre, deux contextes de vie distincts. A nest pas parent de β ; B nest pas parent de α.

3.2 Autres cas couverts par la même limitation

Les exemples « maman / papa » sont illustratifs. La limitation sapplique à toute configuration :

Configuration Même règle
Couple HH ou FF Oui
Père avec deux partenaires et deux enfants (même ville, écarts dâge courts) Oui
Grand-parent en tutelle ou tuteur légal Oui (voir § 5)
Recomposition, demi-fratrie, garde alternée complexe Oui

3.3 Pourquoi le modèle casse

  1. Un numero_dossier par user — M ne peut pas appartenir proprement à deux unités.
  2. Un seul co-parent par fiche parents.
  3. Graphe famille trop large — M liée à A (via α) et à B (via β) → A, B et M peuvent être fusionnés en une seule « famille » pour validation/refus/reprise.
  4. dossier_famille — une motivation / une ancre par numéro, pas deux contextes pour la même personne.

4. Décision v1.0.0 — contournement opérationnel

4.1 Principe

Le numéro de dossier reste la norme pour les cas simples, pas une obligation absolue.
Pour les cas trop complexes, le gestionnaire compose manuellement (création admin, rattachements) ou applique le contournement ci-dessous.

4.2 Contournement accepté pour la 1.0.0

Créer un second compte avec une adresse e-mail distincte et un second dossier (second numero_dossier).

Dossier Compte Co-responsable Enfant
1 m.personne@… A α
2 m.personne.famille2@… (ou alias) B β

Conséquences assumées :

  • Une même personne physique peut avoir deux identités dans lapp.
  • Pas de vue unifiée « une personne, deux contextes » en v1.0.0.
  • Procédure interne gestionnaire recommandée (note « même personne physique »).
  • Emails distincts volontaires (alias, +tag, boîte dédiée selon infra mail).

4.3 Nuance — inscription publique

Si le dossier 1 existe déjà avec lemail de P (titulaire ou co-parent), une 2ᵉ inscription publique où lon saisit le même email comme co-parent est bloquée (email déjà utilisé).

Le 2ᵉ dossier passe donc surtout par :

  • création / composition par le gestionnaire (tickets admin #129+), ou
  • 2ᵉ email dès le départ pour la même personne physique.

4.4 Piste cible — parcours gestionnaire « famille complexe » (réflexion juin 2026)

Le contournement § 4.2 reste valable en v1.0.0. La solution produit visée pour les cas complexes est différente :

Seul le gestionnaire dispose dun parcours de création dédié permettant de constituer une configuration avec plus de deux responsables (parents, co-parents, tuteurs…) sans se limiter au seul champ co_parent, en sappuyant sur enfants_parents comme vérité de visibilité.

Exemple M / A / B / α / β :

Compte Enfants visibles / rattachés
M (un seul compte, un email) α et β
A α uniquement
B β uniquement
        α ─── M ─── β
        │         │
        A         B
  • M voit et gère ses deux enfants sur le même compte (plus besoin dun 2ᵉ email pour M).
  • A et B ne voient que lenfant qui leur est rattaché via enfants_parents — pas de fusion « famille » qui mélange A et B.
  • Le parcours nest pas proposé à linscription publique (trop error-prone) : réservé au gestionnaire (#129+ ou ticket dédié « famille complexe »).

Conséquences techniques (post-1.0.0) :

  1. Visibilité : filtrer listes, fiches et actions parent par liens enfants_parents, pas par getFamilyUserIds / co-parent.
  2. Workflows (validation, refus, reprise) : périmètre par enfant ou soumission, pas par graphe familial élargi.
  3. co_parent : reste utile pour le cas simple (couple + N enfants communs) ; insuffisant seul pour les cas complexes — le gestionnaire compose les liens enfant par enfant.
  4. Numéro de dossier : optionnel ou secondaire ; peut rester sur M ou sur une « unité » admin, sans imposer un numéro par co-responsable.

Détail : § 7.5.


5. Terminologie — « parent » aujourdhui, qualification demain

5.1 v1.0.0

  • Rôle technique : parent pour tout responsable inscrit (y compris tuteur, grand-parent tutrice, etc.).
  • UI : « Parent 1 », « co-parent », parfois exemples maman/papa — pas de statut juridique distinct.

5.2 Évolution post-1.0.0 (piste)

Séparer deux niveaux :

Niveau Évolution
Rôle applicatif Conserver parent = « responsable du dossier » (auth, API)
Qualification métier Nouveau champ, ex. qualite_responsable / lien_avec_enfant

Valeurs possibles (exemples) : parent biologique ou adoptif, co-parent, tuteur légal, grand-parent exerçant la garde, autre responsable légal.

Emplacement recommandé : sur le lien enfants_parents (par enfant), pas seulement sur le user global.

UI :

  • Libellés neutres : « Responsable 1 / 2 », « 2ᵉ responsable » ;
  • Combobox pour qualifier le lien (admin + éventuellement inscription).

6. Évolutions UI / fonctionnelles liées (backlog)

Réflexions dashboard admin / gestionnaire (complément CDC §4.5.24.5.3).

Statut implémentation (juin 2026) : §6.1 et §6.2 en cours de livraison (tickets #130#131, #115#116, #137#138). §6.3 reporté post-1.0.0 (#129).

6.1 Fiche parent (#131)

  • Modale éditable dès louverture (pas lecture seule + « Modifier » factice).
  • Retirer lID UUID ; option : n° de dossier en lecture seule.
  • Statut en combobox (règles métier à cadrer vs validation/refus #110).
  • Bas de modale :
    • Nombre d'enfants : N (lecture seule) ;
    • Liste des prénoms/noms (cadre) — consultation, clic → fiche enfant (#138).

6.2 Affiliation parent ↔ enfant (#115, #116, #138)

  • Vérité métier : enfants_parents.
  • Modifier laffiliation ≠ modifier le téléphone : gestion des liens (détacher / rattacher), avec garde-fous :
    • ne pas supprimer lenfant pour retirer un lien ;
    • au moins un responsable par enfant ;
    • prudence sur fusion « famille » et co-parents.
  • Création enfant : prioritaire depuis fiche parent (contexte famille) ; onglet Enfants (#137) pour vue globale + rattachement.

6.3 Création admin sans numéro (tickets #129+)

Le gestionnaire doit pouvoir tout créer depuis linterface ; le numéro reste généré si utile, optionnel si le cas est trop complexe — objectif post-1.0.0 (unité de dossier).


7. Évolution structurelle post-1.0.0 — « unité de dossier »

7.1 Principe cible

Aujourdhui Cible
numero_dossier = clé de la famille Liens parent↔enfant = vérité
Famille déduite du graphe Unité de dossier = regroupement optionnel
Un numéro par inscription Numéro optionnel ; plusieurs unités par personne possibles

7.2 Exemple cible (cas M / A / B) — deux approches

Approche A — unités de dossier séparées (piste initiale § 7) :

Unité 1 : numero 2026-000021 — M, A, α
Unité 2 : sans numéro (ou 2026-000089) — M, B, β

M appartient à deux unités ; A et B ne partagent pas la même unité. Peut impliquer deux contextes de connexion ou une agrégation côté M.

Approche B — parcours gestionnaire « famille complexe » (préférée, § 4.4) :

Compte M  →  enfants α, β
Compte A  →  enfant α
Compte B  →  enfant β
(liens enfants_parents ; pas de fusion A↔B)
  • Un seul compte pour M avec les deux enfants.
  • A et B isolés sur leur enfant respectif.
  • Création uniquement par le gestionnaire ; inscription publique inchangée (couple + co-parent classique).

Les deux approches supposent de cesser de déduire une « famille » unique pour les workflows lorsque les liens enfant par enfant divergent. Lapproche B maximise lUX du responsable central (M) sans dupliquer son identité.

7.5 Parcours gestionnaire — création « famille complexe »

7.5.1 Objectif

Permettre au gestionnaire de monter un dossier où :

  • N responsables (≥ 2, parents ou tuteurs) sont créés ou rattachés ;
  • chaque enfant est lié explicitement à un ou plusieurs responsables via enfants_parents ;
  • un responsable (ex. M) peut être lié à plusieurs enfants dont les autres responsables (A, B) ne partagent pas la garde.

7.5.2 Règles produit

Règle Détail
Accès Parcours gestionnaire uniquement (dashboard), pas inscription publique
Responsables Création ou rattachement de comptes parent ; qualification future sur le lien (§ 5)
Visibilité Chaque responsable ne voit que ses enfants (liens enfants_parents)
Co-parent UI Ne pas forcer « Parent 1 + co-parent unique » ; composition libre côté staff
Garde-fous Au moins un responsable par enfant ; pas de suppression enfant pour retirer un lien

7.5.3 Esquisse du parcours UI (gestionnaire)

  1. Créer ou identifier le responsable principal (ex. M).
  2. Ajouter dautres responsables (A, B, tuteur…) — comptes distincts.
  3. Créer les enfants (α, β…) et, pour chaque enfant, cocher les responsables rattachés.
  4. Motivation / dossier : texte global ou par enfant (à cadrer).
  5. Validation : par soumission ou par enfant, sans valider « toute la famille » dun coup si A et B ne doivent pas être fusionnés.

7.5.4 Impacts techniques majeurs

Domaine Changement
Auth / API parent GET enfants, dashboard parent : filtre enfants_parents pour lutilisateur courant
getFamilyUserIds Ne plus utiliser pour visibilité parent ; réservé au cas simple ou deprecated progressivement
Validation / refus Périmètre enfant ou responsable, pas fusion A+B via graphe
Reprise (#112) Token / périmètre = enfants liés au compte refusé, pas toute la composante connexe
Admin (#115#138) Prérequis : rattachement/détachement déjà en place ; ce parcours compose ces briques

7.5.5 Lien avec v1.0.0

Phase Comportement
v1.0.0 Contournement § 4.2 (2ᵉ email M) + composition manuelle gestionnaire (#115#138)
Post-1.0.0 Parcours § 7.5 + refonte visibilité / workflows

7.3 Impacts workflows

Flux Adaptation future
Validation / refus (#110) Par enfant / soumission, pas par graphe global
Reprise (#112) Périmètre = enfants liés au compte, pas composante connexe
Liste « à valider » Par soumission ou par enfant
Recherche gestionnaire Numéro ou nom ou enfant
Visibilité parent Uniquement enfants via enfants_parents (approche B § 7.2)

7.4 Migration

  • Court terme : contournement § 4 + tickets admin.
  • Moyen terme : table unité de dossier, numero_dossier nullable.
  • Long terme : workflows branchés sur lunité.
  • Dossiers existants (couple + enfants) : une unité = un numéro → comportement actuel préservé.

8. Tickets Gitea associés

Ticket Sujet
#110 Refus dossier (token reprise) — livré
#112 Reprise après refus — livré
#115 / #116 Rattachement parent — backend / front
#129+ Création dossier admin (parent / AM)
#131 Fiche parent éditable (dashboard)
#137 Onglet Enfants — liste globale
#138 Fiche enfant + liste dans fiche parent
(à créer) Epic « Unité de dossier / numéro optionnel »
#139 Parcours gestionnaire « famille complexe » (§ 7.5) — N responsables, visibilité par enfant
(à créer) Qualification responsable légal (combobox sur lien enfant)

9. Formulation type — release notes / doc gestionnaire (v1.0.0)

Familles recomposées ou responsabilités multiples
Une même personne ne peut pas gérer proprement deux unités familiales distinctes (recompositions, plusieurs co-responsables successifs, tuteur/GP pour plusieurs contextes) avec un seul compte.
Contournement v1.0.0 : second compte avec email distinct et second numéro de dossier.
Sapplique à tous les responsables inscrits (couples HH/FF, tuteurs, grands-parents, etc.).
Évolution post-1.0.0 : parcours gestionnaire « famille complexe » (un compte M, enfants α+β ; A et B limités à leur enfant) ; visibilité par enfants_parents ; workflows sans fusion graphe familial.


10. Historique des mises à jour

Date Auteur Modification
2026-06-16 Équipe / session produit Création — synthèse réflexions famille, tutelle, v1.0.0 vs post-1.0.0
2026-06-16 Implémentation ch.6 Back : PATCH /parents/:id/fiche, attach/detach enfant. Front : modale parent éditable, onglet Enfants, fiche enfant
2026-06-16 Réflexion produit § 4.4 / § 7.5 — parcours gestionnaire famille complexe : M un compte (α+β), A/B visibilité restreinte par enfant

Ce document sera enrichi au fil des décisions. Pour les décisions formelles archivées, voir aussi 24_DECISIONS-PROJET.md.