[{"id":304,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/196","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/196","number":196,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] Purge TTL absences en attente/refusées + cartes expirées","body":"## Contexte\n\nEpic [#165](https://git.ptits-pas.fr/jmartin/petitspas/issues/165). \nÉviter de polluer la base : `expire_at` / `purge_at` déjà prévus au modèle.\n\n## Règles indicatives (configurables)\n\n- `en_attente` ≈ **15 j** → DELETE absence + cartes liées\n- `refuse` ≈ **7 j** → DELETE si AM n’a pas repris\n- Cartes « traitées » → DELETE après `retention_days` (absence `accepte` **conservée**)\n\n## À faire\n\n- Job scheduler (cron) de purge\n- (Optionnel / ticket lié) relances push parents avant expiration\n\n## Dépend de\n\n- BDD + API absences + module Cartes (colonnes présentes)\n","ref":"","assets":[],"labels":[{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-24T09:02:35Z","updated_at":"2026-09-24T09:02:53Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":0},{"id":303,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/195","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/195","number":195,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] Realtime module Cartes (WS/SSE)","body":"## Contexte\n\nEpic [#165](https://git.ptits-pas.fr/jmartin/petitspas/issues/165). \nDiffusion quasi-instantanée des bulles (création congé → parents ; refus → AM ; agrégats plus tard).\n\n## À faire\n\n- Gateway dans le module Cartes (WS ou SSE)\n- Auth JWT ; rooms user / card\n- Events : `card.created`, `card.updated`, `response.added`, …\n\n## Dépend de\n\n- Module Cartes SYSTEM\n\n## Hors scope\n\n- Push mobile / relances (autre ticket)\n","ref":"","assets":[],"labels":[{"id":59,"name":"api","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/59"},{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-24T09:02:35Z","updated_at":"2026-09-24T09:02:53Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":0},{"id":300,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/192","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/192","number":192,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front][Évolution] Desktop — superposer cartes et blog (2 panneaux, priorité cartes)","body":"## Contexte\n\nSur desktop, la colonne **cartes / bulles** risque d être souvent peu remplie (usage ponctuel : congés, absences, validations). Blog et messagerie sont plus continus.\n\n## Proposition (évolution — hors 0.2.0)\n\nLayout desktop en **2 panneaux** :\n- un côté : **messagerie**\n- l autre : **cartes OU blog** (superposés)\n - s il reste des bulles actionnables / non purgées → **priorité cartes**\n - sinon → **blog** seul\n\n**Mobile** : conserver les **3 slides** (cartes | blog | messagerie) comme maquetté actuellement.\n\n## Hors scope immédiat\n\nNe pas toucher à la coquille 3 colonnes livrée en 0.2.0 / Epic A. Ce ticket est un **backlog futur** ; s il devient obsolète → fermer.\n\n## Labels\n\nenhancement, frontend, ux — **pas** de milestone 0.2.0, **pas** de label v0.2.0.\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"}],"milestone":null,"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-24T08:59:29Z","updated_at":"2026-09-24T09:02:53Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":0},{"id":297,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/189","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/189","number":189,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] Jeu de données peuplé quotidien (seeds)","body":"## Contexte (G1)\nPour démontrer la sync multi-écrans sans saisie manuelle lourde.\n\n## À faire\nScripts / seeds : un foyer avec **2 parents**, une AM, un ou plusieurs enfants, rattachements ; quelques **cartes** (absence, congé à valider, sortie) ; **posts blog** AM et RPE ; fils **Mess. AM** et éventuellement RPE. Documenter comptes / mots de passe de test (ou lier `docs/test-data/`).\n\n## Done when\nAvec les seeds, on peut enchaîner les critères démo de l’epic #165 / mini-spec §7 sur 2 supports.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:54Z","updated_at":"2026-09-23T15:11:32Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":296,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/188","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/188","number":188,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Adaptation mobile — swipe 3 panneaux","body":"## Contexte (F2)\nAnticipation mobile : les 3 colonnes PC deviennent 3 panneaux swipables.\n\n## À faire\nSur téléphone : swipe entre **Blog** (défaut proposé) ↔ **Cartes** (+ couple) ↔ **Messagerie**. La navigation TdB / Agenda / Contrat reste hors swipe (boutons / menu). Si Contrat est trop lourd sur mobile, limitation V1 acceptable (« mieux sur ordinateur ») — documenter le choix UI.\n\n## Done when\nSur viewport étroit, on bascule les 3 panneaux au doigt / geste sans perdre le bandeau métier.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:53Z","updated_at":"2026-09-23T15:11:32Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":295,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/187","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/187","number":187,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Navigation Agenda / Contrat (stubs)","body":"## Contexte (F1)\nLe bandeau expose Agenda et Contrat, mais le **contenu riche** est hors jalon 0.2.0 (Contrat = module valué plus tard ; Agenda calendrier = plus tard). Il faut quand même des cibles de navigation.\n\n## À faire\nRoutes / écrans **placeholder** (ou squelette) Agenda et Contrat en pleine page, accessibles depuis le bandeau, message clair « à venir » / squelette. Ne pas implémenter Pajemploi, CP, grille calendrier riche ici.\n\n## Done when\nClic Agenda et Contrat depuis le TdB ouvre une page dédiée sans casser la nav, sans faux air de fonctionnalité terminée.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:53Z","updated_at":"2026-09-23T21:40:40Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":294,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/186","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/186","number":186,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Mess. RPE côté gestionnaire (entrée minimale)","body":"## Contexte (E6)\nEntrée gestionnaire pour la médiation RPE.\n\n## À faire\nUI minimale staff : liste des fils RPE, réponse, **ajout de participants**. Réutiliser le widget messagerie autant que possible.\n\n## Done when\nLe gestionnaire répond et invite parent/AM dans un fil de médiation.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":55,"name":"gestionnaire","exclusive":false,"is_archived":false,"color":"ff9800","description":"Gestionnaire","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/55"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:52Z","updated_at":"2026-09-23T15:11:31Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":293,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/185","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/185","number":185,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Colonne messagerie AM (onglets équivalents)","body":"## Contexte (E5)\nColonne messagerie AM.\n\n## À faire\n**Réutiliser** le widget #184. Mess. AM = foyer/couple courant ; Mess. RPE = canal relais. Pas de second chat recopié.\n\n## Done when\nL’AM échange avec le foyer courant et accède au canal RPE dans la même UI.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:52Z","updated_at":"2026-09-23T15:11:31Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":292,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/184","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/184","number":184,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Colonne messagerie parent (Mess. AM | Mess. RPE)","body":"## Contexte (E4)\nColonne droite TdB parent.\n\n## À faire\nWidget **messagerie** réutilisable : onglets **Mess. AM** (sélectionné par défaut) | **Mess. RPE** ; zone de conversation ; champ saisie + envoi ; pièces jointes images (usage conversationnel, pas un substitut blog). Branché couple actif + APIs #182/#183.\n\n## Widgets partagés\nMême brique pour #185 et #186.\n\n## Done when\nLe parent chat en Mess. AM et peut basculer vers Mess. RPE sans quitter la colonne.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:51Z","updated_at":"2026-09-23T21:40:40Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":291,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/183","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/183","number":183,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] Mess. RPE — privée + ajout de participants","body":"## Contexte (E3)\nMessagerie RPE = médiation / conflit, **pas** le canal du quotidien (l’UI par défaut reste Mess. AM).\n\n## À faire\nFil **privé 1↔1** par défaut (ex. parent↔gestionnaire ou AM↔gestionnaire). L’initiateur peut **ajouter** des participants (2ᵉ parent, AM, parent…) pour résoudre un problème. Droits et invitations clairs côté API.\n\n## Done when\nOn ouvre un fil RPE privé, on ajoute un tiers, tous les participants voient le fil élargi.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":59,"name":"api","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/59"},{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":55,"name":"gestionnaire","exclusive":false,"is_archived":false,"color":"ff9800","description":"Gestionnaire","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/55"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:51Z","updated_at":"2026-09-23T15:11:30Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":290,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/182","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/182","number":182,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] Mess. AM — conversation foyer ↔ AM","body":"## Contexte (E2)\nCanal quotidien foyer ↔ assistante maternelle.\n\n## À faire\nUne conversation **par couple/foyer** liée au contexte de garde. Les **deux parents** déclarés voient **exactement le même** fil (pas de masquage V1). Brancher sur le socle #181.\n\n## Done when\nParent1, parent2 et AM partagent la même conversation ; un message d’un côté apparaît de l’autre.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":59,"name":"api","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/59"},{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:50Z","updated_at":"2026-09-23T15:11:30Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":289,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/181","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/181","number":181,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] Socle messagerie (lib / protocole) + API","body":"## Contexte (E1)\nSocle technique messagerie avant les cas d’usage AM/RPE. Style attendu type WhatsApp (texte, emoji, images) via **brique existante** si pertinent — documenter le choix.\n\n## À faire\nChoisir lib/protocole (noter ADR court dans le ticket ou `docs/24_…`). Implémenter conversations, participants, messages, PJ images. Prévoir **temps réel** (WebSocket ou équivalent) pour l’effet multi-écrans ; polling documenté OK en fallback V1.\n\n## Hors scope\nMasquage de messages / fils « privés » entre un parent et l’AM (plus tard).\n\n## Done when\nDécision technique écrite + API de base permettant d’envoyer/recevoir un message avec image entre deux comptes de test.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":59,"name":"api","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/59"},{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:50Z","updated_at":"2026-09-23T15:11:30Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":288,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/180","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/180","number":180,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Publication blog gestionnaire (entrée staff)","body":"## Contexte (D4)\nLe gestionnaire RPE publie des actus / annonces institutionnelles.\n\n## À faire\nPoint d’entrée **minimal** dans le dashboard staff (gestionnaire) pour composer une annonce (réutiliser le composeur blog). Publication visible sur les TdB parent/AM concernés. Pas besoin d’un CMS complet V1.\n\n## Done when\nUn gestionnaire publie ; le post apparaît avec badge/auteur RPE distinct côté parent/AM.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":55,"name":"gestionnaire","exclusive":false,"is_archived":false,"color":"ff9800","description":"Gestionnaire","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/55"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:49Z","updated_at":"2026-09-23T15:11:29Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":287,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/179","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/179","number":179,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Colonne Blog AM — lecture + écrire un post","body":"## Contexte (D3)\nCôté AM : lire le fil et publier l’activité du jour (typiquement le soir, ~5 min, pas d’obligation quotidienne).\n\n## À faire\n**Réutiliser** le widget fil (#178). Ajouter le **composeur** partagé : texte + photos + **sélection des enfants concernés** (cocher/décocher) puis publier via #177.\n\n## Done when\nL’AM publie un post avec photo ; le parent le voit en colonne blog.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:49Z","updated_at":"2026-09-23T15:11:29Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":286,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/178","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/178","number":178,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Colonne Blog parent (affichage défaut)","body":"## Contexte (D2)\nColonne milieu du TdB parent : affichage **par défaut** à l’arrivée.\n\n## À faire\nWidget **fil blog** : cartes post avec auteur **visuellement distinct** AM vs RPE, titre/texte, miniatures photos. Pas de bouton « Écrire un post » pour le parent en V1 (reporté). Branché sur le couple actif. Look pastel maquette v4.\n\n## Widgets partagés\nBrique fil réutilisée par AM (#179) et staff (#180 pour la lecture/cible).\n\n## Done when\nLe parent ouvre le TdB sur le blog et lit les posts AM/RPE du contexte.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:48Z","updated_at":"2026-09-23T21:40:40Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":285,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/177","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/177","number":177,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] Modèle + API blog (posts + médias)","body":"## Contexte (D1)\nLe blog est la **colonne centrale indispensable** (plus un module optionnel CDC §9). Canal distinct des cartes et de la messagerie.\n\n## À faire\nModèle posts + médias (photos) : auteurs **AM** et **gestionnaire (RPE)** en V1 (pas parent). Texte + pièces jointes images ; ciblage enfants pour un post AM ; audience / ciblage pour un post RPE. Fil consultable par les parents (et AM selon règles). Sync temps réel ou **polling** acceptable en V1.\n\n## Done when\nAPI permet créer/lister un fil filtré par contexte de garde, avec médias, sans coller ça dans la messagerie.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":59,"name":"api","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/59"},{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:48Z","updated_at":"2026-09-23T15:11:29Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":284,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/176","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/176","number":176,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Modale « Ajouter une bulle » — types AM (congé / arrêt)","body":"## Contexte (ex-C5, recentré)\n\nMême **modale générique** que le ticket parent : l’AM sélectionne **Congé** ou **Arrêt maladie** (pas de sortie/sondage dans ce ticket).\n\n## Dépend de\n\n- Modale générique (socle)\n- Module Cartes SYSTEM + API absences\n\n## À faire\n\n- Types dans la combo AM :\n - **Congé AM** : date début/fin → période `en_attente` + bulles parents + miroir AM ; `expire_at`\n - **Arrêt maladie AM** : date début/fin → flux **ack** parent (« bien reçu ») ; **aucun** upload médical\n- Modification depuis bulle « en attente » (avant accept parent) = réouvrir la modale / mêmes champs\n- Modification d’un congé **déjà accepté** = `operation=update` (même id absence, re-validation parents) — si le backend est prêt ; sinon stub + ticket follow-up\n- Sortie / autorisation / sondage = **hors ce ticket**\n\n## Done when\n\n- L’AM crée congé et arrêt depuis « Ajouter une bulle »\n- Les parents concernés voient les bulles à traiter\n- Pas de doc médical stocké\n\n### Réf.\n\n- Mini-spec § règles métier · workflows S2/S3\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:48Z","updated_at":"2026-09-24T09:04:29Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":283,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/175","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/175","number":175,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Modale générique « Ajouter une bulle » + absence parent","body":"## Contexte (ex-C4, élargi)\n\nEntrée unique de création : bouton **Ajouter une bulle** → **modale générique adaptative** (widget unique tous profils).\n\nV1 : au minimum le parcours **parent = déclarer une absence enfant** ; la combo « type de demande » est filtrée par rôle (prêt pour AM/gest plus tard).\n\n## Dépend de\n\n- API absences + (idéalement) module Cartes SYSTEM\n- Feed parent pour voir le résultat\n\n## À faire\n\n- Widget `CreateCardModal` (ou équivalent) :\n - combo **Type** en haut (options selon `emitter_roles` / profil)\n - corps **piloté par le type** (champs absences = date début/fin + motif optionnel)\n- Soumission parent absence :\n - écriture back absences (**acceptée** tout de suite, pas de veto AM)\n - diffusion bulle côté AM (+ miroir parent)\n- Libellé : **Déclarer une absence** (pas « soumettre congé »)\n- Couple / placement courant (#168)\n\n## Hors scope V1 de ce ticket\n\n- Champs sondage / date+heure événement (prévoir l’extensibilité du widget seulement)\n- Formulaire AM congé/arrêt → ticket formulaires AM (même modale, autres types)\n\n## Done when\n\n- Parent ouvre la modale, choisit absence, valide → période en base + bulles visibles\n- Le widget est clairement réutilisable pour d’autres types / rôles\n\n### Réf.\n\n- Mini-spec · plan mécanique cartes / absences\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:47Z","updated_at":"2026-09-24T09:04:29Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":282,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/174","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/174","number":174,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Feed bulles / cartes (AM) — réutilise widget parent","body":"## Contexte (ex-C3, recentré)\n\nMiroir AM du feed bulles — **même widget** que le feed parent, config rôle AM.\n\n## Dépend de\n\n- Feed parent (widget partagé)\n- Module Cartes SYSTEM + API absences\n\n## À faire\n\n- Brancher le feed sur le TdB AM (coquille 3 col. quand prête)\n- Rôle AM :\n - lecture absences enfant\n - bulles **miroir** congé / arrêt en attente (clic → modifier dates tant qu’aucun parent n’a accepté)\n - après **refus parent** : bulle en tête + motif ; modifier & renvoyer **ou** supprimer (DELETE)\n - ack sur « absence enfant modifiée » (OK → carte disparaît)\n- CTA **« Ajouter une bulle »** → même modale générique (types émis par l’AM : congé, arrêt)\n- Pas de 2ᵉ implémentation de liste\n\n## Done when\n\n- AM voit la file du couple / enfant courant avec les actions de son rôle\n- Cycle congé : create → attente → accept/refus → modif éventuelle fonctionne en UI\n\n### Réf.\n\n- Mini-spec · découpage quotidien\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:47Z","updated_at":"2026-09-24T09:04:29Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":3},{"id":281,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/173","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/173","number":173,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Feed bulles / cartes (parent) — file d’attention","body":"## Contexte (ex-C2, recentré)\n\nEpic Quotidien. Colonne gauche = **file d’attention** (bulles), pas un historique de vie ni une messagerie.\n\nV1 focalisé **absences / congés / arrêt**. Sondages / sorties riches = plus tard.\n\n## Dépend de\n\n- API absences (liste / métiers)\n- Module Cartes SYSTEM (backend)\n\n## À faire\n\n- Widget **feed bulles** réutilisable (pastel, palette `frontend/assets/cards/` uniquement — 7 teintes)\n- Affichage selon statut : à traiter / en attente / refusé / traité (historique court grisé)\n- Actions parent : accepter / refuser congé (+ **modale motivation** si refus) ; ack arrêt maladie ; lecture absences\n- **Miroir créateur** : si le parent a déclaré une absence, il voit aussi sa bulle de suivi\n- Tri : actionnables / refusés en tête ; traités en bas puis purge (`purge_at`)\n- CTA **« Ajouter une bulle »** → ouvre la modale générique (ticket formulaire / modale)\n- Temps réel : se brancher sur le ticket realtime quand dispo (polling acceptable en attendant)\n\n## Hors scope\n\n- Layout desktop 2 panneaux (évolution hors 0.2.0)\n- Catalogue types optionnels / sondages\n\n## Done when\n\n- Parent voit et traite les bulles du couple courant\n- Refus congé exige une motivation\n- Colonne peut être peu remplie : normal (file d’attention)\n\n### Réf.\n\n- Mini-spec `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:46Z","updated_at":"2026-09-24T09:04:29Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":3},{"id":279,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/171","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/171","number":171,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Backend] API contexte enfants accueillis (AM)","body":"## Contexte (B3)\nSymétrique de #168 pour l’assistante maternelle.\n\n## À faire\nAPI listant les **enfants accueillis** / foyers liés à l’AM, avec données pour le bandeau couple (enfant + parent1/parent2 noms) et un **contexte courant** persistable. Payload cohérent avec #168 pour faciliter les widgets partagés.\n\n## Done when\nLe front AM peupple le sélecteur couple et le contexte sans mock hardcodé.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":59,"name":"api","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/59"},{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:45Z","updated_at":"2026-09-23T15:11:26Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":278,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/170","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/170","number":170,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Sélecteur couple enfant–parent(s) (AM)","body":"## Contexte (B2)\nCôté AM, le couple affiché n’est pas enfant|nounou mais **enfant | parent(s)**.\n\n## À faire\nRéutiliser le **même widget couple** que #167 en mode AM. Gauche : photo + nom de l’enfant. Droite : si **deux parents**, nom+prénom du parent 1 et en dessous nom+prénom du parent 2 (pas de photo parent obligatoire) ; si **un seul parent**, son nom+prénom **centré** dans la demi-zone. Dropdown si plusieurs enfants accueillis (bascule de contexte), sinon affichage informatif.\n\n## Done when\nL’AM identifie clairement l’enfant et le foyer (1 ou 2 parents) sans composant dupliqué.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:45Z","updated_at":"2026-09-23T15:11:26Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":277,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/169","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/169","number":169,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Front] Coquille TdB AM 3 colonnes + bandeau","body":"## Contexte (B1)\nLe dashboard AM est aujourd’hui un placeholder (`am_dashboard_screen.dart`). Il doit devenir le **miroir** du TdB parent.\n\n## À faire\nBrancher l’écran AM sur la **même coquille 3 colonnes + bandeau** livrée en #166 (TdB / Agenda / Contrat + menu). Injecter le rôle AM pour les droits et libellés. Ne **pas** recopier le layout : réutilisation obligatoire du widget/coquille.\n\n## Hors scope\nMétier cartes/blog/messagerie (tickets miroir C3, D3, E5) ; détail couple AM (#170).\n\n## Done when\nUne AM connectée voit la même structure 3 colonnes / look pastel que le parent, prête à recevoir les widgets partagés.\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-09-23T15:03:44Z","updated_at":"2026-09-23T21:40:40Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":273,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/165","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/165","number":165,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Epic] Quotidien parent / AM — TdB 3 colonnes, cartes, blog, messagerie","body":"## Contexte\nEpic du jalon **0.2.0 — Quotidien parent / AM**. Objectif : construire les espaces parent et assistante maternelle du quotidien (TdB 3 colonnes, cartes, blog, messagerie), avec un logiciel réel peuplé de données. L’« effet démo » = sync live multi-écrans (parent / AM / gestionnaire), pas un sous-MVP jetable.\n\n## Périmètre\n- Coquille TdB PC **3 colonnes** (cartes | blog défaut | messagerie) + bandeau TdB / Agenda / Contrat\n- Couple actif : enfant–nounou (parent) / enfant–parent(s) (AM)\n- Cartes : absences, congés AM, maladie AM, sorties (règles mini-spec §5)\n- Blog indispensable (auteurs AM + RPE) ; Mess. AM partagée foyer ; Mess. RPE privée + médiation\n- **Widgets partagés** parent ↔ AM (pas de double code) — voir mini-spec §2\n\n## Hors scope (volontaire)\nPage Contrat riche, agenda calendrier riche, notifs CDC fourre-tout, masquage messages, posts blog parent, carnet repas/sieste.\n\n## Tickets enfants\n**A** #166–#168 · **B** #169–#171 · **C** #172–#176 · **D** #177–#180 · **E** #181–#186 · **F** #187–#188 · **G** #189\n\n## Critères d’acceptation (effet démo)\n1. Même contexte de garde parent/AM · 2. Absence parent → carte AM · 3. Post blog AM → parent · 4. Annonce RPE visible · 5. Mess. AM sync · 6. Look papier/pastel\n\n---\n### Références (source de vérité)\n- Mini-spec : `docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md`\n- Découpage : `docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md`\n- Maquette : `docs/maquettes/courantes/maquette-dashboard-parent-quotidien-v4.png`\n- Milestone : `0.2.0` · Epic : #165\n","ref":"","assets":[],"labels":[{"id":5,"name":"documentation","exclusive":false,"is_archived":false,"color":"0075ca","description":"Improvements or additions to documentation","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/5"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":51,"name":"ux","exclusive":false,"is_archived":false,"color":"e91e63","description":"UX/UI","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/51"},{"id":61,"name":"v0.2.0","exclusive":false,"is_archived":false,"color":"1abc9c","description":"Milestone quotidien parent/AM","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/61"}],"milestone":{"id":11,"title":"0.2.0","description":"Quotidien parent / AM\n\nTdB 3 colonnes (cartes | blog | messagerie), couples enfant–nounou / enfant–parent(s), blog AM+RPE, messagerie AM (foyer partagé) + RPE (privée / médiation).\n\nRéf. : docs/31_MINI-SPEC-QUOTIDIEN-PARENT-AM.md — docs/30_DECOUPAGE-TICKETS-QUOTIDIEN.md — maquettes/courantes/…-v4.png","state":"open","open_issues":23,"closed_issues":6,"created_at":"2025-11-28T09:58:27Z","updated_at":"2026-09-24T09:38:40Z","closed_at":null,"due_on":null},"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":1,"created_at":"2026-09-23T15:03:42Z","updated_at":"2026-09-24T09:02:53Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":258,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/150","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/150","number":150,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Full-stack] Fiche AM — combobox rattachement RPE (relais) sur l’onglet Enfants","body":"## Contexte\n\nSur la fiche AM (`AdminAmEditModal`), l’onglet **« Enfants accueillis »** gère les placements enfants, mais **aucun rattachement au RPE (relais)** n’est proposé.\n\nOr le modèle `utilisateurs.relais_id` existe déjà (utilisé pour les gestionnaires). Une AM doit pouvoir être rattachée à un **RPE / relais** depuis cette fiche.\n\n## Objectif\n\nSur le **3ᵉ onglet** de la modale AM, **au-dessus** de la section « Enfants accueillis », ajouter une **combobox « Rattachement RPE »** (liste des relais).\n\n## Frontend\n\n- [ ] Combobox / dropdown **RPE (relais)** en tête de l’onglet Enfants accueillis\n- [ ] Options : liste des relais existants (`GET /relais` ou service déjà utilisé pour les gestionnaires) + option « Aucun »\n- [ ] Préremplir avec le `relaisId` / `relaisNom` actuel de l’AM si présent\n- [ ] Modification → marque dirty → prise en compte au **Sauvegarder** (comme le reste de la fiche)\n- [ ] Placement UI : **avant** capacité / grille enfants\n\n## BDD\n\n**Pas de nouvelle table / colonne obligatoire** : `utilisateurs.relais_id` (FK → `relais`) existe déjà et peut servir pour une AM comme pour un gestionnaire.\n\nÀ faire éventuellement (léger) :\n- [ ] Clarifier côté modèle TypeORM : la relation `Relais.gestionnaires` est mal nommée (c’est en réalité *tous* les users liés) — renommer en `users` / `membres` si on touche au code\n- [ ] Aucune migration SQL bloquante pour le MVP de cette feature\n\n> Si un jour on veut un historique / multi-RPE AM, il faudrait une table de liaison dédiée — **hors scope 0.1.0**.\n\n## Backend / API — à faire évoluer\n\nAujourd’hui l’API fiche AM **ignore** le RPE :\n- `UpdateAmFicheAdminDto` : **pas** de `relaisId`\n- `updateFicheAdmin` : ne touche pas `user.relaisId`\n- `GET` AM : relations chargées sans `user.relais` (souvent juste `relais_id` brut si présent sur user)\n\nTravaux :\n- [ ] Ajouter `relaisId?: string | null` à `UpdateAmFicheAdminDto`\n- [ ] Dans `updateFicheAdmin`, persister `user.relaisId` (null = détacher du RPE)\n- [ ] Charger / exposer `user.relais` (id + nom) dans les réponses AM (`findOne` / `findAll` + mapper)\n- [ ] Vérifier `sanitizeUserForApi` / front `AssistanteMaternelleModel` pour lire `relaisId` / `relaisNom`\n- [ ] Réutiliser `GET /relais` existant pour peupler la combobox\n\n## Hors scope\n\n- Création d’un nouveau RPE depuis cette combobox (gestion relais = écran dédié)\n- Changement des règles métier gestionnaire / périmètre territorial au-delà du lien AM ↔ relais\n\n## Critères d'acceptation\n\n- [ ] Combobox visible en haut du 3ᵉ onglet, avant la gestion des enfants\n- [ ] Sélection d’un RPE + Sauvegarder → AM rattachée en BDD\n- [ ] Remise à « Aucun » + Sauvegarder → `relais_id` null\n- [ ] Rechargement fiche → valeur conservée\n\n## Milestone\n\n**0.1.0**\n\n## Références\n\n- Champ existant gestionnaires : `AdminUserFormDialog` / `relaisId`\n- Table `relais` + `utilisateurs.relais_id`\n","ref":"","assets":[],"labels":[{"id":56,"name":"admin","exclusive":false,"is_archived":false,"color":"9c27b0","description":"Administration","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/56"},{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":7,"name":"enhancement","exclusive":false,"is_archived":false,"color":"a2eeef","description":"New feature or request","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/7"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":55,"name":"gestionnaire","exclusive":false,"is_archived":false,"color":"ff9800","description":"Gestionnaire","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/55"},{"id":57,"name":"phase-1","exclusive":false,"is_archived":false,"color":"d32f2f","description":"Phase 1","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/57"},{"id":58,"name":"ui","exclusive":false,"is_archived":false,"color":"ededed","description":"","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/58"},{"id":60,"name":"v0.1.0","exclusive":false,"is_archived":false,"color":"207de5","description":"Issue rattachée au périmètre release 0.1.0","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/60"}],"milestone":null,"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":1,"created_at":"2026-07-17T14:17:07Z","updated_at":"2026-09-15T15:45:50Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":1},{"id":249,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/141","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/141","number":141,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Full-stack] Statut enfant — remplacer « actif » par gardé / sans garde (+ migration BDD)","body":"## Contexte\n\nLe type PostgreSQL `statut_enfant_type` et l’enum backend `StatutEnfantType` portent aujourd’hui **3 valeurs** :\n\n| Valeur API | Libellé actuel | Problème |\n|------------|----------------|----------|\n| `a_naitre` | À naître | OK |\n| `actif` | Actif | **Trop vague** — ne distingue pas enfant **gardé chez une AM** vs **chez lui sans AM** |\n| `scolarise` | Scolarisé | OK |\n\nRéf. schéma : `database/BDD.sql`, `backend/src/entities/children.entity.ts`, `docs/10_DATABASE.md`.\n\n## Objectif métier\n\nPasser à **4 statuts** qui reflètent la réalité du Relais :\n\n| Valeur API (proposition) | Libellé UI (proposition) | Signification |\n|--------------------------|--------------------------|---------------|\n| `a_naitre` | **À naître** | Enfant pas encore né (date prévue) |\n| `garde` | **Gardé** | Enfant actuellement en garde chez une assistante maternelle |\n| `sans_garde` | **Sans garde** | Enfant chez lui / chez ses responsables, **pas** placé chez une AM |\n| `scolarise` | **Scolarisé** | Enfant scolarisé (hors garde AM au sens Relais) |\n\n\n## Backend\n\n- [ ] Migration SQL `ALTER TYPE statut_enfant_type` (ajout valeurs + migration données + retrait `actif`)\n- [ ] Enum `StatutEnfantType` + DTOs Swagger (`CreateEnfantsDto`, `UpdateEnfantsDto`, dossier famille #119)\n- [ ] Règles métier : `auth.service` (inscription / reprise #112) — aujourd’hui `actif` si date naissance, `a_naitre` sinon\n- [ ] Messages d’erreur (`Un enfant actif doit avoir une date de naissance` → adapter)\n- [ ] Tests unitaires\n\n### Migration données (à cadrer)\n\n| Ancien | Proposition par défaut | Commentaire |\n|--------|------------------------|-------------|\n| `a_naitre` | `a_naitre` | inchangé |\n| `actif` | **`sans_garde`** | **Valeur par défaut** à la migration (libellé « Sans garde ») |\n| `scolarise` | `scolarise` | inchangé |\n\n## Frontend\n\n- [ ] Inscription parent (étape enfants), reprise #112, validation wizard\n- [ ] Dashboard admin : filtres onglet Enfants (#137), fiche enfant (#138), modales #140\n- [ ] Libellés accordés au genre si besoin (comme `scolarise` dans `validation_family_wizard.dart`)\n\n## Documentation\n\n- [ ] `docs/10_DATABASE.md`, `database/docs/ENUMS.md`\n- [ ] `EVOLUTIONS_CDC.md` ou CDC § statut enfant si applicable\n\n## Critères d’acceptation\n\n1. Plus aucune référence à `actif` pour le statut enfant (API + UI + BDD).\n2. Les 4 statuts sont sélectionnables en admin et à l’inscription.\n3. Données existantes migrées sans perte (script + vérif comptages avant/après).\n4. Swagger et tests à jour.\n\n## Hors scope\n\n- Lien automatique statut ↔ contrat AM (futur : statut `garde` déduit d’un contrat actif ?)\n- Qualification responsable–enfant (#139)\n\n## Branche suggérée\n\n`feature/141-statut-enfant-garde-sans-garde` depuis `develop`","ref":"","assets":[],"labels":[],"milestone":null,"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":2,"created_at":"2026-06-21T15:46:21Z","updated_at":"2026-06-24T20:50:02Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":2},{"id":247,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/139","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/139","number":139,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Epic] Parcours gestionnaire — famille complexe (N responsables, visibilité par enfant)","body":"## Contexte\n\nDoc `docs/28_EVOLUTION-FAMILLE-ET-RESPONSABLES.md` § 4.4 et § 7.5.\n\nCas type : M + A → α, M + B → β. **M** doit avoir **α et β sur le même compte** ; **A** ne voit que α, **B** que β.\n\n## Objectif\n\nParcours de **création réservé au gestionnaire** (pas inscription publique) pour constituer une configuration avec **plus de 2 responsables/tuteurs**, sans se limiter au champ `co_parent`, en s'appuyant sur `enfants_parents`.\n\n## Règles clés\n\n- Visibilité parent = enfants liés via `enfants_parents` uniquement\n- Workflows (validation, refus, reprise) sans fusion `getFamilyUserIds`\n- Composition libre : cocher responsables par enfant\n\n## Dépendances\n\n- #115 / #116 affiliation\n- #129 création admin (extension)\n- Refonte visibilité API parent + workflows\n\n## Hors scope v1.0.0\n\nContournement actuel : 2ᵉ email pour M (doc 28 § 4.2).","ref":"","assets":[],"labels":[],"milestone":null,"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-06-16T22:31:00Z","updated_at":"2026-07-24T15:51:23Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":0},{"id":236,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/128","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/128","number":128,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Full-stack] Audit / traçabilité des modifications dossier et profils (parent/AM)","body":"## Contexte\n\nPour la sécurité et le suivi des dossiers (familles et assistantes maternelles), il faut pouvoir **savoir qui a modifié quoi, quand** sur les données d'un dossier ou d'un profil. C'est essentiel en cas de **litige ou désaccord entre co-parents**, de support / audit, et pour la conformité minimale.\n\nAujourd'hui :\n- Certaines entités ont déjà des timestamps **`cree_le` / `modifie_le`** (`dossier_famille`, `utilisateurs`), mais ils ne disent pas **qui** a modifié, ni **quels champs**, ni les **événements transverses** (refus, validation, fusion de comptes…).\n- Il n'existe **aucun journal d'audit** structuré.\n\n## Objectif\n\nMettre en place un **journal d'audit** (qui / quand / quoi) couvrant :\n\n- **Dossier famille** (parents, enfants, présentation / motivation).\n- **Dossier assistante maternelle** (identité, infos pro, photo, champs métier).\n\n…sans logger tout le bruit applicatif.\n\n## Périmètre & règles produit\n\n### 1. Règle simple — alignée inscription\n\nÀ **chaque modification** d'une information **fournie lors de la création** du dossier **parent** ou **AM**, un événement est **loggé**. La liste exacte est dérivée des champs persistés à l'inscription (`RegisterParentCompletDto`, `RegisterAMCompletDto` et entités liées), ce qui couvre notamment :\n\n- identité, coordonnées (adresse, téléphone, ville, code postal, …),\n- **photo** (parent, AM, enfants),\n- enfants (parcours parent : prénom/nom, dates, genre, consentement, …),\n- texte de présentation / motivation,\n- champs métier AM (NIR, agrément, capacité d'accueil, places dispo, biographie, …).\n\n**Exclus par défaut** (sauf décision ultérieure) : lectures, listings, requêtes purement techniques, heartbeats, etc.\n\n### 2. Actions structurelles et événements métier (toujours loggés)\n\n- **Association / fusion de deux comptes**, **rattachement co-parent**, **affectation ou changement de `numero_dossier`**, tout regroupement ou scission identifiable → événement dédié (qui, quand, identifiants concernés, type d'opération).\n- **Cycle de vie** dossier / compte : **refus**, **validation**, **suspension** (et équivalents) → une ligne d'audit par action, pour une **timeline lisible** côté gestionnaire.\n\n## Architecture proposée\n\n### Journal d'audit en BDD (recommandé vs simple fichier)\n\n- Permet requêtes / filtres par `numero_dossier` ou `user_id`, sauvegardes PG, cohérence transactionnelle.\n- **Colonnes typiques** (à figer en spec technique) :\n - `id`\n - `occurred_at` (timestamptz)\n - `actor_user_id` (nullable si action système) + `actor_role`\n - `numero_dossier` (dénormalisé pour filtrage)\n - `entity_type` (`utilisateur` | `parent` | `assistante_maternelle` | `enfant` | `dossier_famille` | …)\n - `entity_id`\n - `action` (`create` | `update` | `delete` | événement métier : `refus`, `validation`, `suspension`, `fusion_comptes`, `affectation_numero_dossier`, …)\n - `changes` JSON (ancien / nouveau ou patch, ou résumé pour les événements)\n - optionnels : `request_id`, `ip`, `source` (`gestionnaire_ui`, `selfservice_reprise`, …)\n- Écriture **dans la même transaction** que la modification métier (ou outbox si async).\n\n### Colonnes « création / dernière modification »\n\n- Ne **pas dupliquer** sur chaque table : `cree_le` / `modifie_le` existent déjà sur `dossier_famille` et `utilisateurs`.\n- Faire un **inventaire** des entités du dossier (parents, enfants, AM, pièces jointes…) et **compléter** uniquement où il manque des `@UpdateDateColumn` / triggers.\n- Si besoin d'une **« dernière modification dossier »** unique par `numero_dossier` : soit **vue / requête** sur `max(modifie_le)`, soit colonne dérivée sur une entité pivot — à trancher en spec.\n\n### Fichier\n\nRéservé éventuellement en **complément** (export append-only, intégration SI) ; **pas** comme source unique si l'app affiche l'historique.\n\n## Accès gestionnaire (exigence métier)\n\n- Le **gestionnaire** doit pouvoir consulter **facilement** l'historique des modifications d'un dossier (`numero_dossier`), notamment **en cas de litige entre co-parents**.\n- **Backend** : endpoint dédié (ex. `GET …/dossiers/:numeroDossier/audit` ou sous-ressource des routes gestionnaire existantes), pagination, tri par date, contrôle d'accès **gestionnaire / admin** (même périmètre que la validation dossier).\n- **Frontend** : entrée visible depuis le parcours d'examen d'un dossier (wizard / fiche dossier) — onglet ou panneau **« Historique des modifications »**, pas une page cachée.\n- **Contenu affiché minimum** : date / heure, acteur (identité + rôle), nature du changement (champs ou résumé JSON lisible) ; distinction claire **parent 1 / parent 2 / AM / gestionnaire / admin**.\n\n## Visibilité parents & AM (phase suivante)\n\nÀ terme, lorsque les **parents** et les **AM** auront leur **tableau de bord**, un **sous-menu discret** (non mis en avant, mais accessible) donnera accès au **même historique** côté demandeur, **incluant toutes** les lignes d'audit (gestionnaire, admin, parent, AM).\n\n→ Le ticket peut être livré en deux temps si nécessaire : **MVP** (API + écran gestionnaire), **phase dashboard** (entrée parent/AM dans leur tableau de bord, dépend de l'avancée des dashboards).\n\n## Points transverses\n\n- **Sécurité / secrets** : exigence implicite — **pas** de mots de passe, tokens en clair, etc. dans les payloads d'audit.\n- **RGPD / rétention** : durée de conservation des lignes d'audit, anonymisation à la suppression compte → **pas urgent pour la V1**, peut faire l'objet d'une issue dédiée.\n- **Export CSV / PDF** gestionnaire : **hors périmètre V1** — ticket séparé en phase 2.\n- **Alignement** avec les flux **modification dossier** (en attente + refusé, mêmes DTO / même `apply…(context)`) : l'audit doit recevoir un `source` ou `correlation_id` pour distinguer gestionnaire vs demandeur.\n\n## Critères de done (V1)\n\n- [ ] Migration / mise à jour [`database/BDD.sql`](database/BDD.sql) : table d'audit + index utiles (`numero_dossier`, `occurred_at`, `actor_user_id`).\n- [ ] Inventaire & complétion `@CreateDateColumn` / `@UpdateDateColumn` manquants sur les entités du dossier.\n- [ ] Service applicatif `appendAuditLog(...)` (ou équivalent) branché sur :\n - création / modification des champs « inscription parent / AM » ;\n - refus, validation, suspension ;\n - affectation / changement `numero_dossier`, fusion / association de comptes.\n- [ ] API `GET …/dossiers/:numeroDossier/audit` (gestionnaire / admin) — pagination, tri par date.\n- [ ] Écran / panneau **gestionnaire** « Historique des modifications » sur la fiche dossier (famille et AM).\n- [ ] Tests unitaires / intégration sur les chemins critiques.\n- [ ] OpenAPI à jour.\n\n## Hors périmètre (à scinder en autres tickets si besoin)\n\n- Export CSV / PDF de l'historique.\n- Durée de rétention RGPD + anonymisation à la suppression compte.\n- Entrée « historique » dans le tableau de bord parent / AM (dépend des dashboards).\n","ref":"","assets":[],"labels":[{"id":33,"name":"backend","exclusive":false,"is_archived":false,"color":"2ecc71","description":"Backend NestJS","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/33"},{"id":34,"name":"database","exclusive":false,"is_archived":false,"color":"f39c12","description":"Base de données PostgreSQL","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/34"},{"id":32,"name":"frontend","exclusive":false,"is_archived":false,"color":"3498db","description":"Frontend Flutter/Web","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/32"},{"id":55,"name":"gestionnaire","exclusive":false,"is_archived":false,"color":"ff9800","description":"Gestionnaire","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/55"},{"id":38,"name":"p2","exclusive":false,"is_archived":false,"color":"f1c40f","description":"Priorité 2","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/38"},{"id":57,"name":"phase-1","exclusive":false,"is_archived":false,"color":"d32f2f","description":"Phase 1","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/57"},{"id":44,"name":"rgpd","exclusive":false,"is_archived":false,"color":"16a085","description":"RGPD/Conformité","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/44"},{"id":43,"name":"security","exclusive":false,"is_archived":false,"color":"8e44ad","description":"Sécurité","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/43"},{"id":60,"name":"v0.1.0","exclusive":false,"is_archived":false,"color":"207de5","description":"Issue rattachée au périmètre release 0.1.0","url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/labels/60"}],"milestone":null,"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-05-13T14:55:16Z","updated_at":"2026-07-17T15:05:00Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":0},{"id":234,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/126","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/126","number":126,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Bug][Regression] Upload documents légaux retourne 500 (lié #33)","body":"## Contexte\nLe front obtient un `500` sur `POST /api/v1/documents-legaux` alors que le ticket #33 est fermé.\n\n## Symptôme observé\n- Requête: `POST /api/v1/documents-legaux` (multipart `type` + `file`)\n- Réponse: `500`\n- Traefik confirme la requête vers `ptitspas-api@docker` avec statut 500.\n\n## Hypothèse technique\nDans `DocumentsLegauxController`, l'upload utilise encore un `userId` placeholder (`00000000-0000-0000-0000-000000000000`).\nLe service tente ensuite d'enregistrer `televersePar` avec cet ID, ce qui peut casser la contrainte FK et produire un 500.\n\n## Attendu\n- Pas de 500 sur upload valide.\n- Si utilisateur non authentifié/non résolu, gérer explicitement (fallback sans `televersePar` ou 4xx clair).\n- Erreurs métier explicites (400/401/403) plutôt qu'erreur interne.\n\n## Liens\n- Régression liée à #33\n- Impact fonctionnel: test front montée documents légaux bloqué","ref":"","assets":[],"labels":[],"milestone":null,"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-04-17T10:43:09Z","updated_at":"2026-04-17T15:35:37Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":0},{"id":233,"url":"https://git.ptits-pas.fr/api/v1/repos/jmartin/petitspas/issues/125","html_url":"https://git.ptits-pas.fr/jmartin/petitspas/issues/125","number":125,"user":{"id":2,"login":"jmartin","login_name":"","source_id":0,"full_name":"MARTIN Julien","email":"julien.martin@ptits-pas.fr","avatar_url":"https://git.ptits-pas.fr/avatars/cdc397d2522aca19e6a3ad88f54d2fd140c481810d2af29ec8d516700e73d107","html_url":"https://git.ptits-pas.fr/jmartin","language":"fr-FR","is_admin":false,"last_login":"2026-09-09T13:44:59Z","created":"2025-05-19T20:13:48Z","restricted":false,"active":true,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":1,"starred_repos_count":1,"username":"jmartin"},"original_author":"","original_author_id":0,"title":"[Tech] Contrôle d’accès téléchargement photo","body":"Objectif: endpoint sécurisé de téléchargement photo avec check de droits centralisé (policy/service).\\n\\nCritères:\\n- Endpoint sécurisé (réf #57)\\n- Contrôle d’accès par rôle et relation métier (parent/AM/gestionnaire)\\n- Remplacement progressif de l’accès statique non contrôlé\\n- Tests d’autorisation nominaux + refus\\n\\nContexte: sécurité/RGPD minimal requis pour 0.1.0.","ref":"","assets":[],"labels":[],"milestone":null,"projects":null,"assignee":null,"assignees":null,"state":"open","is_locked":false,"comments":0,"created_at":"2026-04-16T08:45:54Z","updated_at":"2026-09-15T15:45:50Z","closed_at":null,"due_date":null,"time_estimate":0,"pull_request":null,"repository":{"id":5,"name":"petitspas","owner":"jmartin","full_name":"jmartin/petitspas"},"pin_order":0,"content_version":0}]