From 41f700607302aae1eb906a15e6a7eebc9842d9a0 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 24 Sep 2026 09:13:19 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20Epic=20C=20=E2=80=94=20absences=20back?= =?UTF-8?q?=20=E2=89=A0=20cartes=20(=C2=A732)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Découpage + mini-spec + décision projet. Co-authored-by: Julien Martin --- docs/24_DECISIONS-PROJET.md | 22 ++++++++-- docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md | 51 ++++++++++++++---------- docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md | 20 ++++++---- 3 files changed, 62 insertions(+), 31 deletions(-) diff --git a/docs/24_DECISIONS-PROJET.md b/docs/24_DECISIONS-PROJET.md index 1aee1c6..426643c 100644 --- a/docs/24_DECISIONS-PROJET.md +++ b/docs/24_DECISIONS-PROJET.md @@ -1,6 +1,6 @@ # 📋 Décisions Projet - P'titsPas -**Version** : 1.3 +**Version** : 1.4 **Date** : 24 Septembre 2026 **Auteur** : Équipe PtitsPas @@ -570,6 +570,19 @@ POST /repos/jmartin/petitspas/pulls/{index}/merge --- +### 32. Module Absences + Cartes (séparation back / collecte) + +**Décision** : ✅ **Back `absences_garde` = vérité métier** ; **Cartes = file d’attention / collecte** (plugin isolé). Types SYSTEM (absence, congé, arrêt) indéboulonnables ; types OPTIONNELS (sondages…) plus tard. Annulation = DELETE. `expire_at` dès V1. + +**Justification** : +- Premier vrai module d’interaction multi-acteurs +- Évite de stocker l’historique congés dans des bulles éphémères +- Portabilité / généricité des cartes sans coupler le métier garde + +**Flux V1** : BDD absences → API liste/CRUD → module Cartes SYSTEM → front bulles (séparé). + +--- + ## 📋 Résumé des décisions critiques | # | Décision | Statut | Impact | @@ -590,6 +603,7 @@ POST /repos/jmartin/petitspas/pulls/{index}/merge | 14 | Migration données | ❌ Rejeté | N/A | | 15 | Doc utilisateur | ⏸️ Phase 2 | Formation | | 31 | Logs Winston | ✅ Phase 1 | Monitoring | +| 32 | Absences back + Cartes collecte | ✅ 0.2.0 | Métier / archi | | 5bis | Familles recomposées — 2ᵉ compte v1.0.0 | ✅ v1.0.0 | Métier / dossier | --- @@ -601,11 +615,11 @@ POST /repos/jmartin/petitspas/pulls/{index}/merge | 25/11/2025 | 1.0 | Création du document - Toutes les décisions initiales | | 09/02/2026 | 1.1 | Configuration initiale : un seul panneau Paramètres (3 sections) dans le dashboard, plus de Setup Wizard dédié ; navigation bloquée jusqu'à sauvegarde | | 16/06/2026 | 1.2 | Décision 5bis — familles recomposées, contournement v1.0.0 ; lien doc [28](./28_EVOLUTION-FAMILLE-ET-RESPONSABLES.md) | -| 16/06/2026 | 1.3 | Précision 5bis — cible post-1.0.0 : parcours gestionnaire § 7.5 (#139), visibilité par enfant | +| 24/09/2026 | 1.4 | Décision 32 — Absences (`absences_garde`) ≠ Cartes ; Epic C recentré ; drop `evenements` | --- -**Dernière mise à jour** : 16 Juin 2026 -**Version** : 1.2 +**Dernière mise à jour** : 24 Septembre 2026 +**Version** : 1.4 **Statut** : ✅ Document validé diff --git a/docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md b/docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md index 80644a3..d519a14 100644 --- a/docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md +++ b/docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md @@ -1,9 +1,9 @@ # Découpage tickets — Quotidien parent / AM -> **Statut :** backlog Gitea créé (**milestone `0.2.0`**, **#165–#189**) — *création anticipée avant validation PO* ; **descriptions enrichies** ensuite à partir de la mini-spec / découpage. +> **Statut :** backlog Gitea **0.2.0** / épic [#165](https://git.ptits-pas.fr/jmartin/petitspas/issues/165) — architecture absences + cartes recentrée (sept. 2026). > **Réf. visuelle :** [maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png](./maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png) > **Mini-spec :** [31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md](./31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md) -> **Règle :** tickets **front** / **back** séparés · widgets partagés parent↔AM · **pas d’implé code** tant que le PO n’a pas validé le backlog. +> **Décision :** [24_DECISIONS-PROJET.md](./24_DECISIONS-PROJET.md) §32 (Cartes ≠ back Absences). ## Intention produit (rappel) @@ -96,22 +96,31 @@ Liste des enfants / foyers pour l’AM + contexte courant (symétrique A3). --- -## Epic C — Cartes (file du quotidien) +## Epic C — Absences + Cartes (file d’attention) -### C1 — [Back] Modèle + API cartes / événements de garde -Types V1 : absence enfant, congé AM, maladie AM (« arrêt »), sortie à valider. CRUD / transitions de statut ; liaison couple / agenda (hook minimal). Règles : absence enfant sans veto AM ; congé AM accepter/refuser (**1 parent suffit**) ; maladie AM accusé parent ; sortie **1 parent suffit**. Aucun doc médical stocké. +**Séparation :** back **`absences_garde`** = vérité métier (périodes / placement) ; module **Cartes** = collecte / bulles / workflow. Annulation = DELETE. `expire_at` dès le modèle. -### C2 — [Front] Flux de cartes colonne gauche (parent) -Liste scroll pastel (palette `assets/cards/` — 7 couleurs) ; ouverture détail ; actions valider / refuser / accusé selon type. Bouton **Déclarer une absence** (+ autres actions TBD plus tard). +### Back (ordre) -### C3 — [Front] Flux de cartes colonne gauche (AM) -Miroir : création congé / maladie / sortie ; lecture absences enfants du jour / à venir. +| Étape | Contenu | +|-------|---------| +| BDD | Table `absences_garde` + drop `evenements` | +| API | CRUD + **GET liste** (`placementId` \| tous les placements du user) | +| Cartes SYSTEM | Module `cards/` types S1–S3 (sans sondages V1) | +| Realtime | WS/SSE bulles | +| Purge TTL | Job `expire_at` / `purge_at` | -### C4 — [Front] Formulaire déclarer une absence (parent) -Saisie période (+ motif léger si besoin) → crée une carte côté AM. +### Front (après API — hors chantier back immédiat) -### C5 — [Front] Formulaires AM congé / maladie / sortie -Création des cartes correspondantes + ciblage enfants si sortie. +| Ticket | Contenu | +|--------|---------| +| Feed parent / AM | File d’attention bulles (widget partagé) | +| Modale « Ajouter une bulle » | Générique + absence parent / congé·arrêt AM | +| Agenda | Consommer GET liste (lignes) | + +### Hors V1 cartes + +Sondages / catalogue admin OPTIONNEL / sortie riche / desktop 2 panneaux (évolution séparée). --- @@ -185,13 +194,15 @@ Scripts / seeds : foyer 2 parents, AM, enfant(s), quelques cartes, posts blog, f ## Ordre de réalisation suggéré -1. **A1 → A2 → A3** (coquille + contexte parent) -2. **C1 → C2 / C4** (premières cartes utiles) -3. **D1 → D2 / D3** (blog central) -4. **E1 → E2 → E4** (messagerie AM) -5. **B1 → B2 → B3** + miroirs C3/C5/D3/E5 (AM) -6. **E3 / E5 / E6 / D4** (RPE) -7. **F1 → F2** + **G1** (nav, mobile, seeds) +1. **A1 → A2 → A3** (coquille + contexte parent) — *fait* +2. **BDD absences → API absences** puis **Cartes SYSTEM** (congés/absences/arrêt) +3. **Feed / modale bulles** (front) + agenda lignes +4. **D1 → D2 / D3** (blog) +5. **E1 → E2 → E4** (messagerie AM) +6. **B1 → B2 → B3** + miroirs AM +7. Realtime / purge TTL / RPE / F/G + +Desktop 2 panneaux (cartes prioritaires sur blog) = **évolution hors 0.2.0**. --- diff --git a/docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md b/docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md index 6405345..05d0d8a 100644 --- a/docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md +++ b/docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md @@ -61,14 +61,20 @@ Bandeau : **TdB** · **Agenda** · **Contrat** · menu user (recherche AM, param | **Mess. AM** | Chat foyer ↔ AM (style WhatsApp : texte, emoji, images) | | **Mess. RPE** | Privée par défaut ; ajout de participants pour médiation / conflit | -## 5. Règles métier V1 +## 5. Règles métier V1 (absences / congés) -| Type | Qui initie | Validation | -|------|------------|------------| -| Absence enfant | Parent | Pas de veto AM | -| Congé AM | AM | **1 parent** accepte ou refuse | -| Maladie AM | AM | Parent accuse réception (pas de doc médical in-app) | -| Sortie | AM / RPE | **1 parent** suffit (présence / absence) ; explication aussi via blog | +| Type | Qui initie | Validation / effet | +|------|------------|-------------------| +| Absence enfant | Parent | Pas de veto AM ; période **acceptée** tout de suite ; bulle info AM | +| Congé AM | AM | **1 parent** accepte **ou** refuse (+ motivation) → bounce AM (modif/renvoi ou DELETE) | +| Modification congé AM déjà accepté | AM | Même `id` absence ; re-validation parents ; dates actives = anciennes tant qu’en attente | +| Modification absence enfant | Parent | Update immédiat + bulle **ack** AM (OK) | +| Maladie AM | AM | Parent **ack** (« bien reçu ») ; **aucun** doc médical | +| Sortie / sondage | — | **Plus tard** (types optionnels) | + +**Stockage :** table `absences_garde` (1 ligne = période, `id_placement`, `expire_at`). Les **cartes** collectent ; elles ne sont pas la source de vérité. Annulation = DELETE. + +**Péremption cartes :** mémoire courte (`retention_days` / `purge_at`) — pas un historique de vie (≠ messagerie). - Mess. AM : les **2 parents** voient le **même** fil — **pas** de masquage V1 - Blog auteurs V1 : **AM** + **gestionnaire (RPE)** — parent auteur = plus tard