# 🎫 Liste Complète des Tickets - Projet P'titsPas

**Version** : 1.2
**Date** : 27 Janvier 2026
**Auteur** : Équipe PtitsPas  
**Estimation totale** : ~173h

---

## 🔗 Liste des tickets Gitea

Correspondance entre les numéros d’issues Gitea et les tickets de ce document.

| Gitea # | Titre court | Priorité | Statut | Section doc |
|--------|--------------|----------|--------|-------------|
| 1 | BDD - Champs manquants CDC | P0 | Ouvert | § Ticket #1 |
| 2 | BDD - Table présentation dossier parent | P0 | Ouvert | § Ticket #2 |
| 3 | BDD - Tokens création MDP | P0 | ✅ Fermé | § Ticket #3 |
| 4 | BDD - Champ genre enfants | P0 | ✅ Fermé | § Ticket #4 |
| 5 | BDD - Supprimer champs obsolètes | P0 | Ouvert | § Ticket #5 |
| 6 | BDD - Table configuration système | P0 | Ouvert | § Ticket #6 |
| 68 | BDD - Documents légaux & acceptations | P0 | ✅ Fermé | § Ticket #7 |
| 73 | Frontend - Inscription Parent Étape 1 | P3 | ✅ Fermé (PR) | § Ticket #36 |
| 78 | Frontend - Infrastructure formulaires multi-modes | P3 | ✅ Fermé | § Ticket #78 |
| 79 | Frontend - Renommer Nanny en AM | P3 | ✅ Fermé | § Ticket #79 |
| 81 | Frontend - Corrections refactoring widgets | P3 | ✅ Fermé | § Ticket #81 |
| 83 | Frontend - RegisterChoiceScreen mobile | P3 | ✅ Fermé | § Ticket #83 |

*Les autres tickets (sans numéro Gitea dans ce tableau) sont décrits dans les sections par priorité ci‑dessous ; les numéros de section (#1 à #83) sont les références internes du document.*

**Point API (tickets frontend)** – 27/01/2026 : 20 issues avec le label `frontend` dans Gitea (12 ouvertes, 8 fermées). Numéros concernés : 35–42, 43–51, 54, 82, 83. Les #73, #78, #79, #81 sont fermés mais sans label dans l’API. Détail : `docs/POINT_TICKETS_FRONT_API.txt`.

---

## 📊 Vue d'ensemble

### Répartition par priorité

| Priorité | Nombre | Estimation | Description |
|----------|--------|------------|-------------|
| **P0** | 7 tickets | ~5h | Amendements BDD (BLOQUANT) |
| **P1** | 7 tickets | ~22h | Configuration système (BLOQUANT) |
| **P2** | 18 tickets | ~50h | Backend métier |
| **P3** | 17 tickets | ~52h | Frontend |
| **P4** | 4 tickets | ~24h | Tests & Documentation |
| **CRITIQUES** | 6 tickets | ~13h | Upload, Logs, Infra, CDC |
| **JURIDIQUE** | 1 ticket | ~8h | Rédaction CGU/Privacy |
| **TOTAL** | **62 tickets** | **~181h** | |

---

## 🔴 PRIORITÉ 0 : Amendements Base de Données (BLOQUANT)

### Ticket #1 : [BDD] Ajout champs manquants conformité CDC
**Estimation** : 1h  
**Labels** : `bdd`, `p0-bloquant`, `cdc`

**Description** :
Ajouter les champs manquants dans la base de données pour être conforme au Cahier des Charges v1.3.

**Tâches** :
- [ ] Ajouter `ville_naissance` VARCHAR(150) dans `utilisateurs`
- [ ] Ajouter `pays_naissance` VARCHAR(100) dans `utilisateurs`
- [ ] Ajouter `date_acceptation_cgu` TIMESTAMPTZ dans `utilisateurs`
- [ ] Rendre `nir_chiffre` NOT NULL dans `assistantes_maternelles`
- [ ] Ajouter `date_obtention_agrement` DATE dans `assistantes_maternelles`
- [ ] Créer migration Prisma
- [ ] Tester migration sur BDD de dev

---

### Ticket #2 : [BDD] Ajout table/champ présentation dossier parent
**Estimation** : 30min  
**Labels** : `bdd`, `p0-bloquant`, `cdc`

**Description** :
Ajouter un champ pour stocker la présentation du dossier parent (étape 4 de l'inscription).

**Tâches** :
- [ ] Ajouter `presentation_dossier` TEXT dans table `parents`
- [ ] Créer migration Prisma
- [ ] Tester migration

---

### Ticket #3 : [BDD] Ajout gestion tokens création mot de passe ✅
**Estimation** : 30min  
**Labels** : `bdd`, `p0-bloquant`, `security`  
**Statut** : ✅ TERMINÉ (Fermé le 2025-11-28)

**Description** :
Ajouter les champs nécessaires pour gérer les tokens de création de mot de passe (workflow sans MDP lors inscription).

**Tâches** :
- [x] Ajouter `password_reset_token` UUID dans `utilisateurs`
- [x] Ajouter `password_reset_expires` TIMESTAMPTZ dans `utilisateurs`
- [x] Créer migration Prisma
- [x] Tester migration

---

### Ticket #4 : [BDD] Ajout champ genre obligatoire enfants ✅
**Estimation** : 30min  
**Labels** : `bdd`, `p0-bloquant`, `cdc`  
**Statut** : ✅ TERMINÉ (Fermé le 2025-11-28)

**Description** :
Ajouter le champ `genre` obligatoire (H/F) dans la table `enfants`.

**Tâches** :
- [x] Ajouter `genre` ENUM('H', 'F') NOT NULL dans `enfants`
- [x] Créer migration Prisma
- [x] Tester migration

---

### Ticket #5 : [BDD] Supprimer champs obsolètes
**Estimation** : 30min  
**Labels** : `bdd`, `p0-bloquant`, `cleanup`

**Description** :
Supprimer les champs obsolètes identifiés lors de l'audit.

**Tâches** :
- [ ] Supprimer `mobile` dans `utilisateurs` (remplacé par `telephone`)
- [ ] Supprimer `telephone_fixe` dans `utilisateurs`
- [ ] Supprimer `annee_experience` dans `assistantes_maternelles`
- [ ] Supprimer `specialite` dans `assistantes_maternelles`
- [ ] Créer migration Prisma
- [ ] Tester migration

---

### Ticket #6 : [BDD] Table configuration système
**Estimation** : 1h  
**Labels** : `bdd`, `p0-bloquant`, `on-premise`

**Description** :
Créer la table `configuration` pour stocker les paramètres système (SMTP, app, sécurité).

**Tâches** :
- [ ] Créer table `configuration` (clé/valeur/type/catégorie)
- [ ] Créer index sur `cle` et `categorie`
- [ ] Seed valeurs par défaut (SMTP localhost, ports, etc.)
- [ ] Créer migration Prisma
- [ ] Tester migration

**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md)

---

### Ticket #7 : [BDD] Tables documents légaux & acceptations ✅
**Estimation** : 2h  
**Labels** : `bdd`, `p0-bloquant`, `rgpd`, `juridique`  
**Statut** : ✅ TERMINÉ (Fermé le 2025-11-30 - Ticket #68 sur Gitea)

**Description** :
Créer les tables pour gérer les versions des documents légaux (CGU/Privacy) et tracer les acceptations utilisateurs.

**Tâches** :
- [ ] Créer table `documents_legaux` (versioning + hash SHA-256)
- [ ] Créer table `acceptations_documents` (traçabilité RGPD)
- [ ] Modifier table `utilisateurs` (colonnes version acceptée)
- [ ] Créer index
- [ ] Seed documents génériques v1
- [ ] Créer migration Prisma
- [ ] Tester migration

**Référence** : [22_DOCUMENTS-LEGAUX.md](./22_DOCUMENTS-LEGAUX.md)

---

## 🟠 PRIORITÉ 1 : Configuration Système (BLOQUANT)

### Ticket #8 : [Backend] Service Configuration
**Estimation** : 4h  
**Labels** : `backend`, `p1-bloquant`, `on-premise`

**Description** :
Créer le service de configuration avec cache en mémoire et chiffrement AES-256.

**Tâches** :
- [ ] Créer `ConfigService` avec cache Map
- [ ] Implémenter `get(key, defaultValue)`
- [ ] Implémenter `set(key, value, userId)`
- [ ] Implémenter `getByCategory(category)`
- [ ] Implémenter chiffrement/déchiffrement AES-256
- [ ] Implémenter conversion de types (string/number/boolean/json)
- [ ] Implémenter `loadCache()` au démarrage
- [ ] Tests unitaires (mock repository)

**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#service-configuration)

---

### Ticket #9 : [Backend] API Configuration
**Estimation** : 3h  
**Labels** : `backend`, `p1-bloquant`, `on-premise`

**Description** :
Créer les endpoints REST pour gérer la configuration système.

**Tâches** :
- [ ] `GET /api/v1/configuration/:category` (super_admin only)
- [ ] `PATCH /api/v1/configuration/bulk` (mise à jour multiple)
- [ ] `POST /api/v1/configuration/test-smtp` (test connexion + envoi email)
- [ ] Guards (super_admin only)
- [ ] Validation DTO
- [ ] Tests unitaires

**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#apis-configuration)

---

### Ticket #10 : [Backend] Guard Configuration Initiale
**Estimation** : 2h  
**Labels** : `backend`, `p1-bloquant`, `on-premise`

**Description** :
Créer un Guard/Middleware qui détecte si la configuration initiale est incomplète et force la redirection.

**Tâches** :
- [ ] Créer `SetupGuard`
- [ ] Vérifier `setup_completed` dans ConfigService
- [ ] Redirection forcée vers `/admin/setup` si false
- [ ] Exemption pour routes publiques (login, register)
- [ ] Exemption pour route `/admin/setup`
- [ ] Tests unitaires

**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#workflow-setup-initial)

---

### Ticket #11 : [Backend] Adaptation MailService pour config dynamique
**Estimation** : 3h  
**Labels** : `backend`, `p1-bloquant`, `on-premise`, `email`

**Description** :
Adapter le service email pour utiliser la configuration dynamique depuis la BDD au lieu de variables d'environnement hardcodées.

**Tâches** :
- [ ] Remplacer `mail.ptits-pas.fr` hardcodé par `ConfigService.get('smtp_host')`
- [ ] Lecture config SMTP depuis BDD (host, port, secure, auth, user, pass)
- [ ] Lecture expéditeur depuis BDD (from_name, from_address)
- [ ] Recréation du transport Nodemailer dynamique
- [ ] Tests unitaires (mock ConfigService)

**⚠️ IMPORTANT** : Ce ticket corrige tous les hardcoding de `mail.ptits-pas.fr` dans le code.

---

### Ticket #12 : [Frontend] Écran Configuration Initiale (Setup Wizard)
**Estimation** : 6h  
**Labels** : `frontend`, `p1-bloquant`, `on-premise`

**Description** :
Créer l'écran de configuration initiale (Setup Wizard) accessible à la première connexion du super admin.

**Tâches** :
- [ ] Page `/admin/setup` (accessible uniquement si config incomplète)
- [ ] Formulaire multi-onglets (Email / Application / Avancé)
- [ ] Onglet 1 : Configuration Email (SMTP, auth, expéditeur)
- [ ] Onglet 2 : Personnalisation (nom app, URL, logo)
- [ ] Onglet 3 : Paramètres avancés (durées tokens, upload max)
- [ ] Bouton "Tester la connexion SMTP" (appel API + feedback)
- [ ] Validation côté client
- [ ] Sauvegarde (appel API `PATCH /configuration/bulk`)
- [ ] Message succès + redirection dashboard

**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#interface-admin)

---

### Ticket #13 : [Frontend] Écran Paramètres (accès permanent)
**Estimation** : 2h  
**Labels** : `frontend`, `p1-bloquant`, `on-premise`

**Description** :
Créer l'écran de paramètres accessible depuis le menu admin (même interface que Setup Wizard).

**Tâches** :
- [ ] Page `/admin/parametres` (accessible depuis menu admin)
- [ ] Même interface que Setup Wizard
- [ ] Affichage valeurs actuelles
- [ ] Modification et sauvegarde

---

### Ticket #14 : [Doc] Documentation configuration on-premise
**Estimation** : 2h  
**Labels** : `documentation`, `p1-bloquant`, `on-premise`

**Description** :
Rédiger la documentation pour aider les collectivités à configurer l'application.

**Tâches** :
- [ ] Guide d'installation pour collectivités
- [ ] Liste des paramètres SMTP courants (Office 365, Gmail, serveurs locaux)
- [ ] Exemples de configuration
- [ ] Troubleshooting SMTP
- [ ] Variables `.env` requises
- [ ] Génération secrets (JWT, encryption key)

**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md)

---

## 🟢 PRIORITÉ 2 : Backend - Authentification & Gestion Comptes

### Ticket #15 : [Backend] API Création gestionnaire
**Estimation** : 3h  
**Labels** : `backend`, `p2`, `auth`

**Description** :
Créer l'endpoint pour permettre au super admin de créer des gestionnaires.

**Tâches** :
- [ ] Endpoint `POST /api/v1/gestionnaires`
- [ ] Validation DTO
- [ ] Hash bcrypt
- [ ] Flag `changement_mdp_obligatoire = TRUE`
- [ ] Guards (super_admin only)
- [ ] Email de notification (utiliser MailService avec config dynamique)
- [ ] Tests unitaires

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-2--création-dun-gestionnaire)

---

### Ticket #16 : [Backend] API Inscription Parent (étape 1 - Parent 1)
**Estimation** : 4h  
**Labels** : `backend`, `p2`, `auth`, `cdc`

**Description** :
Créer l'endpoint d'inscription Parent (étape 1/6 : informations Parent 1).

**Tâches** :
- [ ] Endpoint `POST /api/v1/auth/register/parent`
- [ ] Validation DTO (sans mot de passe)
- [ ] Génération token création MDP (UUID)
- [ ] Durée token : Lire depuis `ConfigService.get('password_reset_token_expiry_days')`
- [ ] Création utilisateur + entité parent
- [ ] Statut `en_attente`
- [ ] Tests unitaires

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-3--inscription-dun-parent)

---

### Ticket #17 : [Backend] API Inscription Parent (étape 2 - Parent 2)
**Estimation** : 2h  
**Labels** : `backend`, `p2`, `auth`, `cdc`

**Description** :
Ajouter la gestion du co-parent (Parent 2) dans l'endpoint d'inscription.

**Tâches** :
- [ ] Ajout gestion co-parent dans endpoint
- [ ] Relation `id_co_parent` dans table `parents`
- [ ] Génération token pour Parent 2
- [ ] Tests unitaires

---

### Ticket #18 : [Backend] API Inscription Parent - REFONTE (Workflow complet 6 étapes) ✅
**Estimation** : 4h  
**Labels** : `backend`, `p2`, `auth`, `cdc`, `upload`  
**Statut** : ✅ TERMINÉ (Fermé le 2025-12-01)

**Description** :
Refonte complète de l'API d'inscription parent pour gérer le workflow complet en 6 étapes dans une seule transaction.

**Tâches** :
- [ ] Endpoint `POST /api/v1/enfants`
- [ ] Upload photo (Multer)
- [ ] Taille max : Lire depuis `ConfigService.get('max_upload_size_mb')`
- [ ] Validation genre obligatoire (H/F)
- [ ] Gestion enfant à naître vs né
- [ ] Rattachement aux 2 parents (si Parent 2 existe)
- [ ] Tests unitaires

---

### Ticket #19 : [Backend] API Inscription Parent (étape 2 - Parent 2) ✅
**Estimation** : 2h  
**Labels** : `backend`, `p2`, `auth`, `cdc`  
**Statut** : ✅ TERMINÉ (Fermé le 2025-12-01)

**Description** :
Gestion du co-parent (Parent 2) dans l'endpoint d'inscription (intégré dans la refonte #18).

**Tâches** :
- [ ] Enregistrement présentation dossier
- [ ] Enregistrement acceptation CGU avec horodatage
- [ ] Endpoint récapitulatif
- [ ] Tests unitaires

---

### Ticket #20 : [Backend] API Inscription Parent (étape 3 - Enfants) ✅
**Estimation** : 4h  
**Labels** : `backend`, `p2`, `auth`, `cdc`, `upload`  
**Statut** : ✅ TERMINÉ (Fermé le 2025-12-01)

**Description** :
Gestion des enfants dans l'endpoint d'inscription (intégré dans la refonte #18).

**Tâches** :
- [ ] Endpoint `POST /api/v1/auth/register/am`
- [ ] Upload photo (Multer)
- [ ] Taille max : Lire depuis ConfigService
- [ ] Consentement photo avec horodatage
- [ ] Génération token création MDP
- [ ] Tests unitaires

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-3bis--inscription-dune-assistante-maternelle)

---

### Ticket #21 : [Backend] API Inscription Parent (étape 4-6 - Finalisation) ✅
**Estimation** : 3h  
**Labels** : `backend`, `p2`, `auth`, `cdc`  
**Statut** : ✅ TERMINÉ (Fermé le 2025-12-01)

**Description** :
Finalisation de l'inscription parent (présentation, CGU, récapitulatif - intégré dans la refonte #18).

**Tâches** :
- [ ] Validation NIR (15 chiffres obligatoire)
- [ ] Date/lieu de naissance
- [ ] Numéro agrément + date obtention
- [ ] Capacité accueil
- [ ] Tests unitaires

---

### Ticket #22 : [Backend] API Création mot de passe
**Estimation** : 3h  
**Labels** : `backend`, `p2`, `auth`, `security`

**Description** :
Créer les endpoints pour permettre aux utilisateurs de créer leur mot de passe via le lien reçu par email.

**Tâches** :
- [ ] Endpoint `GET /api/v1/auth/verify-token?token=<uuid>`
- [ ] Endpoint `POST /api/v1/auth/create-password`
- [ ] Validation token (existe, non expiré, non utilisé)
- [ ] Hash bcrypt + suppression token
- [ ] Activation compte (`statut = actif`)
- [ ] Tests unitaires

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-7--création-du-mot-de-passe)

---

### Ticket #23 : [Backend] API Liste comptes en attente
**Estimation** : 2h  
**Labels** : `backend`, `p2`, `gestionnaire`

**Description** :
Créer les endpoints pour lister les comptes en attente de validation.

**Tâches** :
- [ ] Endpoint `GET /api/v1/parents?statut=en_attente`
- [ ] Endpoint `GET /api/v1/assistantes-maternelles?statut=en_attente`
- [ ] Guards (gestionnaire/admin only)
- [ ] Filtres + pagination
- [ ] Tests unitaires

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-4--consultation-des-demandes-par-le-gestionnaire)

---

### Ticket #24 : [Backend] API Validation/Refus comptes
**Estimation** : 3h  
**Labels** : `backend`, `p2`, `gestionnaire`

**Description** :
Créer les endpoints pour valider ou refuser les comptes en attente.

**Tâches** :
- [ ] Endpoint `PATCH /api/v1/users/{id}/valider`
- [ ] Endpoint `PATCH /api/v1/users/{id}/suspendre`
- [ ] Création entrée table `validations`
- [ ] Guards (gestionnaire/admin only)
- [ ] Tests unitaires

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-5--validation-dun-compte)

---

### Ticket #25 : [Backend] Service Email - Installation Nodemailer
**Estimation** : 2h  
**Labels** : `backend`, `p2`, `email`

**Description** :
Installer et configurer Nodemailer pour l'envoi d'emails.

**Tâches** :
- [ ] Installation Nodemailer + types
- [ ] Configuration de base
- [ ] Service `MailService` avec méthodes de base
- [ ] Tests unitaires (mock SMTP)

---

### Ticket #26 : [Backend] Templates Email - Validation
**Estimation** : 3h  
**Labels** : `backend`, `p2`, `email`

**Description** :
Créer les templates d'emails pour la validation des comptes (avec lien création MDP).

**Tâches** :
- [ ] Template Parent 1 (création MDP)
- [ ] URL app : Lire depuis `ConfigService.get('app_url')`
- [ ] Nom app : Lire depuis `ConfigService.get('app_name')`
- [ ] Expéditeur : Lire depuis ConfigService
- [ ] Template Parent 2 (co-parent création MDP)
- [ ] Template AM (création MDP)
- [ ] Intégration Handlebars
- [ ] Tests d'envoi

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-6--réception-de-la-notification)

---

### Ticket #27 : [Backend] Templates Email - Refus
**Estimation** : 1h  
**Labels** : `backend`, `p2`, `email`

**Description** :
Créer le template d'email pour le refus de compte.

**Tâches** :
- [ ] Template refus générique
- [ ] Variables dynamiques : Nom app, URL, expéditeur depuis ConfigService
- [ ] Intégration dans endpoint suspendre
- [ ] Tests d'envoi

---

### Ticket #28 : [Backend] Connexion - Vérification statut
**Estimation** : 2h  
**Labels** : `backend`, `p2`, `auth`

**Description** :
Modifier l'endpoint de connexion pour bloquer les comptes en attente ou suspendus.

**Tâches** :
- [ ] Modifier endpoint `POST /api/v1/auth/login`
- [ ] Bloquer si `statut = en_attente`
- [ ] Bloquer si `statut = suspendu`
- [ ] Messages d'erreur explicites
- [ ] Tests unitaires

**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-8--connexion-de-lutilisateur-validé)

---

### Ticket #29 : [Backend] Changement MDP obligatoire première connexion
**Estimation** : 2h  
**Labels** : `backend`, `p2`, `auth`, `security`

**Description** :
Implémenter le changement de mot de passe obligatoire pour les gestionnaires/admins à la première connexion.

**Tâches** :
- [ ] Endpoint `POST /api/v1/auth/change-password-required`
- [ ] Vérification flag `changement_mdp_obligatoire`
- [ ] Mise à jour flag après changement
- [ ] Tests unitaires

---

### Ticket #30 : [Backend] Service Documents Légaux
**Estimation** : 4h  
**Labels** : `backend`, `p2`, `juridique`, `rgpd`

**Description** :
Créer le service de gestion des documents légaux (CGU/Privacy) avec versioning.

**Tâches** :
- [ ] `DocumentsLegauxService` complet
- [ ] Upload avec versioning auto-incrémenté
- [ ] Calcul hash SHA-256
- [ ] Activation/désactivation versions
- [ ] Méthode `getDocumentsActifs()`
- [ ] Méthode `uploadNouvelleVersion()`
- [ ] Méthode `activerVersion()`
- [ ] Méthode `listerVersions()`
- [ ] Tests unitaires

**Référence** : [22_DOCUMENTS-LEGAUX.md](./22_DOCUMENTS-LEGAUX.md#service-documents-légaux)

---

### Ticket #31 : [Backend] API Documents Légaux
**Estimation** : 3h  
**Labels** : `backend`, `p2`, `juridique`, `rgpd`

**Description** :
Créer les endpoints REST pour gérer les documents légaux.

**Tâches** :
- [ ] `GET /api/v1/documents-legaux/actifs` (public)
- [ ] `GET /api/v1/documents-legaux/:type/versions` (admin)
- [ ] `POST /api/v1/documents-legaux` (upload, admin only)
- [ ] `PATCH /api/v1/documents-legaux/:id/activer` (admin only)
- [ ] `GET /api/v1/documents-legaux/:id/download` (public)
- [ ] Guards + validation
- [ ] Tests unitaires

**Référence** : [22_DOCUMENTS-LEGAUX.md](./22_DOCUMENTS-LEGAUX.md#apis)

---

### Ticket #32 : [Backend] Traçabilité acceptations documents
**Estimation** : 2h  
**Labels** : `backend`, `p2`, `rgpd`

**Description** :
Enregistrer les acceptations de documents légaux lors de l'inscription (traçabilité RGPD).

**Tâches** :
- [ ] Enregistrement dans `acceptations_documents` lors inscription
- [ ] Capture IP + User-Agent
- [ ] API `GET /api/v1/users/:id/acceptations` (admin)
- [ ] Tests unitaires

**Référence** : [22_DOCUMENTS-LEGAUX.md](./22_DOCUMENTS-LEGAUX.md#workflow-acceptation-utilisateur)

---

## 🟢 PRIORITÉ 3 : Frontend - Interfaces

### Ticket #33 : [Frontend] Écran Création Gestionnaire
**Estimation** : 3h  
**Labels** : `frontend`, `p3`, `auth`

**Description** :
Créer l'écran de création de gestionnaire (super admin uniquement).

**Tâches** :
- [ ] Formulaire (nom, prénom, email, MDP)
- [ ] Validation côté client
- [ ] Appel API `POST /gestionnaires`
- [ ] Messages succès/erreur

---

### Ticket #34 : [Réservé - Non utilisé]

---

### Ticket #35 : [Réservé - Non utilisé]

---

### Ticket #36 : [Frontend] Inscription Parent - Étape 1 (Parent 1) ✅
**Estimation** : 3h  
**Labels** : `frontend`, `p3`, `auth`, `cdc`  
**Statut** : ✅ TERMINÉ (PR #73 mergée le 2025-12-01)

**Description** :
Créer le formulaire d'inscription parent - étape 1/6 (informations Parent 1).

**Tâches** :
- [x] Formulaire identité Parent 1
- [x] Validation côté client
- [x] Pas de champ mot de passe
- [x] Navigation vers étape 2
- [x] Améliorations visuelles (labels 22px, champs 20px, espacement 32px)
- [x] Correction indicateur étape 1/6

---

### Ticket #37 : [Frontend] Inscription Parent - Étape 2 (Parent 2)
**Estimation** : 3h  
**Labels** : `frontend`, `p3`, `auth`, `cdc`

**Description** :
Créer le formulaire d'inscription parent - étape 2/6 (informations Parent 2 optionnel).

**Tâches** :
- [ ] Question "Ajouter un second parent ?"
- [ ] Formulaire identité Parent 2 (conditionnel)
- [ ] Checkbox "Même adresse"
- [ ] Navigation vers étape 3
- [ ] Pas de champ mot de passe
- [ ] Améliorations visuelles (mêmes que Step1)
- [ ] Correction indicateur étape 2/6

---

### Ticket #38 : [Frontend] Inscription Parent - Étape 3 (Enfants)
**Estimation** : 4h  
**Labels** : `frontend`, `p3`, `auth`, `cdc`, `upload`

**Description** :
Créer le formulaire d'inscription parent - étape 3/6 (informations enfants).

**Tâches** :
- [ ] Question "Enfant déjà né ?"
- [ ] Formulaire enfant (prénom, date, genre H/F obligatoire)
- [ ] Upload photo (si né)
- [ ] Validation taille (5MB)
- [ ] Bouton "Ajouter un autre enfant"
- [ ] Navigation vers étape 4

---

### Ticket #39 : [Frontend] Inscription Parent - Étapes 4-6 (Finalisation)
**Estimation** : 4h  
**Labels** : `frontend`, `p3`, `auth`, `cdc`

**Description** :
Créer les étapes finales de l'inscription parent (présentation, CGU, récapitulatif).

**Tâches** :
- [ ] Étape 4 : Textarea présentation
- [ ] Étape 5 : Checkbox CGU + liens PDF
- [ ] Étape 6 : Récapitulatif complet
- [ ] Bouton "Modifier" / "Valider"
- [ ] Appel API final
- [ ] Message confirmation

---

### Ticket #40 : [Frontend] Inscription AM - Panneau 1 (Identité)
**Estimation** : 3h  
**Labels** : `frontend`, `p3`, `auth`, `cdc`, `upload`

**Description** :
Créer le formulaire d'inscription AM - panneau 1/5 (identité).

**Tâches** :
- [ ] Formulaire identité
- [ ] Upload photo
- [ ] Checkbox consentement photo
- [ ] Pas de champ mot de passe
- [ ] Navigation vers panneau 2

---

### Ticket #41 : [Frontend] Inscription AM - Panneau 2 (Infos pro)
**Estimation** : 3h  
**Labels** : `frontend`, `p3`, `auth`, `cdc`

**Description** :
Créer le formulaire d'inscription AM - panneau 2/5 (informations professionnelles).

**Tâches** :
- [ ] Formulaire infos pro
- [ ] Champ NIR (15 chiffres, validation)
- [ ] Date/lieu naissance
- [ ] Agrément + date obtention
- [ ] Navigation vers présentation

---

### Ticket #42 : [Frontend] Inscription AM - Finalisation
**Estimation** : 3h  
**Labels** : `frontend`, `p3`, `auth`, `cdc`

**Description** :
Créer les étapes finales de l'inscription AM (présentation, CGU, récapitulatif).

**Tâches** :
- [ ] Textarea présentation
- [ ] Checkbox CGU + liens PDF
- [ ] Récapitulatif (NIR masqué)
- [ ] Appel API final
- [ ] Message confirmation

---

### Ticket #43 : [Frontend] Écran Création Mot de Passe
**Estimation** : 3h  
**Labels** : `frontend`, `p3`, `auth`

**Description** :
Créer l'écran de création de mot de passe (lien reçu par email).

**Tâches** :
- [ ] Page `/create-password?token=<uuid>`
- [ ] Vérification token (appel API)
- [ ] Formulaire MDP + confirmation
- [ ] Validation côté client (8 car, 1 maj, 1 chiffre)
- [ ] Appel API création MDP
- [ ] Redirection vers login

---

### Ticket #44 : [Frontend] Dashboard Gestionnaire - Structure
**Estimation** : 2h  
**Labels** : `frontend`, `p3`, `gestionnaire`

**Description** :
Créer la structure du dashboard gestionnaire avec 2 onglets.

**Tâches** :
- [ ] Layout avec 2 onglets (Parents / AM)
- [ ] Navigation entre onglets
- [ ] État vide ("Aucune demande")

---

### Ticket #45 : [Frontend] Dashboard Gestionnaire - Liste Parents
**Estimation** : 4h  
**Labels** : `frontend`, `p3`, `gestionnaire`

**Description** :
Créer la liste des parents en attente de validation.

**Tâches** :
- [ ] Appel API `GET /parents?statut=en_attente`
- [ ] Affichage liste avec cartes
- [ ] Boutons Valider/Refuser
- [ ] Modale confirmation
- [ ] Rafraîchissement après action

---

### Ticket #46 : [Frontend] Dashboard Gestionnaire - Liste AM
**Estimation** : 4h  
**Labels** : `frontend`, `p3`, `gestionnaire`

**Description** :
Créer la liste des assistantes maternelles en attente de validation.

**Tâches** :
- [ ] Appel API `GET /assistantes-maternelles?statut=en_attente`
- [ ] Affichage liste avec cartes
- [ ] NIR masqué
- [ ] Boutons Valider/Refuser
- [ ] Modale confirmation
- [ ] Rafraîchissement après action

---

### Ticket #47 : [Frontend] Écran Changement MDP Obligatoire
**Estimation** : 2h  
**Labels** : `frontend`, `p3`, `auth`, `security`

**Description** :
Créer l'écran de changement de mot de passe obligatoire (première connexion gestionnaire/admin).

**Tâches** :
- [ ] Détection flag `changement_mdp_obligatoire`
- [ ] Modale bloquante après login
- [ ] Formulaire MDP actuel + nouveau MDP
- [ ] Appel API
- [ ] Redirection vers dashboard

---

### Ticket #48 : [Frontend] Gestion Erreurs & Messages
**Estimation** : 2h  
**Labels** : `frontend`, `p3`, `ux`

**Description** :
Créer un système de gestion des erreurs et messages utilisateur.

**Tâches** :
- [ ] Intercepteur HTTP pour erreurs API
- [ ] Snackbars/Toasts pour succès/erreurs
- [ ] Messages explicites (compte en attente, refusé, etc.)

---

### Ticket #49 : [Frontend] Écran Gestion Documents Légaux (Admin)
**Estimation** : 5h  
**Labels** : `frontend`, `p3`, `juridique`, `admin`

**Description** :
Créer l'écran de gestion des documents légaux (CGU/Privacy) pour l'admin.

**Tâches** :
- [ ] Onglets CGU / Privacy
- [ ] Affichage version active
- [ ] Upload nouvelle version (PDF uniquement)
- [ ] Prévisualisation PDF
- [ ] Activation version
- [ ] Historique versions

**Référence** : [22_DOCUMENTS-LEGAUX.md](./22_DOCUMENTS-LEGAUX.md#interface-admin)

---

### Ticket #50 : [Frontend] Affichage dynamique CGU lors inscription
**Estimation** : 2h  
**Labels** : `frontend`, `p3`, `juridique`

**Description** :
Afficher dynamiquement les CGU/Privacy lors de l'inscription (avec numéro de version).

**Tâches** :
- [ ] Appel API `GET /documents-legaux/actifs`
- [ ] Liens vers PDF avec numéro de version
- [ ] Envoi version acceptée lors inscription

---

### Ticket #51 : [Frontend] Écran Logs Admin (optionnel v1.1)
**Estimation** : 4h  
**Labels** : `frontend`, `p3`, `admin`, `logs`

**Description** :
Créer l'écran de consultation des logs système (optionnel pour v1.1).

**Tâches** :
- [ ] Appel API logs
- [ ] Filtres (date, niveau, utilisateur)
- [ ] Pagination
- [ ] Export CSV

---

### Ticket #78 : [Frontend] Refonte Infrastructure Formulaires Multi-modes ✅
**Estimation** : 8h
**Labels** : `frontend`, `p3`, `refactoring`, `ux`
**Statut** : ✅ TERMINÉ (Fermé le 2026-01-27)

**Description** :
Créer une infrastructure générique pour gérer les formulaires en modes multiples (Editable / Readonly / Mobile / Desktop) afin d'harmoniser l'UI et faciliter la maintenance.

**Tâches** :
- [x] Créer `DisplayConfig` et `DisplayMode` (editable, readonly)
- [x] Créer `FormFieldWrapper` pour affichage uniforme readonly
- [x] Migrer `PersonalInfoFormScreen` (Parents/AM)
- [x] Migrer `ChildCardWidget` (Enfants)
- [x] Migrer `ProfessionalInfoFormScreen` (AM)
- [x] Migrer `PresentationFormScreen` (Motivation/CGU)
- [x] Implémenter layout "Vintage" (2:1) pour Desktop Readonly
- [x] Implémenter layout adaptatif pour Mobile Readonly
- [x] Harmoniser styles (champs beiges, polices)

---

## 🔵 PRIORITÉ 4 : Tests & Documentation

### Ticket #52 : [Tests] Tests unitaires Backend
**Estimation** : 8h  
**Labels** : `tests`, `p4`, `backend`

**Description** :
Créer les tests unitaires pour tous les services et controllers backend.

**Tâches** :
- [ ] Tests services (auth, user, mail, config, documents)
- [ ] Tests controllers
- [ ] Couverture > 80%
- [ ] Mocks (repository, ConfigService, MailService)

---

### Ticket #50 : [Tests] Tests intégration Backend
**Estimation** : 5h  
**Labels** : `tests`, `p4`, `backend`

**Description** :
Créer les tests d'intégration pour les workflows complets.

**Tâches** :
- [ ] Workflow complet Parent
- [ ] Workflow complet AM
- [ ] Workflow refus
- [ ] Workflow configuration initiale

---

### Ticket #51 : [Tests] Tests E2E Frontend
**Estimation** : 8h  
**Labels** : `tests`, `p4`, `frontend`

**Description** :
Créer les tests end-to-end pour les parcours utilisateurs.

**Tâches** :
- [ ] Workflow configuration initiale
- [ ] Workflow création gestionnaire
- [ ] Workflow inscription parent
- [ ] Workflow inscription AM
- [ ] Workflow dashboard gestionnaire

---

### Ticket #52 : [Doc] Documentation API OpenAPI/Swagger
**Estimation** : 3h  
**Labels** : `documentation`, `p4`, `api`

**Description** :
Générer et documenter l'API avec Swagger/OpenAPI.

**Tâches** :
- [ ] Génération Swagger depuis NestJS
- [ ] Documentation tous les endpoints
- [ ] Exemples de requêtes/réponses
- [ ] Schémas DTO

---

## ⚠️ CRITIQUES : Upload, Emails, Infra, Doc

### Ticket #53 : [Backend] Service Upload & Stockage fichiers
**Estimation** : 3h  
**Labels** : `backend`, `critique`, `upload`

**Description** :
Créer le service de gestion des uploads de fichiers (photos).

**Tâches** :
- [ ] Multer pour upload
- [ ] Validation (type MIME, taille max depuis config)
- [ ] Stockage dans `/uploads/photos/`
- [ ] Nettoyage fichiers orphelins
- [ ] Tests unitaires

---

### Ticket #54 : [Backend] API Téléchargement photos sécurisé
**Estimation** : 2h  
**Labels** : `backend`, `critique`, `upload`, `security`

**Description** :
Créer l'endpoint sécurisé pour télécharger les photos.

**Tâches** :
- [ ] Endpoint `GET /api/v1/files/:id`
- [ ] Vérification droits (parent voit ses enfants, AM voit son profil, gestionnaire voit tout)
- [ ] Stream fichier
- [ ] Tests unitaires

---

### Ticket #55 : [Backend] Service Logging (Winston)
**Estimation** : 3h  
**Labels** : `backend`, `critique`, `monitoring`

**Description** :
Mettre en place un système de logs centralisé avec Winston pour faciliter le debugging et le monitoring.

**Tâches** :
- [ ] Installation Winston + transports
- [ ] Configuration (console + fichier avec rotation daily)
- [ ] Logs applicatifs (info, warn, error)
- [ ] Logs emails (succès/échec SMTP avec détails)
- [ ] Logs connexions (qui se connecte quand, IP)
- [ ] Logs validations (qui valide quoi, timestamp)
- [ ] Rotation des logs (daily, max 30 jours)
- [ ] Tests

---

### Ticket #56 : [Frontend] Écran Logs Admin (optionnel v1.1)
**Estimation** : 4h  
**Labels** : `frontend`, `p3`, `monitoring`, `admin`

**Description** :
Créer un écran pour consulter les logs depuis l'interface admin (optionnel Phase 1.1).

**Tâches** :
- [ ] Page `/admin/logs` (super_admin only)
- [ ] Filtres (date, niveau, type)
- [ ] Pagination
- [ ] Recherche
- [ ] Export CSV

**Note** : Peut être fait en Phase 1.1 si le temps le permet

---

### Ticket #57 : [Infra] Volume Docker pour uploads
**Estimation** : 30min  
**Labels** : `infra`, `critique`, `docker`

**Description** :
Ajouter un volume Docker pour persister les fichiers uploadés.

**Tâches** :
- [ ] Ajout volume `/uploads` dans `docker-compose.yml`
- [ ] Persistance des fichiers uploadés
- [ ] Test redémarrage conteneur

---

### Ticket #58 : [Infra] Volume Docker pour documents légaux
**Estimation** : 30min  
**Labels** : `infra`, `critique`, `docker`

**Description** :
Ajouter un volume Docker pour persister les documents légaux (CGU/Privacy).

**Tâches** :
- [ ] Ajout volume `/documents/legaux` dans `docker-compose.yml`
- [ ] Persistance des PDF
- [ ] Test redémarrage conteneur

---

### Ticket #59 : [Doc] Guide installation & configuration
**Estimation** : 3h  
**Labels** : `documentation`, `critique`, `on-premise`

**Description** :
Rédiger le guide complet d'installation et de configuration pour les collectivités.

**Tâches** :
- [ ] Variables `.env` requises
- [ ] Génération secrets (JWT, encryption)
- [ ] Configuration SMTP courante
- [ ] Troubleshooting
- [ ] Commandes Docker Compose
- [ ] Backup/Restauration

---

## 📚 JURIDIQUE & CDC

### Ticket #60 : [Doc] Amendement CDC v1.4 - Suppression SMS
**Estimation** : 30min  
**Labels** : `documentation`, `cdc`

**Description** :
Amender le Cahier des Charges pour supprimer la mention des notifications SMS (pas de plus-value identifiée).

**Tâches** :
- [ ] Modifier CDC Section 3.1.6 (Notifications parent)
- [ ] Modifier CDC Section 3.2.5 (Notifications AM)
- [ ] Remplacer "Email OU SMS" par "Email"
- [ ] Supprimer toute mention de SMS
- [ ] Incrémenter version → v1.4
- [ ] Ajouter changelog : "Suppression notifications SMS (Email uniquement)"

---

### Ticket #61 : [Doc] Rédaction CGU/Privacy génériques v1
**Estimation** : 8h  
**Labels** : `documentation`, `juridique`, `rgpd`

**Description** :
Rédiger les documents légaux génériques (CGU et Politique de confidentialité) conformes RGPD.

**Tâches** :
- [ ] Rédaction CGU génériques (avec aide juriste)
- [ ] Rédaction Privacy génériques (RGPD compliant)
- [ ] Conversion en PDF
- [ ] Placement dans `/documents/legaux/`
- [ ] Calcul hash SHA-256

**⚠️ IMPORTANT** : Nécessite l'intervention d'un juriste.

---

## 📊 Résumé final

**Total** : 61 tickets  
**Estimation** : ~173h de développement

### Par priorité
- **P0 (Bloquant BDD)** : 7 tickets (~5h)
- **P1 (Bloquant Config)** : 7 tickets (~22h)
- **P2 (Backend)** : 18 tickets (~50h)
- **P3 (Frontend)** : 18 tickets (~60h) ← +1 ticket logs admin, +1 ticket refonte formulaires
- **P4 (Tests/Doc)** : 4 tickets (~24h)
- **Critiques** : 6 tickets (~13h) ← -2 email, +1 logs, +1 CDC
- **Juridique** : 1 ticket (~8h)

### Par domaine
- **BDD** : 7 tickets
- **Backend** : 23 tickets ← +1 logs
- **Frontend** : 18 tickets ← +1 logs admin, +1 refonte formulaires
- **Tests** : 3 tickets
- **Documentation** : 5 tickets ← +1 amendement CDC
- **Infra** : 2 tickets
- **Juridique** : 1 ticket

### Modifications par rapport à la version initiale
- ❌ **Supprimé** : Tickets "Renvoyer email validation" (backend + frontend) - Pas prioritaire
- ✅ **Ajouté** : Ticket #55 "Service Logging Winston" - Monitoring essentiel
- ✅ **Ajouté** : Ticket #56 "Écran Logs Admin" - Optionnel Phase 1.1
- ✅ **Ajouté** : Ticket #78 "Refonte Infrastructure Formulaires" - Harmonisation UI/UX

---

**Dernière mise à jour** : 27 Janvier 2026
**Version** : 1.2
**Statut** : ✅ À jour

