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>
4.5 KiB
#131 — Fiche AM éditable + affiliation enfants (note front → back)
Ticket : #131 (partie AM, doc 28_EVOLUTION-FAMILLE-ET-RESPONSABLES.md §6.1)
Date : 2026-06-01
Statut front : modale livrée (2 onglets) — API affiliation AM↔enfant à implémenter
1. Comportement UI (front)
Modale AdminAmEditModal — même shell que la fiche parent (~930 px) :
| Onglet | Contenu |
|---|---|
| Identité & professionnel | IdentityBlock éditable + grille pro (agrément, ville résidence, capacité, places, NIR/agrément date en lecture seule, biographie, switch disponible) + gélule statut |
| Enfants accueillis | Liste cartes enfants (réutilise AdminChildrenAffiliationPanel / AdminEnfantUserCard) + rattacher / détacher |
En-tête : prénom nom · sous-titre Zone · Agrément · Dossier.
2. Endpoints consommés
Déjà existants (partiels)
| Méthode | Route | Usage |
|---|---|---|
GET |
/api/v1/assistantes-maternelles |
Liste AM |
GET |
/api/v1/assistantes-maternelles/:userId |
Détail (403 possible pour administrateur → fallback liste) |
PATCH |
/api/v1/users/:userId |
Identité + statut (admin / super_admin uniquement) |
PATCH |
/api/v1/assistantes-maternelles/:userId |
Champs pro (gestionnaire / super_admin) |
À créer (recommandé — miroir parent #131 / #115)
| Méthode | Route | Rôle |
|---|---|---|
PATCH |
/api/v1/assistantes-maternelles/:userId/fiche |
Mise à jour unifiée identité + pro + statut (super_admin, gestionnaire, administrateur) |
POST |
/api/v1/assistantes-maternelles/:userId/enfants/:enfantId |
Rattacher un enfant |
DELETE |
/api/v1/assistantes-maternelles/:userId/enfants/:enfantId |
Détacher un enfant |
GET |
/api/v1/assistantes-maternelles/:userId |
Inclure amChildren[] (relation enfant) |
Le front appelle déjà ces routes ; en l’absence de PATCH …/fiche, il tente un fallback PATCH users + PATCH assistantes-maternelles (échoue selon le rôle connecté).
3. Modèle de données affiliation AM ↔ enfant
À définir côté BDD (pas de table dédiée aujourd’hui, contrairement à enfants_parents) :
Proposition alignée parent :
-- Piste : enfants_assistantes_maternelles
CREATE TABLE enfants_assistantes_maternelles (
id_am UUID NOT NULL REFERENCES utilisateurs(id) ON DELETE CASCADE,
id_enfant UUID NOT NULL REFERENCES enfants(id) ON DELETE CASCADE,
PRIMARY KEY (id_am, id_enfant)
);
Réponse API attendue sur GET /assistantes-maternelles/:id :
{
"user_id": "uuid-am",
"user": { "id": "…", "prenom": "Claire", "nom": "MARTIN", "statut": "actif" },
"approval_number": "AGR-2024-12345",
"residence_city": "Bezons",
"max_children": 4,
"places_available": 2,
"available": true,
"amChildren": [
{
"child": {
"id": "uuid-enfant",
"first_name": "Emma",
"last_name": "MARTIN",
"status": "actif",
"birth_date": "2023-02-15"
}
}
]
}
Le front parse amChildren / am_children / assistanteChildren (même logique que parentChildren).
4. Body PATCH …/fiche suggéré
{
"nom": "MARTIN",
"prenom": "Claire",
"email": "claire@example.com",
"telephone": "0612345678",
"adresse": "5 place Bellecour",
"ville": "Lyon",
"code_postal": "69002",
"statut": "actif",
"approval_number": "AGR-2024-12345",
"residence_city": "Lyon",
"max_children": 4,
"places_available": 2,
"biography": "…",
"available": true
}
NIR et date d’agrément : lecture seule dans la modale (modification hors périmètre admin v1).
5. Fichiers front concernés
| Fichier | Rôle |
|---|---|
frontend/lib/widgets/admin/common/admin_am_edit_modal.dart |
Modale 2 onglets |
frontend/lib/widgets/admin/common/admin_children_affiliation_panel.dart |
Liste enfants partagée parent/AM |
frontend/lib/widgets/admin/common/admin_status_capsule.dart |
Gélule statut partagée |
frontend/lib/models/assistante_maternelle_model.dart |
Parse champs pro + amChildren |
frontend/lib/services/user_service.dart |
getAssistanteMaternelle, updateAmFiche, attachEnfantToAm, detachEnfantFromAm |
frontend/lib/widgets/admin/assistante_maternelle_management_widget.dart |
Ouverture modale au clic Modifier |
6. Références
- Fiche parent :
PATCH /parents/:id/fiche,POST|DELETE /parents/:id/enfants/:enfantId - Ticket Gitea #131, #115
docs/archive/temporaires/TEMP_131-back-fiche-parent-co-parent.md