From be8b1f23ed7d9969aa27d76865916e58c7597059 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Tue, 10 Feb 2026 00:19:35 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20concept=20v1.3=20config=20(panneau=20Pa?= =?UTF-8?q?ram=C3=A8tres=203=20sections,=20num=C3=A9ros=20=3D=20Gitea)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 21_CONFIGURATION-SYSTEME: workflow sans /admin/setup, 3 sections, panneau unique - 23_LISTE-TICKETS: numéros de section = numéros Gitea, tickets #14/#15 alignés - 24_DECISIONS-PROJET: config initiale = panneau + navigation bloquée - BRIEFING-FRONTEND: tickets #12/#13 remplacés par panneau Paramètres - Suppression login_screen.dart.bak Co-authored-by: Cursor --- docs/21_CONFIGURATION-SYSTEME.md | 163 +++++++++-------------- docs/23_LISTE-TICKETS.md | 213 ++++++++++++++----------------- docs/24_DECISIONS-PROJET.md | 11 +- docs/BRIEFING-FRONTEND.md | 9 +- 4 files changed, 167 insertions(+), 229 deletions(-) diff --git a/docs/21_CONFIGURATION-SYSTEME.md b/docs/21_CONFIGURATION-SYSTEME.md index fc438b5..397e54d 100644 --- a/docs/21_CONFIGURATION-SYSTEME.md +++ b/docs/21_CONFIGURATION-SYSTEME.md @@ -1,7 +1,7 @@ # 🔧 Documentation Technique - Configuration Système On-Premise -**Version** : 1.0 -**Date** : 25 Novembre 2025 +**Version** : 1.1 +**Date** : 9 Février 2026 **Auteur** : Équipe PtitsPas **Référence** : Architecture On-Premise @@ -78,7 +78,7 @@ L'application P'titsPas est déployée **on-premise** chez différentes collecti 2. **ConfigService** : Cache en mémoire + chiffrement 3. **ConfigAPI** : Endpoints REST pour CRUD 4. **Guard Setup** : Redirection forcée si config incomplète -5. **Interface Admin** : Formulaire de configuration +5. **Interface Admin** : Panneau Paramètres (3 sections) dans le dashboard, première config + accès permanent --- @@ -304,93 +304,69 @@ export class ConfigService { ```mermaid sequenceDiagram - participant SA as Super Admin - participant App as Application - participant Guard as SetupGuard + participant Op as Opérateur + participant App as Application (Dashboard) participant API as ConfigAPI participant DB as PostgreSQL participant SMTP as Serveur SMTP - SA->>App: Première connexion - App->>Guard: Vérifier setup_completed - Guard->>DB: SELECT valeur FROM configuration
WHERE cle='setup_completed' - DB-->>Guard: 'false' + Op->>App: Première connexion (admin) + App->>API: GET /configuration/setup/status + API->>DB: setup_completed ? + DB-->>API: false + API-->>App: setupCompleted: false - Guard-->>App: Redirection forcée vers
/admin/setup + App->>App: Affiche panneau Configuration
et bloque les autres onglets - SA->>SA: Remplit formulaire config
(SMTP, app, sécurité) + Op->>Op: Remplit les 3 sections
(Email, Personnalisation, Avancé) - SA->>App: Clic "Tester la connexion SMTP" + Op->>App: Clic "Tester la connexion SMTP" App->>API: POST /api/v1/configuration/test-smtp API->>SMTP: Test connexion alt Test SMTP OK SMTP-->>API: ✅ Connexion réussie - API->>SA: Envoi email de test + API->>Op: Envoi email de test API-->>App: ✅ Test réussi - App-->>SA: Message: "Email de test envoyé" + App-->>Op: Message: "Email de test envoyé" else Test SMTP KO SMTP-->>API: ❌ Erreur connexion API-->>App: ❌ Erreur détaillée - App-->>SA: Message: "Erreur: vérifiez les paramètres" + App-->>Op: Message: "Erreur: vérifiez les paramètres" end - SA->>App: Clic "Sauvegarder" + Op->>App: Clic "Sauvegarder et terminer la configuration" App->>API: PATCH /api/v1/configuration/bulk
{smtp_host, smtp_port, ...} + API->>DB: UPDATE configuration SET valeur=... + API-->>App: OK - API->>DB: BEGIN TRANSACTION - API->>DB: UPDATE configuration SET valeur=...
FOR EACH key - API->>DB: UPDATE configuration
SET valeur='true'
WHERE cle='setup_completed' - API->>DB: COMMIT - + App->>API: POST /api/v1/configuration/setup/complete + API->>DB: SET setup_completed = true API->>API: Recharger cache ConfigService + API-->>App: OK - API-->>App: ✅ Configuration sauvegardée - App-->>SA: Redirection vers /admin/dashboard - - SA->>App: Accès complet à l'application + App->>App: Débloque la navigation
Message succès + Op->>App: Accès complet au dashboard ``` ### Étapes détaillées #### 1. Détection configuration incomplète -**Guard** : `SetupGuard` (NestJS) +**Backend** : Le `SetupGuard` (NestJS) vérifie `setup_completed`. Si false, il autorise l’accès au dashboard et aux APIs configuration (pas de redirection vers une page dédiée). Le **frontend** appelle `GET /configuration/setup/status` au chargement du dashboard admin ; si `setupCompleted === false`, il affiche directement le **panneau Paramètres** et désactive les autres onglets jusqu’à sauvegarde. + +**Guard** (exemple) : exemption des routes login + dashboard + APIs configuration. ```typescript -@Injectable() -export class SetupGuard implements CanActivate { - constructor(private configService: ConfigService) {} - - canActivate(context: ExecutionContext): boolean { - const request = context.switchToHttp().getRequest(); - const setupCompleted = this.configService.get('setup_completed', false); - - // Exemptions - const exemptedRoutes = ['/auth/login', '/admin/setup', '/api/v1/configuration']; - if (exemptedRoutes.some(route => request.url.includes(route))) { - return true; - } - - // Si setup non complété, bloquer - if (!setupCompleted) { - throw new HttpException( - 'Configuration initiale requise', - HttpStatus.TEMPORARY_REDIRECT, - { location: '/admin/setup' } - ); - } - - return true; - } -} +// Exemptions : /auth/login, /api/v1/configuration, routes dashboard admin +// Si setup non complété : pas de redirection HTTP ; le frontend gère l’affichage du panneau Config et le blocage des onglets. ``` -#### 2. Formulaire Setup (Frontend) +#### 2. Panneau Paramètres (Frontend) -**3 onglets** : +**Une seule page avec 3 sections** (blocs successifs, pas d’onglets dans le formulaire) : -##### Onglet 1 : Configuration Email 📧 +##### Section 1 : Configuration Email 📧 | Champ | Type | Valeur par défaut | Obligatoire | |-------|------|-------------------|-------------| @@ -405,7 +381,7 @@ export class SetupGuard implements CanActivate { **Bouton** : "🧪 Tester la connexion SMTP" -##### Onglet 2 : Personnalisation 🎨 +##### Section 2 : Personnalisation 🎨 | Champ | Type | Valeur par défaut | Obligatoire | |-------|------|-------------------|-------------| @@ -413,7 +389,7 @@ export class SetupGuard implements CanActivate { | URL de l'application | URL | `https://app.ptits-pas.fr` | ✅ | | Logo | File (PNG/JPG) | Logo par défaut | ❌ | -##### Onglet 3 : Paramètres avancés ⚙️ +##### Section 3 : Paramètres avancés ⚙️ | Champ | Type | Valeur par défaut | Obligatoire | |-------|------|-------------------|-------------| @@ -421,7 +397,7 @@ export class SetupGuard implements CanActivate { | Durée session JWT (heures) | Number | `24` | ✅ | | Taille max upload (MB) | Number | `5` | ✅ | -**Bouton** : "💾 Sauvegarder et terminer la configuration" +**Bouton** : "💾 Sauvegarder et terminer la configuration" (première config) ou "💾 Enregistrer" (accès permanent). --- @@ -536,60 +512,39 @@ Content-Type: application/json ## 💻 Interface Admin -### Écran Setup Initial +### Panneau Paramètres / Configuration (unique) + +Un **seul panneau** dans le dashboard admin, avec **3 sections** affichées sur une même page (défilement si besoin). Pas d’onglets dans le formulaire. + +- **Première configuration** (au déploiement, `setup_completed === false`) : l’opérateur arrive sur le dashboard ; le panneau Configuration est affiché par défaut et les **autres onglets sont bloqués** jusqu’à clic sur « Sauvegarder et terminer la configuration » (PATCH bulk + POST setup/complete). +- **Accès permanent** : même panneau accessible via l’onglet « Configuration » / « Paramètres » du dashboard ; pas de blocage, simple modification et enregistrement (PATCH bulk). ``` ┌─────────────────────────────────────────────────────────┐ -│ 🚀 Configuration Initiale - P'titsPas │ -├─────────────────────────────────────────────────────────┤ -│ │ -│ Bienvenue ! Configurez votre installation P'titsPas │ -│ │ -│ [ 📧 Email ] [ 🎨 Personnalisation ] [ ⚙️ Avancé ] │ +│ Dashboard Admin [ Gestionnaires ] [ Parents ] ... │ +│ [ Configuration ] ← onglet actif │ ├─────────────────────────────────────────────────────────┤ │ │ │ 📧 Configuration Email (SMTP) │ +│ Serveur SMTP * [_________________________________] │ +│ Port * [____] Sécurité [▼] ☐ Auth requise │ +│ Utilisateur [__________] Mot de passe [__________] │ +│ Nom expéditeur * [__________] Email * [__________] │ +│ [ 🧪 Tester la connexion SMTP ] │ │ │ -│ Serveur SMTP * │ -│ [_____________________________________________] │ -│ Ex: mail.mairie-bezons.fr, smtp.gmail.com │ -│ │ -│ Port SMTP * │ -│ [_____] 25 (standard), 465 (SSL), 587 (STARTTLS) │ -│ │ -│ Sécurité * │ -│ [ ▼ Aucune ] STARTTLS SSL/TLS │ -│ │ -│ ☐ Authentification requise │ -│ │ -│ Utilisateur SMTP │ -│ [_____________________________________________] │ -│ │ -│ Mot de passe SMTP │ -│ [_____________________________________________] │ -│ │ -│ Nom de l'expéditeur * │ -│ [_____________________________________________] │ -│ Ex: P'titsPas - Mairie de Bezons │ -│ │ -│ Email expéditeur * │ -│ [_____________________________________________] │ -│ Ex: noreply@mairie-bezons.fr │ -│ │ -│ [ 🧪 Tester la connexion SMTP ] │ -│ │ -│ ───────────────────────────────────────────────── │ -│ │ -│ [ ← Précédent ] [ Suivant → ] │ +│ ───────────────────────────────────────────────── │ +│ 🎨 Personnalisation │ +│ Nom application * [__________] URL * [__________] │ +│ Logo [ Choisir un fichier ] │ +│ ───────────────────────────────────────────────── │ +│ ⚙️ Paramètres avancés │ +│ Durée token MDP (jours) [__] JWT (h) [__] Upload MB [__] │ │ │ +│ [ 💾 Sauvegarder et terminer la configuration ] │ +│ (ou « Enregistrer » si config déjà complétée) │ └─────────────────────────────────────────────────────────┘ ``` -### Écran Paramètres (accès permanent) - -Identique au Setup Initial, mais accessible depuis le menu admin : -- Menu Admin → Paramètres → Configuration Système - --- ## 📋 Exemples de configuration @@ -706,7 +661,7 @@ PORT=3000 --- -**Dernière mise à jour** : 25 Novembre 2025 -**Version** : 1.0 +**Dernière mise à jour** : 9 Février 2026 +**Version** : 1.1 **Statut** : ✅ Document validé diff --git a/docs/23_LISTE-TICKETS.md b/docs/23_LISTE-TICKETS.md index 0350cd3..8e0b98d 100644 --- a/docs/23_LISTE-TICKETS.md +++ b/docs/23_LISTE-TICKETS.md @@ -1,7 +1,7 @@ # 🎫 Liste Complète des Tickets - Projet P'titsPas -**Version** : 1.2 -**Date** : 27 Janvier 2026 +**Version** : 1.4 +**Date** : 9 Février 2026 **Auteur** : Équipe PtitsPas **Estimation totale** : ~184h @@ -9,52 +9,27 @@ ## 🔗 Liste des tickets Gitea -Correspondance entre les numéros d’issues Gitea et les tickets de ce document. +**Les numéros de section dans ce document = numéros d’issues Gitea.** Ticket #14 dans le doc = issue Gitea #14, etc. Source : dépôt `jmartin/petitspas` (état au 9 février 2026). -| 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 | -| 82 | Frontend - Écran Login mobile | P3 | ✅ Fermé | § Ticket #82 | -| 83 | Frontend - RegisterChoiceScreen mobile | P3 | ✅ Fermé | § Ticket #83 | +| Gitea # | Titre (dépôt) | Statut | +|--------|----------------|--------| +| 3 | [BDD] Ajout champs manquants conformité CDC | ✅ Fermé | +| 4 | [BDD] Ajout table/champ présentation dossier parent | ✅ Fermé | +| 5 | [BDD] Ajout gestion tokens création mot de passe | ✅ Fermé | +| 6 | [BDD] Ajout champ genre obligatoire enfants | ✅ Fermé | +| 7 | [BDD] Supprimer champs obsolètes | ✅ Fermé | +| 8 | [BDD] Table configuration système | ✅ Fermé | +| 9 | [BDD] Tables documents légaux & acceptations | ✅ Fermé | +| 10 | [Backend] Service Configuration | ✅ Fermé | +| 11 | [Backend] API Configuration | ✅ Fermé | +| 12 | [Backend] Guard Configuration Initiale | ✅ Fermé | +| 13 | [Backend] Adaptation MailService pour config dynamique | Ouvert | +| 14 | [Frontend] Panneau Paramètres / Configuration (première config + accès permanent) | Ouvert | +| 15 | [Frontend] Écran Paramètres (accès permanent) | Ouvert | +| 16 | [Doc] Documentation configuration on-premise | Ouvert | +| 17–88 | (voir sections ci‑dessous ; #78, #79, #81, #83, #82, #86, #87, #88, etc.) | — | -*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`. - ---- - -## 🔗 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`. +*Gitea #1 et #2 = anciens tickets de test (fermés). Liste complète : https://git.ptits-pas.fr/jmartin/petitspas/issues* --- @@ -77,7 +52,7 @@ Correspondance entre les numéros d’issues Gitea et les tickets de ce document ## 🔴 PRIORITÉ 0 : Amendements Base de Données (BLOQUANT) -### Ticket #1 : [BDD] Ajout champs manquants conformité CDC +### Ticket #3 : [BDD] Ajout champs manquants conformité CDC **Estimation** : 1h **Labels** : `bdd`, `p0-bloquant`, `cdc` @@ -95,7 +70,7 @@ Ajouter les champs manquants dans la base de données pour être conforme au Cah --- -### Ticket #2 : [BDD] Ajout table/champ présentation dossier parent +### Ticket #4 : [BDD] Ajout table/champ présentation dossier parent **Estimation** : 30min **Labels** : `bdd`, `p0-bloquant`, `cdc` @@ -109,7 +84,7 @@ Ajouter un champ pour stocker la présentation du dossier parent (étape 4 de l' --- -### Ticket #3 : [BDD] Ajout gestion tokens création mot de passe ✅ +### Ticket #5 : [BDD] Ajout gestion tokens création mot de passe ✅ **Estimation** : 30min **Labels** : `bdd`, `p0-bloquant`, `security` **Statut** : ✅ TERMINÉ (Fermé le 2025-11-28) @@ -125,7 +100,7 @@ Ajouter les champs nécessaires pour gérer les tokens de création de mot de pa --- -### Ticket #4 : [BDD] Ajout champ genre obligatoire enfants ✅ +### Ticket #6 : [BDD] Ajout champ genre obligatoire enfants ✅ **Estimation** : 30min **Labels** : `bdd`, `p0-bloquant`, `cdc` **Statut** : ✅ TERMINÉ (Fermé le 2025-11-28) @@ -140,7 +115,7 @@ Ajouter le champ `genre` obligatoire (H/F) dans la table `enfants`. --- -### Ticket #5 : [BDD] Supprimer champs obsolètes +### Ticket #7 : [BDD] Supprimer champs obsolètes **Estimation** : 30min **Labels** : `bdd`, `p0-bloquant`, `cleanup` @@ -157,7 +132,7 @@ Supprimer les champs obsolètes identifiés lors de l'audit. --- -### Ticket #6 : [BDD] Table configuration système +### Ticket #8 : [BDD] Table configuration système **Estimation** : 1h **Labels** : `bdd`, `p0-bloquant`, `on-premise` @@ -175,7 +150,7 @@ Créer la table `configuration` pour stocker les paramètres système (SMTP, app --- -### Ticket #7 : [BDD] Tables documents légaux & acceptations ✅ +### Ticket #9 : [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) @@ -198,7 +173,7 @@ Créer les tables pour gérer les versions des documents légaux (CGU/Privacy) e ## 🟠 PRIORITÉ 1 : Configuration Système (BLOQUANT) -### Ticket #8 : [Backend] Service Configuration +### Ticket #10 : [Backend] Service Configuration **Estimation** : 4h **Labels** : `backend`, `p1-bloquant`, `on-premise` @@ -219,7 +194,7 @@ Créer le service de configuration avec cache en mémoire et chiffrement AES-256 --- -### Ticket #9 : [Backend] API Configuration +### Ticket #11 : [Backend] API Configuration **Estimation** : 3h **Labels** : `backend`, `p1-bloquant`, `on-premise` @@ -238,26 +213,25 @@ Créer les endpoints REST pour gérer la configuration système. --- -### Ticket #10 : [Backend] Guard Configuration Initiale +### Ticket #12 : [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. +Créer un Guard/Middleware qui détecte si la configuration initiale est incomplète. Le frontend affiche alors directement le panneau Configuration du dashboard et bloque la navigation jusqu'à sauvegarde (pas de page dédiée `/admin/setup`). **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` +- [ ] Si false : autoriser accès au dashboard et aux APIs configuration (le frontend gère l’affichage du panneau Config et le blocage des onglets) +- [ ] Exemption pour routes publiques (login, register) et pour les APIs `/api/v1/configuration` - [ ] Tests unitaires **Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#workflow-setup-initial) --- -### Ticket #11 : [Backend] Adaptation MailService pour config dynamique +### Ticket #13 : [Backend] Adaptation MailService pour config dynamique **Estimation** : 3h **Labels** : `backend`, `p1-bloquant`, `on-premise`, `email` @@ -275,44 +249,41 @@ Adapter le service email pour utiliser la configuration dynamique depuis la BDD --- -### Ticket #12 : [Frontend] Écran Configuration Initiale (Setup Wizard) -**Estimation** : 6h +### Ticket #14 : [Frontend] Panneau Paramètres / Configuration (première config + accès permanent) +**Estimation** : 5h **Labels** : `frontend`, `p1-bloquant`, `on-premise` **Description** : -Créer l'écran de configuration initiale (Setup Wizard) accessible à la première connexion du super admin. +Un seul panneau **Paramètres / Configuration** dans le dashboard admin, avec **3 sections** sur une même page (pas d’onglets dédiés au formulaire : Email, Personnalisation, Avancé). Utilisé à la fois pour la **première configuration** (au déploiement, par un opérateur) et pour l’**accès permanent** (menu ou onglet Configuration). Lorsque `setup_completed` est false, le dashboard affiche directement ce panneau et **bloque la navigation** (autres onglets désactivés) jusqu’à sauvegarde. **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) +- [ ] Panneau Configuration dans le dashboard admin (onglet ou entrée de menu dédiée) +- [ ] Une seule page avec 3 sections : **Email (SMTP)** ; **Personnalisation** (nom app, URL, logo) ; **Avancé** (durées token MDP, JWT, taille max upload) - [ ] Bouton "Tester la connexion SMTP" (appel API + feedback) - [ ] Validation côté client -- [ ] Sauvegarde (appel API `PATCH /configuration/bulk`) -- [ ] Message succès + redirection dashboard +- [ ] Sauvegarde : `PATCH /configuration/bulk` puis `POST /configuration/setup/complete` si première config +- [ ] Si `setup_completed` false au chargement : afficher ce panneau par défaut et bloquer les autres onglets jusqu’à sauvegarde +- [ ] Message succès ; après première config, déblocage de la navigation **Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#interface-admin) --- -### Ticket #13 : [Frontend] Écran Paramètres (accès permanent) -**Estimation** : 2h +### Ticket #15 : [Frontend] Écran Paramètres (accès permanent) / Intégration panneau +**Estimation** : 1h **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). +S’assurer que le panneau Paramètres (décrit en #14) est accessible en permanence depuis le dashboard admin (onglet « Configuration » ou « Paramètres »). Même interface que pour la première config ; affichage des valeurs actuelles, modification et sauvegarde sans blocage de navigation. **Tâches** : -- [ ] Page `/admin/parametres` (accessible depuis menu admin) -- [ ] Même interface que Setup Wizard -- [ ] Affichage valeurs actuelles -- [ ] Modification et sauvegarde +- [ ] Onglet ou entrée menu « Configuration » / « Paramètres » dans le dashboard admin pointant vers le même panneau que #14 +- [ ] Chargement des valeurs actuelles (GET `/configuration` ou par catégorie) +- [ ] Modification et sauvegarde (PATCH bulk) sans appel à `setup/complete` --- -### Ticket #14 : [Doc] Documentation configuration on-premise +### Ticket #16 : [Doc] Documentation configuration on-premise **Estimation** : 2h **Labels** : `documentation`, `p1-bloquant`, `on-premise` @@ -331,9 +302,25 @@ Rédiger la documentation pour aider les collectivités à configurer l'applicat --- +### Ticket #86 : [Backend] Guard Configuration Initiale (concept v1.3) +**Estimation** : 2h +**Labels** : `backend`, `p1-bloquant`, `on-premise` + +Issue Gitea ouverte pour le Guard aligné avec le concept v1.3 (pas de redirection vers `/admin/setup`, le frontend affiche le panneau Configuration et bloque la navigation). Voir aussi Ticket #12 (version fermée). + +--- + +### Ticket #88 : [Frontend] Intégration panneau Paramètres au dashboard +**Estimation** : 1h +**Labels** : `frontend`, `p1-bloquant`, `on-premise` + +Complément de #14 et #15 : s’assurer que le panneau Paramètres est accessible en permanence (onglet Configuration, chargement des valeurs, sauvegarde PATCH bulk sans `setup/complete`). + +--- + ## 🟢 PRIORITÉ 2 : Backend - Authentification & Gestion Comptes -### Ticket #15 : [Backend] API Création gestionnaire +### Ticket #17 : [Backend] API Création gestionnaire **Estimation** : 3h **Labels** : `backend`, `p2`, `auth` @@ -353,7 +340,7 @@ Créer l'endpoint pour permettre au super admin de créer des gestionnaires. --- -### Ticket #16 : [Backend] API Inscription Parent (étape 1 - Parent 1) +### Ticket #18 : [Backend] API Inscription Parent (étape 1 - Parent 1) **Estimation** : 4h **Labels** : `backend`, `p2`, `auth`, `cdc` @@ -373,7 +360,7 @@ Créer l'endpoint d'inscription Parent (étape 1/6 : informations Parent 1). --- -### Ticket #17 : [Backend] API Inscription Parent (étape 2 - Parent 2) +### Ticket #19 : [Backend] API Inscription Parent (étape 2 - Parent 2) **Estimation** : 2h **Labels** : `backend`, `p2`, `auth`, `cdc` @@ -460,7 +447,7 @@ Finalisation de l'inscription parent (présentation, CGU, récapitulatif - inté --- -### Ticket #22 : [Backend] API Création mot de passe +### Ticket #24 : [Backend] API Création mot de passe **Estimation** : 3h **Labels** : `backend`, `p2`, `auth`, `security` @@ -479,7 +466,7 @@ Créer les endpoints pour permettre aux utilisateurs de créer leur mot de passe --- -### Ticket #23 : [Backend] API Liste comptes en attente +### Ticket #25 : [Backend] API Liste comptes en attente **Estimation** : 2h **Labels** : `backend`, `p2`, `gestionnaire` @@ -497,7 +484,7 @@ Créer les endpoints pour lister les comptes en attente de validation. --- -### Ticket #24 : [Backend] API Validation/Refus comptes +### Ticket #26 : [Backend] API Validation/Refus comptes **Estimation** : 3h **Labels** : `backend`, `p2`, `gestionnaire` @@ -515,7 +502,7 @@ Créer les endpoints pour valider ou refuser les comptes en attente. --- -### Ticket #25 : [Backend] Service Email - Installation Nodemailer +### Ticket #27 : [Backend] Service Email - Installation Nodemailer **Estimation** : 2h **Labels** : `backend`, `p2`, `email` @@ -530,7 +517,7 @@ Installer et configurer Nodemailer pour l'envoi d'emails. --- -### Ticket #26 : [Backend] Templates Email - Validation +### Ticket #28 : [Backend] Templates Email - Validation **Estimation** : 3h **Labels** : `backend`, `p2`, `email` @@ -551,7 +538,7 @@ Créer les templates d'emails pour la validation des comptes (avec lien créatio --- -### Ticket #27 : [Backend] Templates Email - Refus +### Ticket #29 : [Backend] Templates Email - Refus **Estimation** : 1h **Labels** : `backend`, `p2`, `email` @@ -566,7 +553,7 @@ Créer le template d'email pour le refus de compte. --- -### Ticket #28 : [Backend] Connexion - Vérification statut +### Ticket #30 : [Backend] Connexion - Vérification statut **Estimation** : 2h **Labels** : `backend`, `p2`, `auth` @@ -584,7 +571,7 @@ Modifier l'endpoint de connexion pour bloquer les comptes en attente ou suspendu --- -### Ticket #29 : [Backend] Changement MDP obligatoire première connexion +### Ticket #31 : [Backend] Changement MDP obligatoire première connexion **Estimation** : 2h **Labels** : `backend`, `p2`, `auth`, `security` @@ -599,7 +586,7 @@ Implémenter le changement de mot de passe obligatoire pour les gestionnaires/ad --- -### Ticket #30 : [Backend] Service Documents Légaux +### Ticket #32 : [Backend] Service Documents Légaux **Estimation** : 4h **Labels** : `backend`, `p2`, `juridique`, `rgpd` @@ -621,7 +608,7 @@ Créer le service de gestion des documents légaux (CGU/Privacy) avec versioning --- -### Ticket #31 : [Backend] API Documents Légaux +### Ticket #33 : [Backend] API Documents Légaux **Estimation** : 3h **Labels** : `backend`, `p2`, `juridique`, `rgpd` @@ -641,7 +628,7 @@ Créer les endpoints REST pour gérer les documents légaux. --- -### Ticket #32 : [Backend] Traçabilité acceptations documents +### Ticket #34 : [Backend] Traçabilité acceptations documents **Estimation** : 2h **Labels** : `backend`, `p2`, `rgpd` @@ -660,7 +647,7 @@ Enregistrer les acceptations de documents légaux lors de l'inscription (traçab ## 🟢 PRIORITÉ 3 : Frontend - Interfaces -### Ticket #33 : [Frontend] Écran Création Gestionnaire +### Ticket #35 : [Frontend] Écran Création Gestionnaire **Estimation** : 3h **Labels** : `frontend`, `p3`, `auth` @@ -675,14 +662,6 @@ Créer l'écran de création de gestionnaire (super admin uniquement). --- -### 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` @@ -1036,7 +1015,7 @@ Créer les tests unitaires pour tous les services et controllers backend. --- -### Ticket #50 : [Tests] Tests intégration Backend +### Ticket #53 : [Tests] Tests intégration Backend **Estimation** : 5h **Labels** : `tests`, `p4`, `backend` @@ -1051,7 +1030,7 @@ Créer les tests d'intégration pour les workflows complets. --- -### Ticket #51 : [Tests] Tests E2E Frontend +### Ticket #54 : [Tests] Tests E2E Frontend **Estimation** : 8h **Labels** : `tests`, `p4`, `frontend` @@ -1067,7 +1046,7 @@ Créer les tests end-to-end pour les parcours utilisateurs. --- -### Ticket #52 : [Doc] Documentation API OpenAPI/Swagger +### Ticket #55 : [Doc] Documentation API OpenAPI/Swagger **Estimation** : 3h **Labels** : `documentation`, `p4`, `api` @@ -1084,7 +1063,7 @@ Générer et documenter l'API avec Swagger/OpenAPI. ## ⚠️ CRITIQUES : Upload, Emails, Infra, Doc -### Ticket #53 : [Backend] Service Upload & Stockage fichiers +### Ticket #56 : [Backend] Service Upload & Stockage fichiers **Estimation** : 3h **Labels** : `backend`, `critique`, `upload` @@ -1115,7 +1094,7 @@ Créer l'endpoint sécurisé pour télécharger les photos. --- -### Ticket #55 : [Backend] Service Logging (Winston) +### Ticket #58 : [Backend] Service Logging (Winston) **Estimation** : 3h **Labels** : `backend`, `critique`, `monitoring` @@ -1134,7 +1113,7 @@ Mettre en place un système de logs centralisé avec Winston pour faciliter le d --- -### Ticket #56 : [Frontend] Écran Logs Admin (optionnel v1.1) +### Ticket #51 (réf.) : [Frontend] Écran Logs Admin (optionnel v1.1) **Estimation** : 4h **Labels** : `frontend`, `p3`, `monitoring`, `admin` @@ -1152,7 +1131,7 @@ Créer un écran pour consulter les logs depuis l'interface admin (optionnel Pha --- -### Ticket #57 : [Infra] Volume Docker pour uploads +### Ticket #59 : [Infra] Volume Docker pour uploads **Estimation** : 30min **Labels** : `infra`, `critique`, `docker` @@ -1166,7 +1145,7 @@ Ajouter un volume Docker pour persister les fichiers uploadés. --- -### Ticket #58 : [Infra] Volume Docker pour documents légaux +### Ticket #60 : [Infra] Volume Docker pour documents légaux **Estimation** : 30min **Labels** : `infra`, `critique`, `docker` @@ -1180,7 +1159,7 @@ Ajouter un volume Docker pour persister les documents légaux (CGU/Privacy). --- -### Ticket #59 : [Doc] Guide installation & configuration +### Ticket #61 : [Doc] Guide installation & configuration **Estimation** : 3h **Labels** : `documentation`, `critique`, `on-premise` @@ -1199,7 +1178,7 @@ Rédiger le guide complet d'installation et de configuration pour les collectivi ## 📚 JURIDIQUE & CDC -### Ticket #60 : [Doc] Amendement CDC v1.4 - Suppression SMS +### Ticket #62 : [Doc] Amendement CDC v1.4 - Suppression SMS **Estimation** : 30min **Labels** : `documentation`, `cdc` @@ -1216,7 +1195,7 @@ Amender le Cahier des Charges pour supprimer la mention des notifications SMS (p --- -### Ticket #61 : [Doc] Rédaction CGU/Privacy génériques v1 +### Ticket #63 : [Doc] Rédaction CGU/Privacy génériques v1 **Estimation** : 8h **Labels** : `documentation`, `juridique`, `rgpd` @@ -1258,6 +1237,8 @@ Rédiger les documents légaux génériques (CGU et Politique de confidentialit - **Juridique** : 1 ticket ### Modifications par rapport à la version initiale +- ✅ **v1.4** : Numéros de section du doc = numéros Gitea (Ticket #n = issue #n). Tableau et sections renumérotés en conséquence ; #87 fermé (doublon de #14). +- ✅ **Concept v1.3** : Configuration initiale = un seul panneau Paramètres (3 sections) dans le dashboard ; plus de page dédiée « Setup Wizard » ; navigation bloquée jusqu’à sauvegarde au premier déploiement. Tickets #10, #12, #13 alignés. - ❌ **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 @@ -1269,7 +1250,7 @@ Rédiger les documents légaux génériques (CGU et Politique de confidentialit --- -**Dernière mise à jour** : 27 Janvier 2026 -**Version** : 1.2 -**Statut** : ✅ À jour +**Dernière mise à jour** : 9 Février 2026 +**Version** : 1.4 +**Statut** : ✅ Aligné avec le dépôt Gitea diff --git a/docs/24_DECISIONS-PROJET.md b/docs/24_DECISIONS-PROJET.md index 21b6f33..fd8a72d 100644 --- a/docs/24_DECISIONS-PROJET.md +++ b/docs/24_DECISIONS-PROJET.md @@ -1,7 +1,7 @@ # 📋 Décisions Projet - P'titsPas -**Version** : 1.0 -**Date** : 25 Novembre 2025 +**Version** : 1.1 +**Date** : 9 Février 2026 **Auteur** : Équipe PtitsPas --- @@ -49,7 +49,7 @@ ptitspas-app/ **Solution technique** : - Table `configuration` en BDD (clé/valeur) -- Setup Wizard à la première connexion +- Panneau Paramètres (3 sections) dans le dashboard à la première connexion ; navigation bloquée jusqu'à sauvegarde - Configuration SMTP dynamique - Personnalisation (nom app, logo, URL) @@ -559,10 +559,11 @@ docs/ | Date | Version | Modifications | |------|---------|---------------| | 25/11/2025 | 1.0 | Création du document - Toutes les décisions initiales | +| 09/02/2026 | 1.1 | Configuration initiale : un seul panneau Paramètres (3 sections) dans le dashboard, plus de Setup Wizard dédié ; navigation bloquée jusqu'à sauvegarde | --- -**Dernière mise à jour** : 25 Novembre 2025 -**Version** : 1.0 +**Dernière mise à jour** : 9 Février 2026 +**Version** : 1.1 **Statut** : ✅ Document validé diff --git a/docs/BRIEFING-FRONTEND.md b/docs/BRIEFING-FRONTEND.md index fde9ca1..8c16c06 100644 --- a/docs/BRIEFING-FRONTEND.md +++ b/docs/BRIEFING-FRONTEND.md @@ -61,7 +61,8 @@ changement_mdp_obligatoire: true (première connexion) | # | Ticket | Description | Effort | |---|--------|-------------|--------| -| **#14** | Setup Wizard | Écran configuration initiale (SMTP, app) | 4-5h | +| **#12** | Panneau Paramètres / Configuration | Une page avec 3 sections (Email, Personnalisation, Avancé) ; première config = affichage direct + navigation bloquée jusqu'à sauvegarde | 5h | +| **#13** | Intégration panneau au dashboard | Onglet Configuration, accès permanent, même interface | 1h | | **#47** | Changement MDP Obligatoire | Modale bloquante après login si flag=true | 1-2h | | **#35** | Création Gestionnaire | Formulaire création gestionnaire | 2-3h | @@ -256,11 +257,11 @@ Configuration des appels API avec intercepteurs. ## Recommandation de démarrage 1. **Ticket #47** - Modale changement MDP obligatoire (simple, rapide) -2. **Ticket #14** - Setup Wizard (écran configuration initiale) +2. **Tickets #12 + #13** - Panneau Paramètres (3 sections) : première config + onglet Configuration dans le dashboard 3. **Ticket #35** - Formulaire création gestionnaire -Ces 3 tickets complètent le **workflow d'initialisation** ! +Ces tickets complètent le **workflow d'initialisation** ! --- -*Dernière mise à jour : 27 janvier 2026* +*Dernière mise à jour : 9 février 2026*