Merge branch 'develop' (docs concept v1.3, conflit résolu)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
MARTIN Julien 2026-02-10 00:20:32 +01:00
commit 0c48a5c06f
4 changed files with 171 additions and 269 deletions

View File

@ -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<br/>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<br/>/admin/setup
App->>App: Affiche panneau Configuration<br/>et bloque les autres onglets
SA->>SA: Remplit formulaire config<br/>(SMTP, app, sécurité)
Op->>Op: Remplit les 3 sections<br/>(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<br/>{smtp_host, smtp_port, ...}
API->>DB: UPDATE configuration SET valeur=...
API-->>App: OK
API->>DB: BEGIN TRANSACTION
API->>DB: UPDATE configuration SET valeur=...<br/>FOR EACH key
API->>DB: UPDATE configuration<br/>SET valeur='true'<br/>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<br/>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 laccè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 laffichage 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 donglets 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 donglets dans le formulaire.
- **Première configuration** (au déploiement, `setup_completed === false`) : lopé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 longlet « 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é

View File

@ -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 dissues Gitea et les tickets de ce document.
**Les numéros de section dans ce document = numéros dissues 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 |
| 1788 | (voir sections cidessous ; #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é cidessous ; 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 : 3542, 4351, 54, 82, 83. Les #73, #78, #79, #81 sont fermés mais sans label dans lAPI. Détail : `docs/POINT_TICKETS_FRONT_API.txt`.
---
## 🔗 Liste des tickets Gitea
Correspondance entre les numéros dissues 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é cidessous ; 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 : 3542, 4351, 54, 82, 83. Les #73, #78, #79, #81 sont fermés mais sans label dans lAPI. 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 dissues 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 laffichage 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 donglets 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).
Sassurer 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 : sassurer 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

View File

@ -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é

View File

@ -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*