docs: concept v1.3 config (panneau Paramètres 3 sections, numéros = Gitea)
- 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 <cursoragent@cursor.com>
This commit is contained in:
parent
930097f87d
commit
be8b1f23ed
@ -1,7 +1,7 @@
|
|||||||
# 🔧 Documentation Technique - Configuration Système On-Premise
|
# 🔧 Documentation Technique - Configuration Système On-Premise
|
||||||
|
|
||||||
**Version** : 1.0
|
**Version** : 1.1
|
||||||
**Date** : 25 Novembre 2025
|
**Date** : 9 Février 2026
|
||||||
**Auteur** : Équipe PtitsPas
|
**Auteur** : Équipe PtitsPas
|
||||||
**Référence** : Architecture On-Premise
|
**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
|
2. **ConfigService** : Cache en mémoire + chiffrement
|
||||||
3. **ConfigAPI** : Endpoints REST pour CRUD
|
3. **ConfigAPI** : Endpoints REST pour CRUD
|
||||||
4. **Guard Setup** : Redirection forcée si config incomplète
|
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
|
```mermaid
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
participant SA as Super Admin
|
participant Op as Opérateur
|
||||||
participant App as Application
|
participant App as Application (Dashboard)
|
||||||
participant Guard as SetupGuard
|
|
||||||
participant API as ConfigAPI
|
participant API as ConfigAPI
|
||||||
participant DB as PostgreSQL
|
participant DB as PostgreSQL
|
||||||
participant SMTP as Serveur SMTP
|
participant SMTP as Serveur SMTP
|
||||||
|
|
||||||
SA->>App: Première connexion
|
Op->>App: Première connexion (admin)
|
||||||
App->>Guard: Vérifier setup_completed
|
App->>API: GET /configuration/setup/status
|
||||||
Guard->>DB: SELECT valeur FROM configuration<br/>WHERE cle='setup_completed'
|
API->>DB: setup_completed ?
|
||||||
DB-->>Guard: 'false'
|
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
|
App->>API: POST /api/v1/configuration/test-smtp
|
||||||
API->>SMTP: Test connexion
|
API->>SMTP: Test connexion
|
||||||
|
|
||||||
alt Test SMTP OK
|
alt Test SMTP OK
|
||||||
SMTP-->>API: ✅ Connexion réussie
|
SMTP-->>API: ✅ Connexion réussie
|
||||||
API->>SA: Envoi email de test
|
API->>Op: Envoi email de test
|
||||||
API-->>App: ✅ Test réussi
|
API-->>App: ✅ Test réussi
|
||||||
App-->>SA: Message: "Email de test envoyé"
|
App-->>Op: Message: "Email de test envoyé"
|
||||||
else Test SMTP KO
|
else Test SMTP KO
|
||||||
SMTP-->>API: ❌ Erreur connexion
|
SMTP-->>API: ❌ Erreur connexion
|
||||||
API-->>App: ❌ Erreur détaillée
|
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
|
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, ...}
|
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
|
App->>API: POST /api/v1/configuration/setup/complete
|
||||||
API->>DB: UPDATE configuration SET valeur=...<br/>FOR EACH key
|
API->>DB: SET setup_completed = true
|
||||||
API->>DB: UPDATE configuration<br/>SET valeur='true'<br/>WHERE cle='setup_completed'
|
|
||||||
API->>DB: COMMIT
|
|
||||||
|
|
||||||
API->>API: Recharger cache ConfigService
|
API->>API: Recharger cache ConfigService
|
||||||
|
API-->>App: OK
|
||||||
|
|
||||||
API-->>App: ✅ Configuration sauvegardée
|
App->>App: Débloque la navigation<br/>Message succès
|
||||||
App-->>SA: Redirection vers /admin/dashboard
|
Op->>App: Accès complet au dashboard
|
||||||
|
|
||||||
SA->>App: Accès complet à l'application
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Étapes détaillées
|
### Étapes détaillées
|
||||||
|
|
||||||
#### 1. Détection configuration incomplète
|
#### 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
|
```typescript
|
||||||
@Injectable()
|
// Exemptions : /auth/login, /api/v1/configuration, routes dashboard admin
|
||||||
export class SetupGuard implements CanActivate {
|
// Si setup non complété : pas de redirection HTTP ; le frontend gère l’affichage du panneau Config et le blocage des onglets.
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 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 |
|
| Champ | Type | Valeur par défaut | Obligatoire |
|
||||||
|-------|------|-------------------|-------------|
|
|-------|------|-------------------|-------------|
|
||||||
@ -405,7 +381,7 @@ export class SetupGuard implements CanActivate {
|
|||||||
|
|
||||||
**Bouton** : "🧪 Tester la connexion SMTP"
|
**Bouton** : "🧪 Tester la connexion SMTP"
|
||||||
|
|
||||||
##### Onglet 2 : Personnalisation 🎨
|
##### Section 2 : Personnalisation 🎨
|
||||||
|
|
||||||
| Champ | Type | Valeur par défaut | Obligatoire |
|
| 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` | ✅ |
|
| URL de l'application | URL | `https://app.ptits-pas.fr` | ✅ |
|
||||||
| Logo | File (PNG/JPG) | Logo par défaut | ❌ |
|
| 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 |
|
| Champ | Type | Valeur par défaut | Obligatoire |
|
||||||
|-------|------|-------------------|-------------|
|
|-------|------|-------------------|-------------|
|
||||||
@ -421,7 +397,7 @@ export class SetupGuard implements CanActivate {
|
|||||||
| Durée session JWT (heures) | Number | `24` | ✅ |
|
| Durée session JWT (heures) | Number | `24` | ✅ |
|
||||||
| Taille max upload (MB) | Number | `5` | ✅ |
|
| 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
|
## 💻 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 │
|
│ Dashboard Admin [ Gestionnaires ] [ Parents ] ... │
|
||||||
├─────────────────────────────────────────────────────────┤
|
│ [ Configuration ] ← onglet actif │
|
||||||
│ │
|
|
||||||
│ Bienvenue ! Configurez votre installation P'titsPas │
|
|
||||||
│ │
|
|
||||||
│ [ 📧 Email ] [ 🎨 Personnalisation ] [ ⚙️ Avancé ] │
|
|
||||||
├─────────────────────────────────────────────────────────┤
|
├─────────────────────────────────────────────────────────┤
|
||||||
│ │
|
│ │
|
||||||
│ 📧 Configuration Email (SMTP) │
|
│ 📧 Configuration Email (SMTP) │
|
||||||
│ │
|
│ Serveur SMTP * [_________________________________] │
|
||||||
│ Serveur SMTP * │
|
│ Port * [____] Sécurité [▼] ☐ Auth requise │
|
||||||
│ [_____________________________________________] │
|
│ Utilisateur [__________] Mot de passe [__________] │
|
||||||
│ Ex: mail.mairie-bezons.fr, smtp.gmail.com │
|
│ Nom expéditeur * [__________] Email * [__________] │
|
||||||
│ │
|
|
||||||
│ 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 ] │
|
│ [ 🧪 Tester la connexion SMTP ] │
|
||||||
│ │
|
│ │
|
||||||
│ ───────────────────────────────────────────────── │
|
│ ───────────────────────────────────────────────── │
|
||||||
|
│ 🎨 Personnalisation │
|
||||||
|
│ Nom application * [__________] URL * [__________] │
|
||||||
|
│ Logo [ Choisir un fichier ] │
|
||||||
|
│ ───────────────────────────────────────────────── │
|
||||||
|
│ ⚙️ Paramètres avancés │
|
||||||
|
│ Durée token MDP (jours) [__] JWT (h) [__] Upload MB [__] │
|
||||||
│ │
|
│ │
|
||||||
│ [ ← Précédent ] [ Suivant → ] │
|
│ [ 💾 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
|
## 📋 Exemples de configuration
|
||||||
@ -706,7 +661,7 @@ PORT=3000
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Dernière mise à jour** : 25 Novembre 2025
|
**Dernière mise à jour** : 9 Février 2026
|
||||||
**Version** : 1.0
|
**Version** : 1.1
|
||||||
**Statut** : ✅ Document validé
|
**Statut** : ✅ Document validé
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# 🎫 Liste Complète des Tickets - Projet P'titsPas
|
# 🎫 Liste Complète des Tickets - Projet P'titsPas
|
||||||
|
|
||||||
**Version** : 1.2
|
**Version** : 1.4
|
||||||
**Date** : 27 Janvier 2026
|
**Date** : 9 Février 2026
|
||||||
**Auteur** : Équipe PtitsPas
|
**Auteur** : Équipe PtitsPas
|
||||||
**Estimation totale** : ~184h
|
**Estimation totale** : ~184h
|
||||||
|
|
||||||
@ -9,52 +9,27 @@
|
|||||||
|
|
||||||
## 🔗 Liste des tickets Gitea
|
## 🔗 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 |
|
| Gitea # | Titre (dépôt) | Statut |
|
||||||
|--------|--------------|----------|--------|-------------|
|
|--------|----------------|--------|
|
||||||
| 1 | BDD - Champs manquants CDC | P0 | Ouvert | § Ticket #1 |
|
| 3 | [BDD] Ajout champs manquants conformité CDC | ✅ Fermé |
|
||||||
| 2 | BDD - Table présentation dossier parent | P0 | Ouvert | § Ticket #2 |
|
| 4 | [BDD] Ajout table/champ présentation dossier parent | ✅ Fermé |
|
||||||
| 3 | BDD - Tokens création MDP | P0 | ✅ Fermé | § Ticket #3 |
|
| 5 | [BDD] Ajout gestion tokens création mot de passe | ✅ Fermé |
|
||||||
| 4 | BDD - Champ genre enfants | P0 | ✅ Fermé | § Ticket #4 |
|
| 6 | [BDD] Ajout champ genre obligatoire enfants | ✅ Fermé |
|
||||||
| 5 | BDD - Supprimer champs obsolètes | P0 | Ouvert | § Ticket #5 |
|
| 7 | [BDD] Supprimer champs obsolètes | ✅ Fermé |
|
||||||
| 6 | BDD - Table configuration système | P0 | Ouvert | § Ticket #6 |
|
| 8 | [BDD] Table configuration système | ✅ Fermé |
|
||||||
| 68 | BDD - Documents légaux & acceptations | P0 | ✅ Fermé | § Ticket #7 |
|
| 9 | [BDD] Tables documents légaux & acceptations | ✅ Fermé |
|
||||||
| 73 | Frontend - Inscription Parent Étape 1 | P3 | ✅ Fermé (PR) | § Ticket #36 |
|
| 10 | [Backend] Service Configuration | ✅ Fermé |
|
||||||
| 78 | Frontend - Infrastructure formulaires multi-modes | P3 | ✅ Fermé | § Ticket #78 |
|
| 11 | [Backend] API Configuration | ✅ Fermé |
|
||||||
| 79 | Frontend - Renommer Nanny en AM | P3 | ✅ Fermé | § Ticket #79 |
|
| 12 | [Backend] Guard Configuration Initiale | ✅ Fermé |
|
||||||
| 81 | Frontend - Corrections refactoring widgets | P3 | ✅ Fermé | § Ticket #81 |
|
| 13 | [Backend] Adaptation MailService pour config dynamique | Ouvert |
|
||||||
| 82 | Frontend - Écran Login mobile | P3 | ✅ Fermé | § Ticket #82 |
|
| 14 | [Frontend] Panneau Paramètres / Configuration (première config + accès permanent) | Ouvert |
|
||||||
| 83 | Frontend - RegisterChoiceScreen mobile | P3 | ✅ Fermé | § Ticket #83 |
|
| 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.*
|
*Gitea #1 et #2 = anciens tickets de test (fermés). Liste complète : https://git.ptits-pas.fr/jmartin/petitspas/issues*
|
||||||
|
|
||||||
**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`.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -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)
|
## 🔴 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
|
**Estimation** : 1h
|
||||||
**Labels** : `bdd`, `p0-bloquant`, `cdc`
|
**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
|
**Estimation** : 30min
|
||||||
**Labels** : `bdd`, `p0-bloquant`, `cdc`
|
**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
|
**Estimation** : 30min
|
||||||
**Labels** : `bdd`, `p0-bloquant`, `security`
|
**Labels** : `bdd`, `p0-bloquant`, `security`
|
||||||
**Statut** : ✅ TERMINÉ (Fermé le 2025-11-28)
|
**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
|
**Estimation** : 30min
|
||||||
**Labels** : `bdd`, `p0-bloquant`, `cdc`
|
**Labels** : `bdd`, `p0-bloquant`, `cdc`
|
||||||
**Statut** : ✅ TERMINÉ (Fermé le 2025-11-28)
|
**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
|
**Estimation** : 30min
|
||||||
**Labels** : `bdd`, `p0-bloquant`, `cleanup`
|
**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
|
**Estimation** : 1h
|
||||||
**Labels** : `bdd`, `p0-bloquant`, `on-premise`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `bdd`, `p0-bloquant`, `rgpd`, `juridique`
|
**Labels** : `bdd`, `p0-bloquant`, `rgpd`, `juridique`
|
||||||
**Statut** : ✅ TERMINÉ (Fermé le 2025-11-30 - Ticket #68 sur Gitea)
|
**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)
|
## 🟠 PRIORITÉ 1 : Configuration Système (BLOQUANT)
|
||||||
|
|
||||||
### Ticket #8 : [Backend] Service Configuration
|
### Ticket #10 : [Backend] Service Configuration
|
||||||
**Estimation** : 4h
|
**Estimation** : 4h
|
||||||
**Labels** : `backend`, `p1-bloquant`, `on-premise`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `p1-bloquant`, `on-premise`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `backend`, `p1-bloquant`, `on-premise`
|
**Labels** : `backend`, `p1-bloquant`, `on-premise`
|
||||||
|
|
||||||
**Description** :
|
**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** :
|
**Tâches** :
|
||||||
- [ ] Créer `SetupGuard`
|
- [ ] Créer `SetupGuard`
|
||||||
- [ ] Vérifier `setup_completed` dans ConfigService
|
- [ ] Vérifier `setup_completed` dans ConfigService
|
||||||
- [ ] Redirection forcée vers `/admin/setup` si false
|
- [ ] 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)
|
- [ ] Exemption pour routes publiques (login, register) et pour les APIs `/api/v1/configuration`
|
||||||
- [ ] Exemption pour route `/admin/setup`
|
|
||||||
- [ ] Tests unitaires
|
- [ ] Tests unitaires
|
||||||
|
|
||||||
**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#workflow-setup-initial)
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `p1-bloquant`, `on-premise`, `email`
|
**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)
|
### Ticket #14 : [Frontend] Panneau Paramètres / Configuration (première config + accès permanent)
|
||||||
**Estimation** : 6h
|
**Estimation** : 5h
|
||||||
**Labels** : `frontend`, `p1-bloquant`, `on-premise`
|
**Labels** : `frontend`, `p1-bloquant`, `on-premise`
|
||||||
|
|
||||||
**Description** :
|
**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** :
|
**Tâches** :
|
||||||
- [ ] Page `/admin/setup` (accessible uniquement si config incomplète)
|
- [ ] Panneau Configuration dans le dashboard admin (onglet ou entrée de menu dédiée)
|
||||||
- [ ] Formulaire multi-onglets (Email / Application / Avancé)
|
- [ ] Une seule page avec 3 sections : **Email (SMTP)** ; **Personnalisation** (nom app, URL, logo) ; **Avancé** (durées token MDP, JWT, taille max upload)
|
||||||
- [ ] Onglet 1 : Configuration Email (SMTP, auth, expéditeur)
|
|
||||||
- [ ] Onglet 2 : Personnalisation (nom app, URL, logo)
|
|
||||||
- [ ] Onglet 3 : Paramètres avancés (durées tokens, upload max)
|
|
||||||
- [ ] Bouton "Tester la connexion SMTP" (appel API + feedback)
|
- [ ] Bouton "Tester la connexion SMTP" (appel API + feedback)
|
||||||
- [ ] Validation côté client
|
- [ ] Validation côté client
|
||||||
- [ ] Sauvegarde (appel API `PATCH /configuration/bulk`)
|
- [ ] Sauvegarde : `PATCH /configuration/bulk` puis `POST /configuration/setup/complete` si première config
|
||||||
- [ ] Message succès + redirection dashboard
|
- [ ] 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)
|
**Référence** : [21_CONFIGURATION-SYSTEME.md](./21_CONFIGURATION-SYSTEME.md#interface-admin)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Ticket #13 : [Frontend] Écran Paramètres (accès permanent)
|
### Ticket #15 : [Frontend] Écran Paramètres (accès permanent) / Intégration panneau
|
||||||
**Estimation** : 2h
|
**Estimation** : 1h
|
||||||
**Labels** : `frontend`, `p1-bloquant`, `on-premise`
|
**Labels** : `frontend`, `p1-bloquant`, `on-premise`
|
||||||
|
|
||||||
**Description** :
|
**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** :
|
**Tâches** :
|
||||||
- [ ] Page `/admin/parametres` (accessible depuis menu admin)
|
- [ ] Onglet ou entrée menu « Configuration » / « Paramètres » dans le dashboard admin pointant vers le même panneau que #14
|
||||||
- [ ] Même interface que Setup Wizard
|
- [ ] Chargement des valeurs actuelles (GET `/configuration` ou par catégorie)
|
||||||
- [ ] Affichage valeurs actuelles
|
- [ ] Modification et sauvegarde (PATCH bulk) sans appel à `setup/complete`
|
||||||
- [ ] Modification et sauvegarde
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Ticket #14 : [Doc] Documentation configuration on-premise
|
### Ticket #16 : [Doc] Documentation configuration on-premise
|
||||||
**Estimation** : 2h
|
**Estimation** : 2h
|
||||||
**Labels** : `documentation`, `p1-bloquant`, `on-premise`
|
**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
|
## 🟢 PRIORITÉ 2 : Backend - Authentification & Gestion Comptes
|
||||||
|
|
||||||
### Ticket #15 : [Backend] API Création gestionnaire
|
### Ticket #17 : [Backend] API Création gestionnaire
|
||||||
**Estimation** : 3h
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `p2`, `auth`
|
**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
|
**Estimation** : 4h
|
||||||
**Labels** : `backend`, `p2`, `auth`, `cdc`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `backend`, `p2`, `auth`, `cdc`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `p2`, `auth`, `security`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `backend`, `p2`, `gestionnaire`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `p2`, `gestionnaire`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `backend`, `p2`, `email`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `p2`, `email`
|
**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
|
**Estimation** : 1h
|
||||||
**Labels** : `backend`, `p2`, `email`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `backend`, `p2`, `auth`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `backend`, `p2`, `auth`, `security`
|
**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
|
**Estimation** : 4h
|
||||||
**Labels** : `backend`, `p2`, `juridique`, `rgpd`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `p2`, `juridique`, `rgpd`
|
**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
|
**Estimation** : 2h
|
||||||
**Labels** : `backend`, `p2`, `rgpd`
|
**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
|
## 🟢 PRIORITÉ 3 : Frontend - Interfaces
|
||||||
|
|
||||||
### Ticket #33 : [Frontend] Écran Création Gestionnaire
|
### Ticket #35 : [Frontend] Écran Création Gestionnaire
|
||||||
**Estimation** : 3h
|
**Estimation** : 3h
|
||||||
**Labels** : `frontend`, `p3`, `auth`
|
**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) ✅
|
### Ticket #36 : [Frontend] Inscription Parent - Étape 1 (Parent 1) ✅
|
||||||
**Estimation** : 3h
|
**Estimation** : 3h
|
||||||
**Labels** : `frontend`, `p3`, `auth`, `cdc`
|
**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
|
**Estimation** : 5h
|
||||||
**Labels** : `tests`, `p4`, `backend`
|
**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
|
**Estimation** : 8h
|
||||||
**Labels** : `tests`, `p4`, `frontend`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `documentation`, `p4`, `api`
|
**Labels** : `documentation`, `p4`, `api`
|
||||||
|
|
||||||
@ -1084,7 +1063,7 @@ Générer et documenter l'API avec Swagger/OpenAPI.
|
|||||||
|
|
||||||
## ⚠️ CRITIQUES : Upload, Emails, Infra, Doc
|
## ⚠️ CRITIQUES : Upload, Emails, Infra, Doc
|
||||||
|
|
||||||
### Ticket #53 : [Backend] Service Upload & Stockage fichiers
|
### Ticket #56 : [Backend] Service Upload & Stockage fichiers
|
||||||
**Estimation** : 3h
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `critique`, `upload`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `backend`, `critique`, `monitoring`
|
**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
|
**Estimation** : 4h
|
||||||
**Labels** : `frontend`, `p3`, `monitoring`, `admin`
|
**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
|
**Estimation** : 30min
|
||||||
**Labels** : `infra`, `critique`, `docker`
|
**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
|
**Estimation** : 30min
|
||||||
**Labels** : `infra`, `critique`, `docker`
|
**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
|
**Estimation** : 3h
|
||||||
**Labels** : `documentation`, `critique`, `on-premise`
|
**Labels** : `documentation`, `critique`, `on-premise`
|
||||||
|
|
||||||
@ -1199,7 +1178,7 @@ Rédiger le guide complet d'installation et de configuration pour les collectivi
|
|||||||
|
|
||||||
## 📚 JURIDIQUE & CDC
|
## 📚 JURIDIQUE & CDC
|
||||||
|
|
||||||
### Ticket #60 : [Doc] Amendement CDC v1.4 - Suppression SMS
|
### Ticket #62 : [Doc] Amendement CDC v1.4 - Suppression SMS
|
||||||
**Estimation** : 30min
|
**Estimation** : 30min
|
||||||
**Labels** : `documentation`, `cdc`
|
**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
|
**Estimation** : 8h
|
||||||
**Labels** : `documentation`, `juridique`, `rgpd`
|
**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
|
- **Juridique** : 1 ticket
|
||||||
|
|
||||||
### Modifications par rapport à la version initiale
|
### 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
|
- ❌ **Supprimé** : Tickets "Renvoyer email validation" (backend + frontend) - Pas prioritaire
|
||||||
- ✅ **Ajouté** : Ticket #55 "Service Logging Winston" - Monitoring essentiel
|
- ✅ **Ajouté** : Ticket #55 "Service Logging Winston" - Monitoring essentiel
|
||||||
- ✅ **Ajouté** : Ticket #56 "Écran Logs Admin" - Optionnel Phase 1.1
|
- ✅ **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
|
**Dernière mise à jour** : 9 Février 2026
|
||||||
**Version** : 1.2
|
**Version** : 1.4
|
||||||
**Statut** : ✅ À jour
|
**Statut** : ✅ Aligné avec le dépôt Gitea
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# 📋 Décisions Projet - P'titsPas
|
# 📋 Décisions Projet - P'titsPas
|
||||||
|
|
||||||
**Version** : 1.0
|
**Version** : 1.1
|
||||||
**Date** : 25 Novembre 2025
|
**Date** : 9 Février 2026
|
||||||
**Auteur** : Équipe PtitsPas
|
**Auteur** : Équipe PtitsPas
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -49,7 +49,7 @@ ptitspas-app/
|
|||||||
|
|
||||||
**Solution technique** :
|
**Solution technique** :
|
||||||
- Table `configuration` en BDD (clé/valeur)
|
- 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
|
- Configuration SMTP dynamique
|
||||||
- Personnalisation (nom app, logo, URL)
|
- Personnalisation (nom app, logo, URL)
|
||||||
|
|
||||||
@ -559,10 +559,11 @@ docs/
|
|||||||
| Date | Version | Modifications |
|
| Date | Version | Modifications |
|
||||||
|------|---------|---------------|
|
|------|---------|---------------|
|
||||||
| 25/11/2025 | 1.0 | Création du document - Toutes les décisions initiales |
|
| 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
|
**Dernière mise à jour** : 9 Février 2026
|
||||||
**Version** : 1.0
|
**Version** : 1.1
|
||||||
**Statut** : ✅ Document validé
|
**Statut** : ✅ Document validé
|
||||||
|
|
||||||
|
|||||||
@ -61,7 +61,8 @@ changement_mdp_obligatoire: true (première connexion)
|
|||||||
|
|
||||||
| # | Ticket | Description | Effort |
|
| # | 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 |
|
| **#47** | Changement MDP Obligatoire | Modale bloquante après login si flag=true | 1-2h |
|
||||||
| **#35** | Création Gestionnaire | Formulaire création gestionnaire | 2-3h |
|
| **#35** | Création Gestionnaire | Formulaire création gestionnaire | 2-3h |
|
||||||
|
|
||||||
@ -256,11 +257,11 @@ Configuration des appels API avec intercepteurs.
|
|||||||
## Recommandation de démarrage
|
## Recommandation de démarrage
|
||||||
|
|
||||||
1. **Ticket #47** - Modale changement MDP obligatoire (simple, rapide)
|
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
|
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*
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user