merge(develop): clôture ticket #28 et stabilisation build/prod

Intègre en un seul commit master les changements de develop : templates email de validation (#28), alignement schéma validations + patches SQL, montée Flutter 3.29 (CI/Docker), correctifs bootstrap web/nginx/API origin et gestion HTTP 201 sur validation dossier famille.

Made-with: Cursor
This commit is contained in:
2026-04-23 11:44:09 +02:00
parent 4723c78bbb
commit dff108c7d5
26 changed files with 551 additions and 221 deletions
+1 -1
View File
@@ -1528,7 +1528,7 @@ sequenceDiagram
### Architecture Frontend
**Framework** : Flutter 3.19.0
**Framework** : Flutter 3.29.3
**Langage** : Dart 3.x
**State Management** : Provider / Riverpod
**HTTP Client** : Dio / http
+11 -10
View File
@@ -591,22 +591,23 @@ Installer et configurer Nodemailer pour l'envoi d'emails.
---
### Ticket #28 : [Backend] Templates Email - Validation
### Ticket #28 : [Backend] Templates Email - Validation
**Estimation** : 3h
**Labels** : `backend`, `p2`, `email`
**Labels** : `backend`, `p2`, `email`
**Statut** : ✅ TERMINÉ
**Description** :
Créer les templates d'emails pour la validation des comptes (avec lien création MDP).
**Tâches** :
- [ ] Template Parent 1 (création MDP)
- [ ] URL app : Lire depuis `ConfigService.get('app_url')`
- [ ] Nom app : Lire depuis `ConfigService.get('app_name')`
- [ ] Expéditeur : Lire depuis ConfigService
- [ ] Template Parent 2 (co-parent création MDP)
- [ ] Template AM (création MDP)
- [ ] Intégration Handlebars
- [ ] Tests d'envoi
- [x] Template **Parent** (création MDP, parent principal ou co-parent) — `account-validated-parent.hbs`
- [x] URL app : Lire depuis `ConfigService.get('app_url')` (lien `/create-password?token=…`)
- [x] Nom app : Lire depuis `ConfigService.get('app_name')`
- [x] Expéditeur : via `sendEmail` (email_from_name / email_from_address)
- [x] Template AM (création MDP) — `account-validated-am.hbs`
- [x] Intégration Handlebars + copie `.hbs` dans `dist` (`nest-cli.json` assets)
- [x] Envoi déclenché dans `UserService.validateUser` (parent / AM sans mot de passe) + renouvellement expiration token
- [x] Tests unitaires (`mail.service.spec.ts`, mock `sendEmail`)
**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-6--réception-de-la-notification)