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 503aa51..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,54 +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 | -| 84 | Bug - Connexion admin : erreur profil et redirection | P3 | ✅ FermĂ© | § Ticket #84 | -| 85 | Frontend - Bug correctifs modale Changement MDP | P3 | Ouvert | § Ticket #85 | - -*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 Ă  #85) ; #84 et #85 ont un numĂ©ro Gitea. 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* --- @@ -79,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` @@ -97,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` @@ -111,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) @@ -127,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) @@ -142,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` @@ -159,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` @@ -177,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) @@ -200,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` @@ -221,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` @@ -240,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` @@ -277,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` @@ -333,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` @@ -355,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` @@ -375,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` @@ -462,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` @@ -481,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` @@ -499,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` @@ -517,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` @@ -532,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` @@ -553,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` @@ -568,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` @@ -586,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` @@ -601,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` @@ -623,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` @@ -643,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` @@ -662,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` @@ -677,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` @@ -888,38 +865,6 @@ CrĂ©er l'Ă©cran de changement de mot de passe obligatoire (premiĂšre connexion g --- -### Ticket #84 : [Bug] Connexion admin – erreur rĂ©cupĂ©ration profil et pas de redirection -**Gitea** : [#84](https://git.ptits-pas.fr/jmartin/petitspas/issues/84) -**Statut** : ✅ FermĂ© - -**Description** : -Bug Ă  la connexion admin : erreur lors de la rĂ©cupĂ©ration du profil et absence de redirection attendue. - ---- - -### Ticket #85 : [Frontend] Bug – Correctifs modale Changement MDP (premiĂšre connexion admin) -**Gitea** : [#85](https://git.ptits-pas.fr/jmartin/petitspas/issues/85) -**Estimation** : 1h -**Labels** : `frontend`, `p3`, `bug`, `auth`, `ux` - -**Description** : -Correctifs et amĂ©liorations de la modale de changement de mot de passe obligatoire affichĂ©e Ă  la premiĂšre connexion admin (lien avec Ticket #47). - -**PĂ©rimĂštre** : -- Ajustements visuels / UX de la modale (`ChangePasswordDialog`) -- CohĂ©rence charte graphique, espacements, lisibilitĂ© -- Comportement (validation, messages d'erreur, fermeture) -- Lien de test en debug sur l'Ă©cran login (« Test modale MDP ») pour faciliter les rĂ©glages - -**TĂąches** : -- [ ] Revoir le design de la modale (relief, bordures, couleurs) -- [ ] VĂ©rifier les champs (MDP actuel, nouveau, confirmation) et validations -- [ ] Ajuster les textes et messages d'erreur -- [ ] Tester sur mobile et desktop -- [ ] Retirer ou conditionner le lien « Test modale MDP » en production si besoin - ---- - ### Ticket #48 : [Frontend] Gestion Erreurs & Messages **Estimation** : 2h **Labels** : `frontend`, `p3`, `ux` @@ -1070,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` @@ -1085,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` @@ -1101,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` @@ -1118,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` @@ -1149,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` @@ -1168,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` @@ -1186,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` @@ -1200,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` @@ -1214,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` @@ -1233,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` @@ -1250,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` @@ -1270,14 +1215,14 @@ RĂ©diger les documents lĂ©gaux gĂ©nĂ©riques (CGU et Politique de confidentialit ## 📊 RĂ©sumĂ© final -**Total** : 63 tickets -**Estimation** : ~174h de dĂ©veloppement +**Total** : 65 tickets +**Estimation** : ~184h de dĂ©veloppement ### Par prioritĂ© - **P0 (Bloquant BDD)** : 7 tickets (~5h) - **P1 (Bloquant Config)** : 7 tickets (~22h) - **P2 (Backend)** : 18 tickets (~50h) -- **P3 (Frontend)** : 20 tickets (~62h) ← #84 bug connexion admin, #85 correctifs modale MDP +- **P3 (Frontend)** : 22 tickets (~71h) ← +1 mobile RegisterChoice - **P4 (Tests/Doc)** : 4 tickets (~24h) - **Critiques** : 6 tickets (~13h) - **Juridique** : 1 ticket (~8h) @@ -1285,13 +1230,15 @@ RĂ©diger les documents lĂ©gaux gĂ©nĂ©riques (CGU et Politique de confidentialit ### Par domaine - **BDD** : 7 tickets - **Backend** : 23 tickets -- **Frontend** : 20 tickets ← #84 bug connexion admin, #85 correctifs modale MDP +- **Frontend** : 22 tickets ← +1 mobile RegisterChoice - **Tests** : 3 tickets - **Documentation** : 5 tickets - **Infra** : 2 tickets - **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 @@ -1300,12 +1247,10 @@ RĂ©diger les documents lĂ©gaux gĂ©nĂ©riques (CGU et Politique de confidentialit - ✅ **AjoutĂ©** : Ticket #81 "Corrections refactoring" - Bugfixes - ✅ **AjoutĂ©** : Ticket #83 "RegisterChoiceScreen Mobile" - Responsive UX - ✅ **FermĂ©** : Ticket #82 "Écran Login mobile" - Merge develop + master -- ✅ **AjoutĂ©** : Ticket #84 "Bug connexion admin – erreur profil et redirection" (Gitea #84, fermĂ©) -- ✅ **AjoutĂ©** : Ticket #85 "Bug – Correctifs modale Changement MDP" (Gitea #85) - Design, UX, retrait lien test --- -**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*