Structure correcte pour Parent Step 2 :
- Toggle gauche : "Ajouter Parent 2 ?" avec icône person_add_alt_1
- Toggle droit : "Même Adresse ?" avec icône home_work_outlined
- Les 2 toggles sont dans une Row (flex: 12 chacun)
- Toggle "Même Adresse" grisé si Parent 2 désactivé
- Suppression de l'ancienne checkbox en bas
Conforme à l'ancien code testé et validé.
- Toggle "Il y a un 2ème parent ?" maintenant DANS la carte (pas au-dessus)
- Checkbox "Même adresse que parent 1" reste dans la carte
- Taille du texte du toggle ajustée à 20px pour cohérence
- Espacement de 25px après le toggle
Position correcte conforme à l'ancien design.
Corrections des appels de méthodes et des types :
1. Parent Steps 1-2 : Passer des objets ParentData complets
- updateParent1(ParentData(...)) au lieu de paramètres nommés
- updateParent2(ParentData(...)) ou null pour supprimer
2. AM Step 1 : Utiliser la bonne méthode
- updateIdentityInfo() au lieu de updatePersonalInfo()
3. personal_info_form_screen : Corrections widgets
- Accès correct à widget.stepText
- Gestion du nullable sur onChanged de AppCustomCheckbox
Ces corrections permettent la compilation sans erreur.
- Ajout des imports pour les nouveaux écrans AM
- Mise à jour des routes /am-register-step1 à step4
- Suppression de la route /am-register-confirmation (obsolète)
- Configuration du Provider AmRegistrationData
- Nettoyage des imports inutilisés
Les routes AM sont maintenant complètes et fonctionnelles.
Création de 2 nouveaux widgets génériques pour réduire la duplication :
1. presentation_form_screen.dart
- Widget pour formulaires de présentation/motivation
- Paramétrable : titre, couleur, hint, routes
- Utilisé par Parent Step 4 et AM Step 3
- Réduction de ~350 lignes de code dupliqué
2. personal_info_form_screen.dart
- Widget pour formulaires d'informations personnelles
- Gère nom, prénom, téléphone, email, adresse
- Options : toggle "2ème parent", checkbox "même adresse"
- Utilisé par Parent Steps 1-2 et AM Step 1
- Réduction de ~460 lignes de code dupliqué
Avantages :
- Maintenance simplifiée (1 seul fichier à modifier)
- Cohérence visuelle garantie entre tous les écrans
- Extensibilité facile pour nouveaux types d'utilisateurs
- Suppression de l'ancien routeur navigation/app_router.dart
- Suppression du dossier /parent/ (versions dupliquées)
- Suppression du dossier /am/ (versions de travail temporaires)
Ces fichiers sont remplacés par les versions actives dans auth/
- Création du modèle am_registration_data.dart
- Création des 4 écrans d'inscription AM (steps 1-4)
- Mise à jour du bouton "Assistante Maternelle" dans register_choice
- Conformité CDC : pas de champs mot de passe dans les formulaires
- Préremplissage des données de test pour faciliter le développement
Ref: Ticket #XX - Renommage workflow inscription AM
Ajout d'une tâche dans le suivi des évolutions du CDC :
- Note pour améliorer le libellé de la checkbox de consentement photo
sur l'écran d'inscription des nounous (étape 2)
Le libellé actuel 'J'accepte l'utilisation de ma photo' devra être
rendu plus explicite et conforme RGPD.
Refs: #62 (Amendement CDC)
Ajout d'une documentation technique complète pour l'infrastructure
et le déploiement de l'application P'titsPas.
Contenu du guide :
- Vue d'ensemble de l'architecture (Flutter frontend + Node.js backend)
- Prérequis serveur (Node.js, PostgreSQL, ressources recommandées)
- Instructions d'installation pas à pas
- Configuration de la base de données PostgreSQL
- Déploiement du backend (NestJS)
- Build et déploiement du frontend Flutter Web
- Configuration NGINX comme reverse proxy
- Sécurisation SSL/TLS avec Let's Encrypt
- Monitoring et maintenance
- Sauvegarde et restauration
- Troubleshooting des problèmes courants
Ce document est essentiel pour le déploiement on-premise de l'application
par les collectivités locales.
Refs: #61 (Guide installation & configuration), #16 (Doc config on-premise)
Ajout de deux versions d'icônes SVG pour l'application :
- icon.svg : Icône standard de l'application
- icon_improved.svg : Version améliorée de l'icône
Ces icônes seront utilisées pour le branding de l'application
et les différentes tailles d'affichage.
Refactorisation complète du parcours d'inscription des parents pour utiliser
Provider au lieu du passage de données par paramètres de navigation.
Modifications principales :
- Utilisation de Provider pour partager UserRegistrationData entre les étapes
- Simplification du routeur (suppression des paramètres)
- Amélioration de la persistance des données entre les étapes
- Meilleure expérience utilisateur lors de la navigation
Fichiers modifiés :
- models/user_registration_data.dart : Modèle avec ChangeNotifier
- screens/auth/parent_register_step1-5_screen.dart : Intégration Provider
- navigation/app_router.dart : Simplification du routing
- main.dart : Configuration du Provider
- login_screen.dart : Ajout navigation vers inscription
- register_choice_screen.dart : Navigation vers parcours parent/AM
- utils/data_generator.dart : Génération de données de test
Refs: #38 (Étape 3 Enfants), #39 (Étapes 4-6 Finalisation)
Frontend Step2:
- Suppression des champs mot de passe et confirmation
- Correction de l'indicateur d'étape: 2/5 → 2/6
- Améliorations visuelles (mêmes que Step1):
* Taille des labels: 18 → 22px
* Taille de police des champs: 18 → 20px
* Espacement entre champs: 20 → 32px
* Meilleure répartition verticale avec spaceEvenly
Note: Le champ password est conservé dans le modèle ParentData pour compatibilité
Backend:
- Retrait des champs non-CDC: profession, situation_familiale, date_naissance
- Nettoyage des DTOs RegisterParentCompletDto et RegisterParentDto
- Mise à jour de la logique dans auth.service.ts (inscrireParentComplet et legacy)
Frontend Step1:
- Suppression des champs mot de passe et confirmation
- Correction de l'indicateur d'étape: 1/5 → 1/6
- Améliorations visuelles:
* Taille des labels: 18 → 22px
* Taille de police des champs: 18 → 20px
* Espacement entre champs: 20 → 32px
* Meilleure répartition verticale avec spaceEvenly
Note: Le champ password est conservé dans le modèle ParentData pour compatibilité avec Step2
- Création DTOs (UploadDocumentDto, DocumentsActifsResponseDto, DocumentVersionDto)
- Création DocumentsLegauxController avec 6 endpoints:
* GET /documents-legaux/actifs (public)
* GET /documents-legaux/:type/versions (admin)
* POST /documents-legaux (upload, admin)
* PATCH /documents-legaux/:id/activer (admin)
* GET /documents-legaux/:id/download (public)
* GET /documents-legaux/:id/verifier-integrite (admin)
- Support upload multipart/form-data avec FileInterceptor
- Validation des types (cgu/privacy)
- Stream PDF pour téléchargement
- Intégration dans DocumentsLegauxModule
- Compilation OK
TODO: Ajouter guards auth (JwtAuthGuard, RolesGuard)
Réf: docs/22_DOCUMENTS-LEGAUX.md
Merge pull request #67: [Backend] API admin configuration avec test SMTP
Implémentation de l'API REST pour la gestion de la configuration système avec test SMTP intégré.
Closes#6
Implémentation de l'API REST pour la gestion de la configuration
système par les administrateurs.
Nouveaux fichiers :
- modules/config/config.controller.ts : Controller REST
- modules/config/dto/update-config.dto.ts : DTO mise à jour
- modules/config/dto/test-smtp.dto.ts : DTO test SMTP
Endpoints créés :
✅ GET /api/v1/configuration/setup/status
→ Vérifier si la configuration initiale est terminée
✅ POST /api/v1/configuration/setup/complete
→ Marquer la configuration comme terminée
✅ POST /api/v1/configuration/test-smtp
→ Tester la connexion SMTP + envoi email de test
✅ PATCH /api/v1/configuration/bulk
→ Mise à jour multiple des configurations
✅ GET /api/v1/configuration
→ Récupérer toutes les configurations (admin)
✅ GET /api/v1/configuration/:category
→ Récupérer par catégorie (email/app/security)
Fonctionnalités :
- Validation des données avec class-validator
- Test SMTP avec Nodemailer
- Envoi d'email de test HTML
- Gestion d'erreurs complète
- Rechargement automatique du cache
- Traçabilité des modifications
Sécurité :
- Guards commentés (à activer avec JWT)
- Validation des catégories
- Mots de passe masqués dans les réponses
Dépendances ajoutées :
- nodemailer ^6.9.16
- @types/nodemailer ^6.4.16
Tests effectués :
✅ GET /setup/status → {setupCompleted: false}
✅ GET /email → 8 configurations email
✅ Build Docker réussi
✅ Toutes les routes mappées correctement
Ref: #6
Merge pull request #66: [Backend] Service de configuration avec cache et encryption
Implémentation du service de configuration dynamique avec cache en mémoire et chiffrement AES-256-CBC.
Closes#5
Implémentation du service de configuration dynamique pour
le déploiement on-premise de l'application.
Nouveaux fichiers :
- entities/configuration.entity.ts : Entité TypeORM
- modules/config/config.service.ts : Service avec cache et encryption
- modules/config/config.module.ts : Module NestJS
- modules/config/index.ts : Export centralisé
Fonctionnalités :
✅ Cache en mémoire au démarrage (16 configurations)
✅ Chiffrement AES-256-CBC pour valeurs sensibles
✅ Conversion automatique de types (string/number/boolean/json)
✅ Méthodes get/set avec traçabilité
✅ Récupération par catégorie (email/app/security)
✅ Masquage automatique des mots de passe
✅ Support setup wizard (isSetupCompleted)
Sécurité :
- Clé de chiffrement depuis CONFIG_ENCRYPTION_KEY
- Format iv:encrypted pour AES-256-CBC
- Mots de passe masqués dans les API
Intégration :
- AppConfigModule ajouté à app.module.ts
- Service global exporté pour utilisation dans toute l'app
- Chargement automatique au démarrage (OnModuleInit)
Tests :
✅ Build Docker réussi
✅ 16 configurations chargées en cache
✅ Service démarré sans erreur
Ref: #5
Merge pull request #65: [BDD] Ajout table configuration système
Ajout de la table configuration pour la gestion dynamique de la configuration on-premise.
Closes#4
Modifications du schéma BDD.sql :
Table utilisateurs :
- password devient NULLABLE (créé après validation via token)
- Ajout token_creation_mdp + token_creation_mdp_expire_le
- telephone unifié (suppression mobile/telephone_fixe)
- Ajout index sur token_creation_mdp
Table assistantes_maternelles :
- date_agrement devient NOT NULL (obligatoire)
- Suppression annee_experience
- Suppression specialite
Table enfants :
- genre devient NOT NULL (obligatoire H/F)
Autres modifications :
- docker-compose.yml : pointage vers BDD.sql unifié
- Suppression des anciens fichiers de migration (01-07)
- Base de données recréée et testée ✅
Ref: #3
- Ajout Cahier des Charges v1.3
- Ajout Workflow technique création de compte (v1.0)
- Réorganisation docs avec préfixes numériques (00_, 01_, etc.)
- Ajout données de test CSV
- Modifications principales :
* Champ téléphone unique (suppression mobile/fixe)
* Inscription sans mot de passe (Parents + AM)
* Création MDP par email après validation (7j)
* Genre enfant obligatoire (H/F)
* Date agrément obligatoire pour AM
- Création du dossier docs/ pour centraliser la documentation
- Ajout de API.md : documentation complète de tous les endpoints
- Ajout de DATABASE.md : schéma complet de la base de données
- Ajout de AUDIT.md : audit du projet YNOV
- Déplacement des README-ARCHITECTURE.md et README-DEPLOYMENT.md vers docs/
- Ajout d'un README.md index dans docs/