diff --git a/docs/00_INDEX.md b/docs/00_INDEX.md new file mode 100644 index 0000000..761e751 --- /dev/null +++ b/docs/00_INDEX.md @@ -0,0 +1,60 @@ +# 📚 Index de la Documentation - PtitsPas App + +Bienvenue dans la documentation complĂšte de l'application PtitsPas. + +Ce fichier sert d'index pour naviguer dans toute la documentation du projet. + +## 📖 Table des matiĂšres + +### 📋 Cahier des Charges +- [**01 - Cahier des Charges**](./01_CAHIER-DES-CHARGES.md) - Cahier des charges complet du projet P'titsPas (V1.3 - 24/11/2025) + +### Architecture & Infrastructure +- [**02 - Architecture**](./02_ARCHITECTURE.md) - Vue d'ensemble de l'architecture mono-repo et multi-conteneurs +- [**03 - DĂ©ploiement**](./03_DEPLOYMENT.md) - Guide complet de dĂ©ploiement et configuration CI/CD + +### DĂ©veloppement +- [**10 - Database Schema**](./10_DATABASE.md) - SchĂ©ma de la base de donnĂ©es et modĂšles +- [**11 - API Documentation**](./11_API.md) - Documentation complĂšte des endpoints REST + +### Workflows Fonctionnels +- [**20 - Workflow CrĂ©ation de Compte**](./20_WORKFLOW-CREATION-COMPTE.md) - Workflow complet de crĂ©ation et validation des comptes utilisateurs + +### Administration (À crĂ©er) +- [**30 - Guide d'administration**](./30_ADMIN.md) - Gestion des utilisateurs, accĂšs PgAdmin, logs +- [**31 - Troubleshooting**](./31_TROUBLESHOOTING.md) - RĂ©solution des problĂšmes courants + +### Frontend (À crĂ©er) +- [**40 - Frontend Flutter**](./40_FRONTEND.md) - Structure de l'application mobile/web + +### Audit & Analyse +- [**90 - Audit du projet YNOV**](./90_AUDIT.md) - Analyse complĂšte du code Ă©tudiant et fonctionnalitĂ©s + +## 🚀 Quick Start + +```bash +# Cloner le projet +git clone ssh://gitea-jmartin/jmartin/app.git ptitspas-app + +# Lancer l'environnement de dĂ©veloppement +cd ptitspas-app +docker compose up -d + +# AccĂ©der aux services +Frontend: https://app.ptits-pas.fr +API: https://app.ptits-pas.fr/api +PgAdmin: https://app.ptits-pas.fr/pgadmin +``` + +## 🔗 Liens utiles + +- **Gitea** : https://git.ptits-pas.fr +- **Production** : https://app.ptits-pas.fr +- **Mail** : https://mail.ptits-pas.fr + +## 📝 Maintenance + +Cette documentation est maintenue par Julien Martin (julien.martin@ptits-pas.fr). + +DerniĂšre mise Ă  jour : Novembre 2025 + diff --git a/docs/01_CAHIER-DES-CHARGES.md b/docs/01_CAHIER-DES-CHARGES.md new file mode 100644 index 0000000..dcd02f0 --- /dev/null +++ b/docs/01_CAHIER-DES-CHARGES.md @@ -0,0 +1,1225 @@ +--- +title: "P'titsPas - Cahier des Charges Fonctionnel" +author: "Julien MARTIN" +date: "Novembre 2025" +version: "v1.3" +--- + +# P'titsPas – Cahier des Charges Fonctionnel + +> **Objet :** DĂ©finir le pĂ©rimĂštre fonctionnel, les rĂŽles utilisateurs, les processus mĂ©tiers et les exigences techniques de la plateforme P'titsPas, destinĂ©e Ă  accompagner les collectivitĂ©s locales dans la gestion de la garde d’enfants. + +--- + +## Historique des versions + +| Version | Date | Auteur | Commentaires | +|---------|------------|----------------|--------------------------------------| +| 1.0 | 15/03/2025 | Julien MARTIN | Version initiale | +| 1.1 | 24/04/2025 | Julien MARTIN | Ajouts : gestion multi-enfants, fin de contrat, tableau de bord Ă©tendu | +| 1.2 | 26/05/2025 | Julien MARTIN | Remplacement de "SuperNounou" par "P'titsPas" | +| 1.3 | 24/11/2025 | Julien MARTIN | Correction : retrait photo de profil parent (section 3.1.1) | + +--- + + +# Table des matiĂšres – P'titsPas + +## 1. Introduction + +## 2. Typologie des utilisateurs +### 2.1 RĂŽles +#### 2.1.1 Parents +#### 2.1.2 Assistantes maternelles +#### 2.1.3 Gestionnaires +#### 2.1.4 Administrateurs +### 2.2 PĂ©rimĂštres et responsabilitĂ©s + +## 3. CrĂ©ation de compte et fiches utilisateur +### 3.1 CrĂ©ation de compte parent +### 3.2 CrĂ©ation de compte assistante maternelle +### 3.3 CrĂ©ation d’un gestionnaire +### 3.4 CrĂ©ation d’un administrateur +### 3.5 Fiche enfant +### 3.6 Authentification et sĂ©curitĂ© + +## 4. Tableaux de bord +### 4.1 Vue d’ensemble +### 4.2 Tableau de bord des parents +#### 4.2.1 En-tĂȘte +#### 4.2.2 Zone enfants +#### 4.2.3 ÉvĂ©nements Ă  venir +#### 4.2.4 Contrats +#### 4.2.5 Messagerie +#### 4.2.6 Notifications +### 4.3 Tableau de bord des assistantes maternelles +#### 4.3.1 En-tĂȘte +#### 4.3.2 Dossiers reçus +#### 4.3.3 Enfants accueillis +#### 4.3.4 Agenda +#### 4.3.5 Heures supplĂ©mentaires +#### 4.3.6 Messagerie +### 4.4 Tableau de bord des gestionnaires +#### 4.4.1 Comptes Ă  valider +#### 4.4.2 Liste des utilisateurs +#### 4.4.3 Contrats +#### 4.4.4 Messagerie +#### 4.4.5 ÉvĂ©nements RPE +#### 4.4.6 Alertes +### 4.5 Tableau de bord des administrateurs +#### 4.5.1 Menu Profil +#### 4.5.2 Gestion des utilisateurs +#### 4.5.3 Gestion des enfants +#### 4.5.4 ParamĂštres de la plateforme +#### 4.5.5 Statistiques et supervision +#### 4.5.6 SĂ©curitĂ© et conformitĂ© +### 4.6 Menus, alertes et raccourcis visuels + +## 5. Workflows +### 5.1 Recherche d’une assistante maternelle +### 5.2 Traitement du dossier +### 5.3 CrĂ©ation du contrat +### 5.4 Avenants +### 5.5 Fin de contrat + +## 6. Outils partagĂ©s +### 6.1 Messagerie +### 6.2 Agenda +### 6.3 Fiche enfant +### 6.4 Contrats et avenants + +## 7. Suivi administratif et financier +### 7.1 Fiche de paie +### 7.2 Aide au remplissage Pajemploi +### 7.3 Heures supplĂ©mentaires +### 7.4 Historique +### 7.5 Solde de tout compte + +## 8. Administration technique et conformitĂ© +### 8.1 SĂ©curitĂ© et accĂšs +### 8.2 Gouvernance multi-admins +### 8.3 ConformitĂ© RGPD +### 8.4 IntĂ©gration API +### 8.5 Architecture technique + +## 9. AmĂ©liorations futures possibles +### 9.1 Modules activables +#### 9.1.1 Blog RPE +#### 9.1.2 IA de reformulation +#### 9.1.3 Connexion Pajemploi +#### 9.1.4 Garde d’enfants “grands” +#### 9.1.5 PrĂ©-remplissage dossiers scolaires +#### 9.1.6 Dossier fratrie unique +### 9.2 StratĂ©gie d’activation + +## 10. SynthĂšse finale +### 10.1 Objectifs atteints +### 10.2 Couverture fonctionnelle +### 10.3 Valeur ajoutĂ©e +### 10.4 Perspectives d’évolution + +# 1. Introduction + +P'titsPas est une plateforme numĂ©rique conçue pour accompagner les collectivitĂ©s dans la gestion des relations entre les parents, les assistantes maternelles et les relais petite enfance (RPE). Elle vise Ă  simplifier, structurer et sĂ©curiser les processus de mise en relation, de contractualisation, de suivi et de communication autour de la garde d’enfants. + +Elle s’inscrit dans une dĂ©marche publique fondĂ©e sur les valeurs de la RĂ©publique : **Ă©galitĂ©**, **neutralitĂ©**, **accessibilitĂ©** et **transparence**. Contrairement aux plateformes privĂ©es, P'titsPas ne fonctionne ni sur la logique de notation, ni de sĂ©lection algorithmique opaque. + +## 1.1 Objectifs + +- Faciliter la recherche d’assistantes maternelles par les parents. +- Offrir un cadre clair et sĂ©curisĂ© Ă  la gestion des contrats. +- Fluidifier la communication entre les acteurs (parents, nounous, gestionnaires). +- Permettre aux gestionnaires de suivre l’ensemble des situations. +- Centraliser les dĂ©marches dans un outil unique, intuitif et structurĂ©. +- Valoriser le rĂŽle des collectivitĂ©s locales dans l’accompagnement de la petite enfance. + +## 1.2 Principes fondateurs + +- **NeutralitĂ©** : pas de notation, pas de prĂ©fĂ©rence algorithmique. +- **ÉquitĂ©** : chaque parent a les mĂȘmes droits d’accĂšs aux services. +- **Protection des donnĂ©es** : respect strict du RGPD et du droit Ă  l’oubli. +- **AccessibilitĂ©** : conçu pour ĂȘtre lisible sur smartphone comme sur ordinateur. + +## 1.3 Usagers concernĂ©s + +- **Parents** d’enfants de 0 Ă  3 ans Ă  la recherche d’un mode de garde. +- **Assistantes maternelles** souhaitant gĂ©rer facilement leurs contrats. +- **Responsables de RPE** supervisant les dĂ©marches et accompagnant les familles. +- **Administrateurs** municipaux assurant le paramĂ©trage de l’outil. + +## 1.4 Contexte de dĂ©ploiement + +P'titsPas est destinĂ© Ă  ĂȘtre dĂ©ployĂ© Ă  l’échelle d’une ou plusieurs communes. Il s’adapte aux rĂ©alitĂ©s locales en permettant une configuration personnalisĂ©e (noms des structures, couleurs, logo, etc.). + +Le modĂšle de gouvernance repose sur une articulation claire entre : + +- Les **parents et assistantes maternelles** (usagers finaux) +- Les **gestionnaires** (opĂ©rateurs terrain) +- Les **administrateurs** (services de la mairie ou de la collectivitĂ©) + +# 2. Typologie des utilisateurs + +P'titsPas repose sur une structure multi-rĂŽles permettant une rĂ©partition claire des responsabilitĂ©s et des droits d’accĂšs Ă  l’application. Chaque profil a une interface adaptĂ©e Ă  ses besoins et Ă  ses fonctions. + +## 2.1 RĂŽles + +### 2.1.1 Parents + +Les parents sont les usagers finaux de la plateforme. Ils accĂšdent Ă  un tableau de bord personnel leur permettant de : + +- Rechercher une assistante maternelle +- CrĂ©er et suivre des dossiers +- Consulter les informations liĂ©es Ă  leurs enfants +- Visualiser et gĂ©rer les contrats de garde +- Communiquer avec l'assistante maternelle et le gestionnaire +- DĂ©clarer des absences ou des Ă©vĂ©nements +- Suivre les documents administratifs liĂ©s Ă  la garde +- AccĂ©der Ă  des outils d’aide Ă  la paie + +### 2.1.2 Assistantes maternelles + +Les assistantes maternelles peuvent : + +- Recevoir des dossiers de demande de garde +- Accepter ou refuser une proposition +- Fournir leurs disponibilitĂ©s pour organiser un rendez-vous +- GĂ©rer leurs contrats et leurs avenants +- Suivre les absences des enfants accueillis +- DĂ©clarer des heures supplĂ©mentaires +- Participer Ă  des Ă©vĂ©nements organisĂ©s par le RPE +- Utiliser la messagerie intĂ©grĂ©e + +### 2.1.3 Gestionnaires + +Les gestionnaires (responsables de relais petite enfance) disposent d’un tableau de bord de supervision. Ils peuvent : + +- Valider ou rejeter les demandes de crĂ©ation de compte +- Suivre les mises en relation et les contrats +- Organiser des Ă©vĂ©nements ou des rendez-vous +- GĂ©rer les conflits ou les fins de contrat +- Lancer des sondages ou modĂ©rer un blog RPE (si activĂ©) +- Voir les historiques et statistiques liĂ©s Ă  leur pĂ©rimĂštre + +### 2.1.4 Administrateurs + +Les administrateurs sont les reprĂ©sentants techniques et institutionnels de la collectivitĂ© (DSI ou agents dĂ©signĂ©s). Ils peuvent : + +- CrĂ©er ou supprimer des comptes (gestionnaires, parents, assistantes maternelles) +- Personnaliser l’interface (logo, couleurs, nom de la ville) +- Activer ou dĂ©sactiver des modules complĂ©mentaires +- Consulter les statistiques d’usage +- Exporter les donnĂ©es +- Superviser les accĂšs et assurer la conformitĂ© RGPD +- IntĂ©grer la plateforme aux SI de la collectivitĂ© + +## 2.2 PĂ©rimĂštres et responsabilitĂ©s + +Chaque rĂŽle dispose d’un pĂ©rimĂštre fonctionnel propre, sans empiĂ©tement sur celui des autres : + +- Les parents et assistantes maternelles **Ă©changent directement** entre eux via la messagerie, mais ne peuvent modifier les donnĂ©es contractuelles qu’avec accord mutuel. +- Les gestionnaires interviennent en **appui et en arbitrage**, sans ĂȘtre partie prenante dans les contrats. +- Les administrateurs disposent d’un **pouvoir global de paramĂ©trage et de supervision**. + +# 3. CrĂ©ation de compte et fiches utilisateur + +La crĂ©ation de compte dans P'titsPas est structurĂ©e par profil, avec des parcours adaptĂ©s Ă  chaque rĂŽle. Tous les champs d'identitĂ© sont obligatoires, y compris les photos pour les assistantes maternelles et les enfants dĂ©jĂ  nĂ©s. Le processus d’approbation garantit la sĂ©curitĂ© des donnĂ©es et l’implication des acteurs concernĂ©s. + +## 3.1 CrĂ©ation de compte parent + +Le parcours de crĂ©ation d’un compte parent s’effectue en plusieurs Ă©tapes successives. + +### 3.1.1 Informations parent 1 +- Nom, prĂ©nom +- Adresse postale +- TĂ©lĂ©phone (obligatoire) +- Adresse e-mail + +**Note** : Le parent 1 ne dĂ©finit **pas** de mot de passe lors de l'inscription. Il recevra un email avec un lien pour crĂ©er son mot de passe aprĂšs validation du gestionnaire. + +### 3.1.2 Informations parent 2 (facultatif) +- PossibilitĂ© d'ajouter un second parent +- Nom, prĂ©nom, email, tĂ©lĂ©phone +- MĂȘme adresse que le parent 1 (case Ă  cocher ou champs alternatifs) +- Les deux parents sont ensuite liĂ©s dans l'application + +**Note** : Le parent 2 ne dĂ©finit **pas** de mot de passe lors de l'inscription. Il recevra un email avec un lien pour crĂ©er son mot de passe aprĂšs validation du gestionnaire. Cette approche est particuliĂšrement adaptĂ©e aux situations de parents sĂ©parĂ©s ou divorcĂ©s oĂč la communication peut ĂȘtre difficile. + +### 3.1.3 Informations sur l'enfant +- PrĂ©nom (facultatif si enfant Ă  naĂźtre) +- Nom (hĂ©ritĂ© des parents) +- Genre (H / F) - obligatoire +- Date de naissance ou **date prĂ©visionnelle de naissance** (si l'enfant n'est pas encore nĂ©, un switch modifie le label) +- Photo obligatoire si l'enfant est nĂ© +- Rattachement automatique aux deux parents + +### 3.1.4 PrĂ©sentation du dossier +- Zone de texte libre permettant aux parents de dĂ©crire leur situation +- Ce champ peut ĂȘtre rendu obligatoire ou non par l’administrateur + +### 3.1.5 – Acceptation des CGU +- Les utilisateurs doivent cocher la case + « J’ai lu et j’accepte les Conditions GĂ©nĂ©rales d’Utilisation et la Politique de confidentialitĂ© ». +- Un lien direct ouvre la version PDF des CGU. +- Le refus bloque la crĂ©ation de compte. + +### 3.1.6 RĂ©capitulatif et validation +- RĂ©sumĂ© des donnĂ©es saisies +- VĂ©rification, puis envoi de la demande +- Les comptes parent sont soumis Ă  validation par un gestionnaire avant activation +- Une fois validĂ©, chaque parent (Parent 1 et Parent 2 si renseignĂ©) reçoit un e-mail ou un SMS contenant un lien pour crĂ©er son mot de passe +- Le lien est valable pendant 7 jours +- Une fois le mot de passe créé, le parent peut se connecter Ă  son espace + +## 3.2 CrĂ©ation de compte assistante maternelle + +Ce parcours est divisĂ© en deux panneaux. + +### 3.2.1 Panneau 1 – Informations d'identitĂ© +- Nom, prĂ©nom +- Adresse postale +- TĂ©lĂ©phone +- Adresse e-mail +- Photo (obligatoire si l'option *Photo obligatoire* est activĂ©e) +- Consentement photo : case Ă  cocher confirmant l'accord pour stocker et afficher la photo (RGPD) + +**Note** : L'assistante maternelle ne dĂ©finit **pas** de mot de passe lors de l'inscription. Elle recevra un email avec un lien pour crĂ©er son mot de passe aprĂšs validation du gestionnaire. + +### 3.2.2 Panneau 2 – Informations professionnelles +- Date de naissance +- Ville et pays de naissance +- NumĂ©ro de SĂ©curitĂ© sociale (NIR) – obligatoire + - Saisi en clair (non masquĂ©) + - Mention : « UtilisĂ© uniquement pour la gĂ©nĂ©ration automatique du contrat » +- NumĂ©ro d'agrĂ©ment – obligatoire +- Date d'obtention de l'agrĂ©ment – obligatoire +- Nombre d'enfants pouvant ĂȘtre accueillis – obligatoire + +### 3.2.3 PrĂ©sentation +- Champ libre : message Ă  destination du gestionnaire +- Permet de justifier une demande ou d’ajouter des prĂ©cisions + +### 3.1.4 – Acceptation des CGU +- Les utilisateurs doivent cocher la case + « J’ai lu et j’accepte les Conditions GĂ©nĂ©rales d’Utilisation et la Politique de confidentialitĂ© ». +- Un lien direct ouvre la version PDF des CGU. +- Le refus bloque la crĂ©ation de compte. + +### 3.2.5 RĂ©capitulatif et validation +- RĂ©sumĂ© des donnĂ©es saisies +- VĂ©rification, puis envoi de la demande +- Validation par un gestionnaire requise avant activation +- Une fois validĂ©, l'assistante maternelle reçoit un e-mail ou un SMS contenant un lien pour crĂ©er son mot de passe +- Le lien est valable pendant 7 jours +- Une fois le mot de passe créé, l'assistante maternelle peut se connecter Ă  son espace + +## 3.3 CrĂ©ation d’un gestionnaire + +- RĂ©alisĂ©e par un administrateur +- Champs obligatoires : nom, prĂ©nom, adresse e-mail, mot de passe +- Affectation Ă  un ou plusieurs relais petite enfance +- Le mot de passe doit ĂȘtre modifiĂ© lors de la premiĂšre connexion + +## 3.4 CrĂ©ation d’un administrateur + +- Seuls les administrateurs existants peuvent crĂ©er de nouveaux comptes administrateurs +- Les droits sont Ă©quivalents (possibilitĂ© de restreindre par pĂ©rimĂštre dans une version multi-mairies) +- Obligation de changer le mot de passe Ă  la premiĂšre connexion + +## 3.5 Fiche enfant + +Chaque enfant est reprĂ©sentĂ© par une fiche : + +- PrĂ©nom (facultatif si enfant Ă  naĂźtre) +- Nom +- Genre (H / F) - obligatoire +- Date de naissance ou date prĂ©visionnelle +- Photo (obligatoire si l'enfant est nĂ© ET si l'option *Photo obligatoire* est activĂ©e) +- Consentement photo enregistrĂ© : valeur boolĂ©enne + horodatage liĂ©s Ă  l'accord donnĂ© par le parent +- Statut : Ă  naĂźtre / actif / scolarisĂ© +- Indication possible : jumeaux, triplĂ©s, etc. +- PossibilitĂ© de rattacher un enfant Ă  plusieurs parents (garde alternĂ©e) + +## 3.6 Authentification et sĂ©curitĂ© + +- Tous les comptes utilisent une combinaison adresse e-mail + mot de passe +- Les gestionnaires et administrateurs doivent modifier leur mot de passe Ă  la premiĂšre connexion +- Des mĂ©canismes de rĂ©cupĂ©ration sont disponibles en cas de perte + +Un lien direct vers les **Mentions lĂ©gales** et la **Politique de confidentialitĂ©** est accessible en permanence depuis le pied de page, y compris avant la connexion. + +# 4. Tableaux de bord + +Chaque rĂŽle utilisateur dispose d’un tableau de bord personnalisĂ©, adaptĂ© Ă  ses fonctions dans la plateforme. Ces interfaces sont pensĂ©es pour ĂȘtre lisibles, fonctionnelles et Ă©volutives. + +## 4.1 Vue d’ensemble + +| RĂŽle | AccĂšs au tableau de bord | +|------------------------|-------------------------------------------------------------------| +| Parents | Recherche d'assistante maternelle, gestion des enfants, contrat, agenda | +| Assistantes maternelles| Dossiers reçus, enfants accueillis, heures sup, agenda, messagerie| +| Gestionnaires | Validation de comptes, contrats, messagerie, Ă©vĂ©nements RPE | +| Administrateurs | ParamĂštres globaux, gestion des utilisateurs, statistiques | + +Les tableaux de bord intĂšgrent : +- Une **barre de navigation supĂ©rieure** (liens de navigation rapide) +- Une **zone centrale dynamique**, spĂ©cifique au rĂŽle +- Une **zone de notifications ou de messagerie** +- Un **menu profil** propre Ă  chaque type d'utilisateur (cf. section 4.6) + +Un systĂšme de **bulles d’aide contextuelle** (icĂŽne « ? ») doit ĂȘtre prĂ©sent sur les champs ou boutons complexes ; un clic ouvre un court tooltip explicatif. Aucune base de connaissances complĂšte n’est exigĂ©e en V1. + +#### Pied de page commun + +Chaque page de l’application affiche un **pied de page** fixe contenant : + +| ÉlĂ©ment | Cible / comportement | +|---------|----------------------| +| **Contact support** | Ouvre une fenĂȘtre de mailto :`support@P'titsPas.local` (adresse configurable dans l’admin). | +| **Signaler un bug** | Ouvre un formulaire modal minimal :
Champ texte, bouton « Envoyer » ⇒ crĂ©e une entrĂ©e dans la table `bug_report` (ou envoie un e-mail si aucune table n’est prĂ©vue). | +| **Mentions lĂ©gales** | Lien vers la page statique `/legal` : informations Ă©diteur, hĂ©bergeur, responsable du traitement. | +| **Politique de confidentialitĂ©** | Lien vers la page statique `/privacy` (le texte RGPD dĂ©taillĂ©). | + +Le pied de page doit rester visible sur desktop et mobile ; sur Ă©crans Ă©troits, les liens peuvent ĂȘtre regroupĂ©s dans un menu « Informations ». + + +## 4.2 Tableau de bord des parents + +Le tableau de bord parent est conçu pour offrir une vue complĂšte de la situation de la famille, avec des entrĂ©es rapides vers toutes les fonctionnalitĂ©s utiles. + +### 4.2.1 En-tĂȘte + +- Logo de la ville +- Nom et prĂ©nom du parent connectĂ© +- AccĂšs au menu Profil +- Bouton “Rechercher une assistante maternelle” +- Notification si un contrat est en cours ou un dossier en traitement + +### 4.2.2 Zone enfants + +- EncadrĂ© pour chaque enfant : prĂ©nom, photo, statut +- Bouton “Ajouter un enfant” +- AccĂšs Ă  la fiche de l’enfant (dossiers, agenda, Ă©vĂ©nements) + +### 4.2.3 ÉvĂ©nements Ă  venir + +Les Ă©vĂ©nements sont affichĂ©s sous forme de **bulles colorĂ©es** : +- Vacances parents +- Absence enfant +- ActivitĂ© RPE (confirmĂ©e ou suggĂ©rĂ©e) +- CongĂ©s assistante maternelle +- Pour un **arrĂȘt maladie**, le parent destinataire dispose du bouton **« ArrĂȘt bien reçu »** ; lorsqu’il le clique, l’évĂ©nement est marquĂ© **ValidĂ©** cĂŽtĂ© assistante maternelle. + +Chaque Ă©vĂ©nement peut ĂȘtre : +- ConfirmĂ© ou refusĂ© (si proposĂ© par l’autre partie) +- ModifiĂ© par la partie crĂ©atrice +- AjoutĂ© manuellement par le parent + +Un bouton “AccĂ©der Ă  l’agenda” ouvre une vue Ă©tendue : +- Liste complĂšte des Ă©vĂ©nements (passĂ©s et futurs) +- Calendrier annuel, mensuel ou hebdomadaire +- Ajout d’évĂ©nements : absence, vacances, note personnelle + +### 4.2.4 Contrats + +- EncadrĂ© avec Ă©tat du dossier (brouillon, validĂ©, en cours, en fin) +- Consultation du contrat signĂ© +- Bouton “Proposer un avenant” +- AccĂšs Ă  l’historique des modifications +- Lien vers l’outil d’aide Pajemploi (calculs et dĂ©claration) + +### 4.2.5 Messagerie + +- Historique des conversations +- PossibilitĂ© de filtrer par enfant ou par assistante maternelle +- Les deux parents d’un enfant sont toujours intĂ©grĂ©s ensemble dans une conversation +- PossibilitĂ© d’ajouter le gestionnaire Ă  une conversation existante +- IcĂŽne spĂ©ciale si le message a Ă©tĂ© reformulĂ© par IA (si module activĂ©) + +### 4.2.6 Notifications + +- Liste visuelle avec icĂŽnes et codes couleur : + - Nouvel Ă©vĂ©nement ajoutĂ© par l’assistante maternelle + - Dossier modifiĂ© + - Contrat en attente de validation + - Paiement en attente + - Message non lu + +## 4.3 Tableau de bord des assistantes maternelles + +L’assistante maternelle accĂšde Ă  une interface dĂ©diĂ©e Ă  la gestion de ses accueils, de ses disponibilitĂ©s, et de ses Ă©changes avec les familles et le RPE. + +### 4.3.1 En-tĂȘte + +- Nom et prĂ©nom +- Photo de profil +- AccĂšs au menu Profil +- Message d’information (nouveau dossier reçu, contrat en cours, etc.) + +### 4.3.2 Dossiers reçus + +- Liste des demandes de garde +- Pour chaque dossier : nom de l’enfant, informations des parents, dates souhaitĂ©es +- Message personnalisĂ© des parents affichĂ© +- Bouton “Accepter le dossier” → propose ensuite des disponibilitĂ©s de rendez-vous +- Historique des dĂ©cisions prises + +### 4.3.3 Enfants accueillis + +- Liste des enfants avec fiche complĂšte : + - IdentitĂ© + - Contrat associĂ© + - Agenda de garde + - Alertes importantes (allergies, horaires atypiques) + +### 4.3.4 Agenda + +- Vue des absences validĂ©es +- Ajout d’absences programmĂ©es (vacances, fermeture exceptionnelle) +- Ajout d’un **arrĂȘt maladie** : + 1. L’assistante maternelle saisit la pĂ©riode et clique **« ArrĂȘt transmis aux parents »** ; + 2. Elle sĂ©lectionne le parent Ă  qui elle a remis le justificatif papier (Parent 1 ou Parent 2) ; + 3. L’évĂ©nement passe au statut **« En attente de confirmation parent »** dans les deux agendas. +- Chaque Ă©vĂ©nement peut contenir un commentaire +- Les absences doivent ĂȘtre validĂ©es par les parents + +### 4.3.5 Heures supplĂ©mentaires + +- DĂ©claration des jours concernĂ©s +- Saisie du nombre d’heures effectuĂ©es +- Commentaire facultatif +- Historique et rĂ©gularisation automatique dans la fiche de paie + +### 4.3.6 Messagerie + +- Conversations avec les parents +- Conversations de groupe avec le gestionnaire (Ă©vĂ©nements RPE) +- Notification lorsqu’un nouveau message est reçu +- IcĂŽne indiquant si le message a Ă©tĂ© reformulĂ© par IA (si activĂ©e) + +--- + +## 4.4 Tableau de bord des gestionnaires + +Le gestionnaire RPE dispose d’une vision transversale sur les utilisateurs, les dossiers et les activitĂ©s de la structure. Son rĂŽle est d'accompagner, superviser, et arbitrer si nĂ©cessaire. + +### 4.4.1 Comptes Ă  valider + +- File d’attente des demandes de crĂ©ation de compte +- DĂ©tails de chaque demande : parent, assistante maternelle +- Actions possibles : Valider / Refuser / Demander des prĂ©cisions + +### 4.4.2 Liste des utilisateurs + +- Filtres par rĂŽle, statut, date d’inscription +- AccĂšs rapide aux informations et historiques +- PossibilitĂ© de contacter un utilisateur + +### 4.4.3 Contrats + +- Vue consolidĂ©e des contrats en cours, en validation, ou en fin de garde +- Historique des avenants +- AccĂšs au dĂ©tail d’un contrat en cas de besoin d’arbitrage + +> **ResponsabilitĂ© du gestionnaire RPE** +> Le gestionnaire agit exclusivement comme **tiers de confiance** : +> - il vĂ©rifie la cohĂ©rence des informations fournies par les parents et l’assistante maternelle ; +> - il valide la conformitĂ© formelle du contrat (mentions lĂ©gales, dates, taux). +> **Il n’est pas partie prenante au contrat de travail** et n’assume aucune responsabilitĂ© patrimoniale ou employeur ; son rĂŽle se limite Ă  un contrĂŽle administratif et Ă  la mĂ©diation en cas de dĂ©saccord. + +### 4.4.4 Messagerie + +- PossibilitĂ© d’entrer dans une conversation parent-assistante pour mĂ©diation +- DĂ©marrer une nouvelle conversation avec un parent, une assistante maternelle, ou les deux +- Conversations de groupe avec plusieurs assistantes maternelles (organisation d’évĂ©nements RPE) + +### 4.4.5 ÉvĂ©nements RPE + +- CrĂ©ation et suivi des Ă©vĂ©nements collectifs +- SĂ©lection des assistantes concernĂ©es +- Confirmation de participation +- Ajout automatique dans les agendas parentaux si l’enfant est inscrit + +### 4.4.6 Alertes + +- Liste visuelle des Ă©vĂ©nements nĂ©cessitant attention : + - Conflits signalĂ©s + - Absences non validĂ©es + - Fin de contrat en dĂ©saccord +- Code couleur selon niveau d’urgence +- AccĂšs direct aux dossiers concernĂ©s + +##### DĂ©lais et relance – absences en attente +- Une absence saisie par la partie A doit ĂȘtre **validĂ©e sous 7 jours** par la partie B. +- Relance automatique : J+5 par notification (parent ou assistante maternelle). +- Si non validĂ©e au bout de 14 jours, alerte “Urgence” (rouge) dans le panneau Gestionnaire. +- Les dĂ©lais sont configurables par l’administrateur (paramĂštre “ABSENCE_GRACE_PERIOD” en jours). + +## 4.5 Tableau de bord des administrateurs + +Le tableau de bord des administrateurs est dĂ©diĂ© Ă  la gestion technique et stratĂ©gique de la plateforme pour une collectivitĂ©. Il centralise tous les outils de supervision, d’administration des comptes et de paramĂ©trage global. + +### 4.5.1 Menu Profil + +Le menu profil de l’administrateur comprend uniquement : +- Mon compte +- DĂ©connexion + +Toutes les fonctionnalitĂ©s de gestion sont accessibles via des onglets distincts dans le tableau de bord. + +### 4.5.2 Gestion des utilisateurs + +L’administration des utilisateurs est organisĂ©e par panneaux distincts pour chaque type de profil. + +#### a. Gestion des gestionnaires +- Liste des gestionnaires existants +- CrĂ©ation (nom, prĂ©nom, e-mail, mot de passe) +- Attribution Ă  un ou plusieurs RPE +- RĂ©initialisation du mot de passe +- Suppression du compte + +#### b. Gestion des parents +- Liste complĂšte des parents enregistrĂ©s +- Recherche par nom, statut, enfants associĂ©s +- Modification des informations +- Suppression d’un compte +- Consultation du statut des dossiers liĂ©s + +#### c. Gestion des assistantes maternelles +- Liste des assistantes avec numĂ©ro d’agrĂ©ment +- Modification ou suppression d’un compte +- Filtrage par zone gĂ©ographique ou capacitĂ© + +#### d. Gestion des administrateurs +- CrĂ©ation de nouveaux comptes administrateurs +- Suivi des droits +- Obligation de modification du mot de passe Ă  la premiĂšre connexion + +### 4.5.3 Gestion des enfants + +Deux accĂšs possibles Ă  la gestion des enfants : + +#### a. Par fiche parent +- Consultation et Ă©dition des enfants associĂ©s Ă  chaque parent + +#### b. Vue globale “Enfants” +- Liste complĂšte avec : + - Nom, prĂ©nom, date de naissance ou prĂ©visionnelle + - Statut (Ă  naĂźtre, actif, scolarisĂ©) + - Parents associĂ©s + - Contrat en cours (si applicable) +- PossibilitĂ© de modifier ou supprimer une fiche enfant + +### 4.5.4 ParamĂštres de la plateforme + +#### a. Modules activables +- Blog RPE +- IA de reformulation de messages +- Aide Pajemploi +- Dossiers scolaires en fin de garde +- Garde d’enfants “grands” +- Dossier fratrie unique + +#### b. Personnalisation visuelle +- Logo de la commune +- ThĂšme couleurs +- Nom de la structure affichĂ©e + +#### c. RĂšgles de consentement et mĂ©dias +- Photo obligatoire (assistante maternelle & enfant) : *On / Off* + - *On* : le champ Photo devient requis pour l'assistante maternelle et l’enfant ; la case Consentement photo s’affiche. + - *Off* : la photo redevient facultative et le champ Consentement photo disparaĂźt. +- Historique des changements avec horodatage et identifiant administrateur. + +### 4.5.5 Statistiques et supervision + +- Nombre de contrats actifs +- Nombre d’enfants enregistrĂ©s (par statut) +- Nombre de dossiers ouverts, validĂ©s, clĂŽturĂ©s +- Utilisation des modules optionnels +- Export CSV disponibles : + - ActivitĂ© par RPE + - DonnĂ©es sur les enfants + - Historique des absences + +### 4.5.6 SĂ©curitĂ© et conformitĂ© + +- Suivi des connexions et accĂšs sensibles +- Politique de confidentialitĂ© consultable +- Gestion des consentements +- Interface de suppression/anonymisation des donnĂ©es +- Historique horodatĂ© des actions d’administration + +## 4.6 Menus, alertes et raccourcis visuels + +Chaque type d’utilisateur dispose d’un menu “Profil” spĂ©cifique, d’un systĂšme d’alertes et de raccourcis permettant une navigation fluide et intuitive. + +### 4.6.1 Menus Profil par rĂŽle + +#### a. Parents +- Mes informations +- Mon compte +- DĂ©connexion + +#### b. Assistantes maternelles +- Mon profil +- Mes informations professionnelles + - Permet de consulter et modifier : NIR, numĂ©ro d’agrĂ©ment, capacitĂ© d’accueil, etc. + - Le NIR n’est accessible qu’à l’assistante maternelle elle-mĂȘme ; aucun autre rĂŽle ne le voit. +- Mon compte +- DĂ©connexion + +#### c. Gestionnaires +- Mon compte +- DĂ©connexion + +#### d. Administrateurs +- Mon compte +- DĂ©connexion + +### 4.6.2 Alertes visuelles + +Des alertes apparaissent sous forme de bulles ou encadrĂ©s colorĂ©s dans le tableau de bord : +- Nouvel Ă©vĂ©nement ajoutĂ© par une autre partie +- Contrat en attente de validation +- Conflit signalĂ© +- Absence Ă  approuver +- Dossier refusĂ© ou incomplet + +Les gestionnaires disposent d’un **panneau d’alertes consolidĂ©es**, codĂ© par couleur : +- Rouge : urgence ou conflit +- Orange : action requise +- Vert : succĂšs ou validation en attente + +### 4.6.3 Raccourcis fonctionnels + +Selon le rĂŽle : +- **Parents** : bouton “Rechercher une assistante maternelle”, accĂšs rapide Ă  l’enfant principal +- **Assistantes maternelles** : “DĂ©clarer une absence”, “Voir les enfants du jour” +- **Gestionnaires** : “Nouveaux comptes”, “Dossiers Ă  traiter”, “ÉvĂ©nements RPE” +- **Administrateurs** : accĂšs direct aux sections de gestion des utilisateurs, enfants, et paramĂštres + +Les raccourcis sont affichĂ©s sous forme d’icĂŽnes dans la barre supĂ©rieure ou la colonne latĂ©rale, selon la taille d’écran. + +# 5. Workflows + +Ce chapitre dĂ©crit les diffĂ©rents processus mĂ©tiers (workflows) au cƓur de P'titsPas : de la recherche d’une assistante maternelle Ă  la fin du contrat, en passant par le traitement des dossiers, la contractualisation, les avenants, et la sĂ©paration. + +## 5.1 Recherche d’une assistante maternelle + +### 5.1.1 DĂ©clenchement + +- Un parent connectĂ© accĂšde Ă  son tableau de bord. +- S’il n’a pas encore d'assistante maternelle, un panneau de recherche s’affiche automatiquement. +- Sinon, il peut cliquer sur le bouton “Rechercher une assistante maternelle”. + +### 5.1.2 Étape 1 – Informations du dossier + +Le parent complĂšte un formulaire : +- Enfant concernĂ© +- Type de contrat : annĂ©e complĂšte, incomplĂšte, ou temporaire (remplacement) +- Fourniture des repas (oui/non) +- Budget maximum par poste (taux horaire, repas, indemnitĂ©s) +- Plages horaires souhaitĂ©es pour chaque jour + +### 5.1.3 Étape 2 – Texte d’introduction + +Le parent rĂ©dige une courte prĂ©sentation Ă  destination des assistantes maternelles, expliquant sa situation. + +### 5.1.4 Étape 3 – DisponibilitĂ©s pour un rendez-vous + +Le parent indique ses plages de disponibilitĂ© pour une rencontre. + +### 5.1.5 Étape 4 – Recherche et sĂ©lection + +- Une liste des assistantes maternelles est proposĂ©e, classĂ©e par **proximitĂ© gĂ©ographique**. +- Chaque fiche contient des initiales (photo uniquement visible aprĂšs rencontre). +- Une carte interactive affiche leur localisation. +- Le parent peut sĂ©lectionner une ou plusieurs nounous Ă  qui envoyer un dossier. + +### 5.1.6 Étape 5 – RĂ©capitulatif et envoi + +- Le parent valide le dossier complet +- Le dossier est transmis aux assistantes maternelles sĂ©lectionnĂ©es + +## 5.2 Traitement du dossier + +### 5.2.1 RĂ©ception par l'assistante maternelle + +- Le dossier s’affiche dans son tableau de bord +- Elle peut consulter : + - Fiche parent 1 et parent 2 (si existant) + - Fiche enfant + - Texte de prĂ©sentation + - Informations pratiques et financiĂšres + - Plages de disponibilitĂ© proposĂ©es + +### 5.2.2 RĂ©ponse de l’assistante maternelle + +- Elle peut accepter, refuser, ou demander Ă  Ă©changer via messagerie. +- Si elle accepte, elle sĂ©lectionne un ou plusieurs crĂ©neaux compatibles avec ceux proposĂ©s. + +### 5.2.3 Proposition de rendez-vous + +- Le parent reçoit les crĂ©neaux suggĂ©rĂ©s. +- Il peut en choisir un, ou en proposer un autre Ă  partir de l’agenda. +- L'assistante maternelle accepte, refuse ou modifie. +- Ce ping-pong se poursuit jusqu’à accord. + +### 5.2.4 Finalisation du rendez-vous + +- Une fois confirmĂ©, les numĂ©ros de tĂ©lĂ©phone sont Ă©changĂ©s. +- Le rendez-vous a lieu hors de la plateforme. + +## 5.3 CrĂ©ation du contrat + +### 5.3.1 Validation mutuelle + +- AprĂšs le rendez-vous, l'assistante maternelle et les parents sont invitĂ©s Ă  confirmer la poursuite du dossier. +- Chacun renseigne : + - Horaires de garde + - Taux horaire + - IndemnitĂ©s repas et entretien + - DĂ©but du contrat + +### 5.3.2 VĂ©rification croisĂ©e + +- L’outil compare les informations saisies par les deux parties. +- Si elles diffĂšrent : + - Nouvelle saisie demandĂ©e + - Le gestionnaire peut ĂȘtre notifiĂ© pour accompagner + +- Si elles concordent : + - Le contrat est gĂ©nĂ©rĂ© automatiquement + +### 5.3.3 Validation finale + +Une fois le contrat gĂ©nĂ©rĂ© et validĂ© par le gestionnaire : + +1. **TĂ©lĂ©chargement** : chaque partie rĂ©cupĂšre le PDF. +2. **Signature manuscrite** : les parents (employeurs) et l’assistante maternelle signent physiquement le document. +3. **Confirmation dans la plateforme** : + - Un bouton « J’ai signĂ© » apparaĂźt pour chaque partie. + - (Optionnel) TĂ©lĂ©versement du contrat signĂ© scannĂ© ou photographiĂ©. +4. DĂšs que les deux confirmations sont saisies, **le contrat est considĂ©rĂ© actif** ; l’application lie dĂ©finitivement les comptes parent / assistante maternelle Ă  ce contrat. + +> Lors de la gĂ©nĂ©ration du contrat, le NIR de l’assistante maternelle est injectĂ© dans le PDF, mais **n’est affichĂ© nulle part dans l’application**. + +## 5.4 Avenants + +### 5.4.1 Initiation + +- Un bouton “Proposer un avenant” est disponible dans le panneau Contrat +- Les deux parties peuvent initier un avenant + +### 5.4.2 Contenu + +- Modification des horaires +- Revalorisation du taux horaire +- Changement de type de contrat (annĂ©e complĂšte ↔ incomplĂšte) +- Nombre de semaines de garde + +### 5.4.3 Validation + +- MĂȘme processus que pour le contrat initial : + - Chaque partie valide + - VĂ©rification de cohĂ©rence + - Approbation finale du gestionnaire + +### 5.4.4 AmĂ©lioration future possible + +- NumĂ©rotation automatique des avenants +- Historique des modifications + +## 5.5 Fin de contrat + +### 5.5.1 DĂ©claration de fin + +- InitiĂ©e par l’une des parties +- Raison de la rupture (texte obligatoire) +- Option “Notifier le gestionnaire” (cas de dĂ©saccord) + +### 5.5.2 Intervention du gestionnaire + +- Peut proposer un rendez-vous de conciliation +- PossibilitĂ© de laisser des observations + +#### 5.5.2 bis ProcĂ©dure en cas de dĂ©saccord persistant +- Si la mĂ©diation du gestionnaire n’aboutit pas : + 1. CrĂ©ation automatique d’un **dossier Litige** (statut “Ouvert”) visible du gestionnaire et des deux parties. + 2. PossibilitĂ© d’ajouter des commentaires horodatĂ©s et piĂšces justificatives (non obligatoires). + 3. GĂ©nĂ©ration d’un **rapport PDF** exportable pour saisie d’un conciliateur ou des services juridiques de la mairie. +- Le dossier passe Ă  “ClĂŽturĂ©â€ : + - par accord Ă©crit des parties, + - ou aprĂšs 90 jours sans activitĂ© (archivage automatique). + +### 5.5.3 Solde de tout compte + +- Calcul automatique du solde : + - CongĂ©s restants + - IndemnitĂ©s + - Heures supplĂ©mentaires +- GĂ©nĂ©ration d’un rĂ©capitulatif tĂ©lĂ©chargeable + + +# 6. Outils partagĂ©s + +Certains outils de la plateforme sont accessibles Ă  plusieurs profils et favorisent la collaboration entre les utilisateurs tout en assurant la traçabilitĂ© des Ă©changes. + +## 6.1 Messagerie + +- IntĂ©grĂ©e dans tous les tableaux de bord (parents, assistantes maternelles, gestionnaires) +- Permet les Ă©changes directs entre parents et assistantes maternelles +- PossibilitĂ© pour les parents ou l'assistante maternelle d’ajouter le gestionnaire Ă  une conversation existante +- Le gestionnaire peut initier des conversations avec : + - Un parent + - Une assistante maternelle + - Les deux Ă  la fois (en cas de mĂ©diation) +- Conversations de groupe possibles entre le gestionnaire et plusieurs assistantes maternelles (organisation d’évĂ©nements) +- 📌 **Nota** : les parents ne participent jamais Ă  ces groupes collectifs +- ✅ Si deux parents sont dĂ©clarĂ©s, ils sont **automatiquement intĂ©grĂ©s** Ă  toutes les conversations liĂ©es Ă  leur enfant + +## 6.2 Agenda + +- Chaque rĂŽle dispose d’un agenda intĂ©grĂ© +- Permet d’ajouter, modifier ou valider : + - Absences enfants + - CongĂ©s des assistantes maternelles + - Vacances des parents + - ÉvĂ©nements RPE +- Un rĂ©sumĂ© visuel est proposĂ© (vue mois/semaine/annĂ©e) +- Synchronisation automatique avec les Ă©vĂ©nements validĂ©s par l’autre partie +- RĂ©capitulatif hebdomadaire (ou quotidien) envoyĂ© Ă  l’assistante maternelle + +##### Workflow « ArrĂȘt maladie » +- Fonctionne sans stockage de document mĂ©dical : + 1. L’assistante maternelle clique **ArrĂȘt transmis aux parents**. + 2. Le parent concernĂ© valide via **ArrĂȘt bien reçu**. +- Une fois les deux actions rĂ©alisĂ©es, l’arrĂȘt maladie est confirmĂ© dans les agendas des deux parties. + + +## 6.3 Fiche enfant + +- Visible et modifiable par les parents +- Consultable par : + - L’assistante maternelle (si liĂ©e Ă  un contrat) + - Le gestionnaire (Ă  titre d’information) +- Contient : + - IdentitĂ© + - Photo (obligatoire si nĂ©) + - Statut (Ă  naĂźtre / actif / scolarisĂ©) + - Parents associĂ©s + - Mention s’il s’agit de jumeaux, triplĂ©s, etc. + +## 6.4 Contrats et avenants + +- PartagĂ©s entre les parents, l’assistante maternelle, et le gestionnaire +- Contrat actif consultable dans les tableaux de bord +- Avenants consultables dans l’historique +- Contrat gĂ©nĂ©rĂ© uniquement aprĂšs validation mutuelle et approbation du gestionnaire +- L’outil garantit que seules les versions validĂ©es sont actives et accessibles + + +# 7. Suivi administratif et financier + +La plateforme P'titsPas intĂšgre plusieurs outils d’accompagnement pour simplifier la gestion administrative et financiĂšre des contrats entre parents et assistantes maternelles. + +## 7.1 Fiche de paie + +- Calcul automatique des Ă©lĂ©ments mensuels Ă  reporter : + - Heures normales rĂ©munĂ©rĂ©es + - Heures supplĂ©mentaires + - IndemnitĂ©s repas et entretien + - Absences dĂ©duites +- RĂ©capitulatif consultable dans l’espace Contrat du parent et de l’assistante maternelle +- Export possible sous format PDF pour usage personnel ou archivage +- Le NIR de l’assistante maternelle est utilisĂ© pour prĂ©-remplir les champs Pajemploi ; il n’est jamais affichĂ© Ă  l’écran. + + +## 7.2 Aide au remplissage Pajemploi + +- Affichage clair et guidĂ© de la **feuille Ă  remplir** sur le site Pajemploi +- P'titsPas prĂ©remplit chaque champ avec les valeurs calculĂ©es Ă  partir du contrat +- Objectif : faciliter la saisie et Ă©viter les erreurs de dĂ©claration +- 📌 **Nota** : il ne s’agit pas d’une dĂ©claration automatique + +## 7.3 Heures supplĂ©mentaires + +- L’assistante maternelle peut dĂ©clarer des heures supplĂ©mentaires via son tableau de bord : + - SĂ©lection du jour concernĂ© + - Nombre d’heures effectuĂ©es au-delĂ  du contrat + - Commentaire facultatif +- Les heures apparaissent ensuite dans le rĂ©capitulatif mensuel +- Le tarif des heures supplĂ©mentaires est dĂ©fini dans le contrat initial + +## 7.4 Historique + +- Chaque contrat conserve un historique : + - Avenants + - DĂ©clarations mensuelles + - Modifications validĂ©es + - Absences notables +- Accessible aux parents, Ă  l’assistante maternelle, et au gestionnaire + +## 7.5 Solde de tout compte + +- Lors de la fin de contrat, l’outil gĂ©nĂšre un rĂ©capitulatif : + - Jours de congĂ©s restants ou Ă  indemniser + - IndemnitĂ©s Ă©ventuelles + - Heures supplĂ©mentaires non rĂ©glĂ©es +- Permet d’établir un **solde de tout compte** clair, limitant les risques de conflit + + +# 8. Administration technique et conformitĂ© + +Ce chapitre regroupe les mĂ©canismes garantissant la sĂ©curitĂ©, la fiabilitĂ© et la conformitĂ© lĂ©gale de la plateforme P'titsPas. Il s’adresse aux administrateurs techniques des collectivitĂ©s. + +## 8.1 SĂ©curitĂ© et accĂšs + +- Chaque utilisateur possĂšde un identifiant personnel et un mot de passe +- Les administrateurs et gestionnaires doivent changer leur mot de passe Ă  la premiĂšre connexion +- Journalisation des accĂšs sensibles (historique des connexions, changements de paramĂštres) +- SĂ©curisation HTTPS, stockage des mots de passe chiffrĂ© +- Limitation des tentatives de connexion frauduleuses (anti-brute-force) +- Chiffrement au repos : le NIR est stockĂ© chiffrĂ© (AES-256, clĂ© KMS). +- AccĂšs restreint : seule l’assistante maternelle peut consulter ou modifier son NIR. +- Journalisation : toute modification du NIR est tracĂ©e (horodatage, ID utilisateur). +- Aucune piĂšce jointe mĂ©dicale n’est conservĂ©e ; seules les mĂ©tadonnĂ©es de validation des arrĂȘts maladie (date, utilisateurs) sont journalisĂ©es. +- Les rapports créés via « Signaler un bug » sont stockĂ©s dans la table `bug_report` avec horodatage et identifiant utilisateur, accessibles uniquement aux administrateurs. + +> 🔗 **Sauvegarde & PRA** +> Les exigences dĂ©taillĂ©es sont dĂ©crites dans le SSS-SAU-001 « Sauvegarde & Plan de Reprise d’ActivitĂ© ». +> Le prĂ©sent CDC ne reprend que les objectifs RPO/RTO et la nĂ©cessitĂ© de tests semestriels. + + +## 8.2 Gouvernance multi-admins + +- PossibilitĂ© de crĂ©er plusieurs administrateurs par commune +- Droits identiques, sauf si future extension multi-mairies (non implĂ©mentĂ©e Ă  ce stade) +- Suivi des actions d’administration horodatĂ©es pour audit interne + +## 8.3 ConformitĂ© RGPD + +- Affichage explicite des consentements lors de la crĂ©ation de compte +- PossibilitĂ© pour l’utilisateur de : + - Consulter les donnĂ©es stockĂ©es + - Demander la suppression de son compte +- Interface d’anonymisation des donnĂ©es sur demande +- AccĂšs Ă  la politique de confidentialitĂ© depuis chaque tableau de bord +- Archivage horodatĂ© des modifications sensibles +- Stockage du consentement photo avec date, heure, utilisateur concernĂ©. +- Retrait de consentement : masque immĂ©diat de la photo, dĂ©clenchement d’une suppression dĂ©finitive sous 30 jours. +- Registre des traitements mis Ă  jour pour la finalitĂ© « affichage photo assistante maternelle / enfant ». + +#### 8.3.1 Fondement juridique +- Collecte du NIR fondĂ©e sur l’exĂ©cution du contrat de travail (art. 6-1-b RGPD). + +#### 8.3.2 Minimisation +- Le NIR est utilisĂ© **exclusivement** pour gĂ©nĂ©rer le contrat PDF et la fiche de paie. + +#### 8.3.3 Conservation +- Conservation : 5 ans aprĂšs la fin du dernier contrat, puis hachage irrĂ©versible ou suppression. + +#### 8.3.4 Consentement photo +- Stockage de l’accord avec date, heure, utilisateur. +- Retrait de consentement : masque immĂ©diat, suppression dĂ©finitive sous 30 jours. +- Registre des traitements mis Ă  jour : finalitĂ© « Affichage photo assistante maternelle / enfant ». + +#### 8.3.5 Droits des personnes et suppression de compte +- Les parents et assistantes maternelles peuvent **supprimer** leur compte Ă  tout moment depuis le menu Profil. +- La suppression entraĂźne : + - dĂ©sactivation immĂ©diate de l’accĂšs, + - effacement des donnĂ©es personnelles hors obligations lĂ©gales (contrats archivĂ©s 5 ans). +- **Anonymisation totale non applicable** : le lien employeur – salariĂ© impose de conserver certaines informations nominatives dans les contrats et historiques de paie conformĂ©ment au Code du Travail. + +## 8.4 IntĂ©gration API + +- PossibilitĂ© future d’intĂ©gration aux systĂšmes d’information municipaux : + - Statistiques + - DonnĂ©es anonymisĂ©es d’activitĂ© + - Synchronisation Ă©ventuelle avec les portails familles ou services petite enfance +- ⚠ PrĂ©paration automatique des dĂ©clarations Pajemploi via API non disponible par dĂ©faut : + - Cette fonctionnalitĂ© nĂ©cessite une habilitation spĂ©cifique de l’URSSAF + - Elle est donc classĂ©e comme amĂ©lioration future possible + +### 8.5 Architecture technique + +L’équipe de dĂ©veloppement est libre de choisir la pile technologique ; seules les rĂšgles suivantes sont impĂ©ratives. + +> 🔗 Les aspects techniques (sauvegarde, PRA, CI/CD, API, dĂ©ploiement) sont dĂ©taillĂ©s dans le document **SSS-001 – SpĂ©cification technique & opĂ©rationnelle unifiĂ©e**. + +#### 8.5.1 Principes directeurs +- **ConformitĂ© RGPD** : minimisation, chiffrement au repos et en transit. +- **SĂ©curitĂ© by-design** : respect OWASP Top 10, revue de code, tests de pĂ©nĂ©tration. +- **ModularitĂ© & maintenabilitĂ©** : sĂ©paration claire frontend / backend / base. +- **PortabilitĂ©** : conteneurisation (Docker ou Ă©quivalent) pour exĂ©cution locale et serveur communal. +- **TraçabilitĂ©** : journaux horodatĂ©s, corrĂ©lables (API, base, authentification). +- **Documentation** : README d’installation, diagrammes d’architecture, description API. + +#### 8.5.2 Contraintes non fonctionnelles _(valeurs indicatives)_ +- DisponibilitĂ© mensuelle ≄ **98 %**. +- Temps de rĂ©ponse **P95 < 500 ms** sur les opĂ©rations courantes. +- CapacitĂ© de test : **≈ 50 sessions simultanĂ©es**. +- CompatibilitĂ© navigateurs : Chrome, Edge, Firefox, Safari (versions N, N-1). +- AccessibilitĂ© : niveau **RGAA AA**. +- Agenda utilisable hors-ligne ; synchronisation sous 24 h. + +#### 8.5.3 DĂ©ploiement (instance communale) +- L’équipe **propose** la mĂ©thode de packaging (ex. Docker Compose, VM image, .deb) permettant une installation sur un serveur Linux municipal **en < 1 h**. +- Un **script “update / rollback”** doit ĂȘtre livrĂ© (ou procĂ©dure Ă©quivalente). +- Un **pipeline CI/CD** minimal (tests + build image) est requis ; l’école fournit son dĂ©pĂŽt Git / runner. +- Les journaux applicatifs et les mĂ©triques doivent pouvoir ĂȘtre branchĂ©s sur l’outillage de supervision de la commune (format libre, Ă  documenter). + +#### 8.5.4 Mode faible connectivitĂ© +Service Worker : mise en cache des ressources critiques et file d’attente locale (≀ 24 h) pour l’agenda et la messagerie. + +#### 8.5.5 SĂ©curitĂ© technique +TLS 1.3, en-tĂȘte HSTS 12 mois, scan d’images conteneurs (CVE > 7 bloquantes), secrets via Vault ou fichier .env chiffrĂ©, rotation 90 j. + +# 9. AmĂ©liorations futures possibles + +Certaines fonctionnalitĂ©s ne sont pas prioritaires dans la premiĂšre version de P'titsPas, mais sont identifiĂ©es comme des Ă©volutions possibles Ă  forte valeur ajoutĂ©e pour les utilisateurs et les collectivitĂ©s. + +## 9.1 Modules activables + +Ces modules peuvent ĂȘtre activĂ©s ou non par les administrateurs, selon la politique de la mairie ou les ressources disponibles. + +### 9.1.1 Blog RPE + +- Le gestionnaire peut publier des actualitĂ©s dans un blog visible depuis le tableau de bord des parents et des assistantes maternelles. +- Il peut activer ou dĂ©sactiver les commentaires. +- Il peut aussi publier des sondages ou cibler certaines publications (parents uniquement, assistantes maternelles uniquement, ou tous). +- La mairie (via l’administrateur) peut Ă©galement publier dans ce flux. + +### 9.1.2 IA de reformulation + +- Un systĂšme d’intelligence artificielle peut proposer une reformulation des messages Ă©crits avant envoi. +- Utile pour clarifier un message contractuel ou technique. +- Le message IA est signalĂ© comme tel. +- Une API externe (ChatGPT, Claude, etc.) peut ĂȘtre configurĂ©e par l’administrateur. + +### 9.1.3 Connexion Pajemploi (API URSSAF) + +- Permettrait un envoi automatique des donnĂ©es vers Pajemploi. +- ⚠ Cette API nĂ©cessite une habilitation spĂ©cifique par l’URSSAF. +- Requiert un partenariat de confiance entre la collectivitĂ© et l’institution. + +### 9.1.4 Garde d’enfants “grands” + +- Permet Ă  une assistante maternelle d’accueillir des enfants scolarisĂ©s en pĂ©riscolaire. +- Requiert un agrĂ©ment spĂ©cifique, indiquĂ© dans le profil. +- Les parents peuvent dĂ©clarer un enfant comme scolarisĂ©. + +### 9.1.5 PrĂ©-remplissage des dossiers scolaires + +- À la fin d’un contrat, un rappel automatique peut ĂȘtre envoyĂ© aux parents sur les dates d’inscription Ă  l’école. +- PiĂšces jointes : formulaire d’inscription, prĂ©rempli avec les donnĂ©es de la fiche enfant. + +### 9.1.6 Dossier fratrie unique + +- Un seul dossier pour plusieurs enfants (fratrie simultanĂ©e). +- Par dĂ©faut, chaque enfant dispose actuellement de son propre dossier. +- Cette fonctionnalitĂ© regrouperait les dĂ©marches dans un flux unique. +- Contrats sĂ©parĂ©s, workflow mutualisĂ© + - Un seul **dossier de recherche** et de mise en relation couvre l’ensemble de la fratrie. + - Au moment de la gĂ©nĂ©ration, **un contrat distinct** est créé pour chaque enfant (obligations lĂ©gales inchangĂ©es), mais les Ă©tapes du workflow (recherche, rendez-vous, validation) ne sont effectuĂ©es qu’une fois. + - Les parents et l’assistante maternelle n’ont donc qu’une seule demande Ă  gĂ©rer, tandis que la plateforme conserve la granularitĂ© nĂ©cessaire pour la paie et les dĂ©clarations Pajemploi. + - Les Ă©crans doivent afficher un badge « Fratrie » permettant de basculer d’un contrat Ă  l’autre. + +#### 9.1.7 Signature Ă©lectronique des contrats +- IntĂ©gration d’un prestataire de signature qualifiĂ©e (eIDAS) pour rendre le processus 100 % dĂ©matĂ©rialisĂ©. +- BĂ©nĂ©fices : gain de temps, valeur probante renforcĂ©e, archivage automatisĂ©. +- ComplexitĂ© : coĂ»ts de licence, vĂ©rification d’identitĂ©, circuit API. + +#### 9.1.8 IntĂ©gration LDAP / SSO (agents municipaux) +- Connexion via annuaire LDAP ou fournisseur SAML 2. +- Les comptes parents / nounous restent sur le login interne. + +#### 9.1.9 Base de donnĂ©es externe PostgreSQL +- PossibilitĂ© de connecter l’application Ă  un cluster PostgreSQL dĂ©jĂ  gĂ©rĂ© par la DSI. +- Scripts d’initialisation et de migration fournis (Flyway/Liquibase). + +#### 9.1.10 Offre SaaS mutualisĂ©e +- HĂ©bergement centralisĂ© pour les communes sans infrastructure locale. +- Facturation Ă  l’usage ; supervision et sauvegardes opĂ©rĂ©es par l’éditeur. + +#### 9.1.11 Mise en conformitĂ© RGAA (niveau AA) +- Audit complet : contrastes, navigation clavier, rĂŽles ARIA. +- Correctifs design et tests utilisateurs. +- PrioritĂ© : **amĂ©lioration future**. + +#### 9.1.12 Centre d’aide / support utilisateur +- FAQ consultable + formulaire de ticket. +- Tableau de bord « Support » pour la mairie. +- PossibilitĂ© d’intĂ©grer un chatbot d’assistance. +- PrioritĂ© : **amĂ©lioration future**. + +## 9.2 StratĂ©gie d’activation + +- Chaque module peut ĂȘtre activĂ© depuis le tableau de bord administrateur +- Une section “Modules complĂ©mentaires” permet : + - De consulter les modules disponibles + - D’activer/dĂ©sactiver chaque fonctionnalitĂ© + - D’ajouter les API externes nĂ©cessaires (IA, URSSAF
) + +- Les modules activĂ©s sont ensuite visibles dans l’interface utilisateur concernĂ©e (parents, assistantes maternelles, gestionnaires). + +# 10. SynthĂšse finale + +P'titsPas est bien plus qu’un simple outil de gestion de la garde d’enfants. C’est une plateforme publique, inclusive et responsable, au service des familles, des assistantes maternelles et des collectivitĂ©s locales. + +## 10.1 Valeurs portĂ©es + +P'titsPas s’inscrit dans une dĂ©marche de service public, avec des fondements clairs : + +- **NeutralitĂ©** : pas de systĂšme de notation, pas de mise en concurrence biaisĂ©e. +- **ÉquitĂ©** : tous les utilisateurs bĂ©nĂ©ficient des mĂȘmes droits d’usage. +- **Transparence** : chaque processus est lisible, traçable, et validĂ© par les deux parties. +- **AccessibilitĂ©** : l’interface est pensĂ©e pour les tĂ©lĂ©phones comme pour les ordinateurs. + +## 10.2 BĂ©nĂ©fices pour les utilisateurs + +| Acteur | BĂ©nĂ©fices directs | +|-------------------------|---------------------------------------------------------------------------| +| **Parents** | SimplicitĂ© de recherche, centralisation des Ă©changes, aide Pajemploi | +| **Assistantes maternelles** | Gain de temps, traçabilitĂ© des contrats, autonomie de gestion | +| **Gestionnaires** | Suivi global des situations, outils de mĂ©diation, organisation d’évĂ©nements | +| **Administrateurs** | Supervision complĂšte, gouvernance multi-rĂŽle, contrĂŽle des donnĂ©es | + +## 10.3 PĂ©rimĂštre fonctionnel de la V1 + +FonctionnalitĂ©s incluses dĂšs la premiĂšre version : +- CrĂ©ation de comptes +- Recherche et sĂ©lection de nounous +- Suivi des dossiers +- GĂ©nĂ©ration de contrat et avenants +- Messagerie +- Gestion des Ă©vĂ©nements et agenda +- Aide Ă  la paie Pajemploi +- Gestion des heures supplĂ©mentaires +- Suivi RGPD et administration + +## 10.4 Perspectives + +La structure du produit permet une montĂ©e en charge progressive : +- Activation des modules complĂ©mentaires (blog, IA, API Pajemploi) +- Adaptation aux nouvelles attentes des mairies +- DĂ©ploiement intercommunal possible +- IntĂ©gration avec les portails citoyens des collectivitĂ©s + +P'titsPas incarne une nouvelle maniĂšre de soutenir les parcours de garde dans les territoires. C’est une application qui place **l’humain**, **la clartĂ©** et **le lien de confiance** au cƓur du service. + +## 10.5 PropriĂ©tĂ© intellectuelle et licence de l’application + +- Tout le code source, la marque « P'titsPas » et la documentation associĂ©e demeurent la **propriĂ©tĂ© exclusive de l’éditeur** (Julien). +- Les communes clientes reçoivent une **licence d’utilisation non exclusive, non transfĂ©rable** : + - droit d’installer et d’exĂ©cuter l’application dans leur infrastructure, + - droit d’effectuer les sauvegardes nĂ©cessaires Ă  l’exploitation, + - interdiction de distribuer, vendre ou mettre le code Ă  disposition de tiers sans accord Ă©crit. +- Le code source n’est pas publiĂ© sous une licence open-source ; il peut ĂȘtre remis **sous clause d’escrow** (tiers sĂ©questre) pour garantir la maintenance en cas de dĂ©faillance de l’éditeur. +- Les Ă©tudiants ou prestataires contribuant au projet cĂšdent leurs droits patrimoniaux Ă  l’éditeur via un accord de cession signĂ© avant livraison. +- Toute personnalisation rĂ©alisĂ©e pour une commune fait partie intĂ©grante du produit et est couverte par la licence ci-dessus, sauf stipulation contraire. + +--- + +*Fin du document* + diff --git a/docs/README-ARCHITECTURE.md b/docs/02_ARCHITECTURE.md similarity index 100% rename from docs/README-ARCHITECTURE.md rename to docs/02_ARCHITECTURE.md diff --git a/docs/README-DEPLOYMENT.md b/docs/03_DEPLOYMENT.md similarity index 100% rename from docs/README-DEPLOYMENT.md rename to docs/03_DEPLOYMENT.md diff --git a/docs/DATABASE.md b/docs/10_DATABASE.md similarity index 100% rename from docs/DATABASE.md rename to docs/10_DATABASE.md diff --git a/docs/API.md b/docs/11_API.md similarity index 100% rename from docs/API.md rename to docs/11_API.md diff --git a/docs/20_WORKFLOW-CREATION-COMPTE.md b/docs/20_WORKFLOW-CREATION-COMPTE.md new file mode 100644 index 0000000..efe024f --- /dev/null +++ b/docs/20_WORKFLOW-CREATION-COMPTE.md @@ -0,0 +1,2288 @@ +# 📋 Documentation Technique - Workflow de CrĂ©ation de Compte + +**Version** : 1.0 +**Date** : 24 Novembre 2025 +**Auteur** : Équipe PtitsPas +**RĂ©fĂ©rence CDC** : Cahier des Charges P'titsPas V1.3 + +--- + +## 📖 Table des matiĂšres + +1. [Vue d'ensemble](#vue-densemble) +2. [Acteurs](#acteurs) +3. [Workflow dĂ©taillĂ©](#workflow-dĂ©taillĂ©) +4. [Diagrammes de sĂ©quence](#diagrammes-de-sĂ©quence) +5. [SpĂ©cifications techniques](#spĂ©cifications-techniques) +6. [APIs utilisĂ©es](#apis-utilisĂ©es) +7. [ModĂšles de donnĂ©es](#modĂšles-de-donnĂ©es) +8. [Templates d'emails](#templates-demails) +9. [Tests et validation](#tests-et-validation) + +--- + +## 🎯 Vue d'ensemble + +### Objectif + +ImplĂ©menter le workflow complet de crĂ©ation et validation des comptes utilisateurs pour l'application P'titsPas, permettant : +- La crĂ©ation de gestionnaires par le super administrateur +- L'inscription autonome des parents et assistantes maternelles +- La validation des comptes par les gestionnaires +- La notification par email des dĂ©cisions + +### PĂ©rimĂštre fonctionnel + +Ce workflow couvre la **Phase 1** du projet, correspondant au premier use case critique : +> "Permettre au super admin de crĂ©er des gestionnaires, qui pourront ensuite valider les inscriptions des parents et assistantes maternelles." + +### RĂ©fĂ©rence CDC + +**Section 3.1** : Gestion des utilisateurs +**Section 3.2** : Processus de validation +**Section 4.5** : Notifications email + +--- + +## đŸ‘„ Acteurs + +### 1. Super Administrateur (`super_admin`) + +**RĂŽle** : Administrateur systĂšme avec tous les droits +**Identifiants initiaux** : +- Email : `admin@ptits-pas.fr` +- Mot de passe : `4dm1n1strateur` + +**ResponsabilitĂ©s** : +- CrĂ©er les comptes gestionnaires +- AccĂ©der au panneau d'administration +- GĂ©rer la configuration systĂšme + +**RĂ©fĂ©rence** : Table `utilisateurs` avec `role = 'super_admin'` et `statut = 'actif'` + +--- + +### 2. Gestionnaire (`gestionnaire`) + +**RĂŽle** : Validateur des inscriptions +**CrĂ©ation** : Par le super administrateur uniquement + +**ResponsabilitĂ©s** : +- Consulter les demandes d'inscription en attente +- Valider ou refuser les comptes parents +- Valider ou refuser les comptes assistantes maternelles +- Consulter les informations des demandeurs + +**RĂ©fĂ©rence** : Table `utilisateurs` avec `role = 'gestionnaire'` et `statut = 'actif'` + +--- + +### 3. Parent (`parent`) + +**RĂŽle** : Utilisateur final cherchant une assistante maternelle +**CrĂ©ation** : Inscription autonome via formulaire public + +**Workflow** : +1. S'inscrit via le formulaire public +2. Statut initial : `en_attente` +3. Attend la validation d'un gestionnaire +4. Reçoit un email de notification (validĂ©/refusĂ©) +5. Si validĂ© : peut se connecter et accĂ©der Ă  l'application + +**RĂ©fĂ©rence** : +- Table `utilisateurs` avec `role = 'parent'` +- Table `parents` (relation 1:1 avec `utilisateurs`) + +--- + +### 4. Assistante Maternelle (`assistante_maternelle`) + +**RĂŽle** : Professionnelle proposant ses services de garde +**CrĂ©ation** : Inscription autonome via formulaire public + +**Workflow** : Identique aux parents +1. S'inscrit via le formulaire public +2. Statut initial : `en_attente` +3. Attend la validation d'un gestionnaire +4. Reçoit un email de notification (validĂ©/refusĂ©) +5. Si validĂ©e : peut se connecter et accĂ©der Ă  l'application + +**RĂ©fĂ©rence** : +- Table `utilisateurs` avec `role = 'assistante_maternelle'` +- Table `assistantes_maternelles` (relation 1:1 avec `utilisateurs`) + +--- + +## ⚠ Points d'attention - ConformitĂ© CDC + +Avant de dĂ©tailler le workflow, voici les points critiques pour assurer la conformitĂ© avec le Cahier des Charges : + +### Inscription Parent (CDC 3.1) +- ✅ **6 Ă©tapes obligatoires** : Parent 1, Parent 2 (opt), Enfant, PrĂ©sentation, CGU, RĂ©capitulatif +- ✅ **Photo obligatoire** si enfant dĂ©jĂ  nĂ© +- ✅ **Acceptation CGU** avec horodatage +- ✅ **Notification** : Email **OU** SMS aprĂšs validation + +### Inscription Assistante Maternelle (CDC 3.2) +- ✅ **NIR obligatoire** (NumĂ©ro de SĂ©curitĂ© sociale - 15 chiffres) +- ✅ **Photo obligatoire** (si option activĂ©e) +- ✅ **Consentement photo** avec horodatage (RGPD) +- ✅ **Date et lieu de naissance** obligatoires +- ✅ **Acceptation CGU** avec horodatage +- ✅ **Notification** : Email **OU** SMS aprĂšs validation + +### CrĂ©ation Gestionnaire (CDC 3.3) +- ✅ **Changement de mot de passe obligatoire** Ă  la premiĂšre connexion +- ✅ Créé par un administrateur uniquement + +### CrĂ©ation Administrateur (CDC 3.4) +- ✅ **Changement de mot de passe obligatoire** Ă  la premiĂšre connexion +- ✅ Créé par un administrateur existant uniquement + +### Champs Base de DonnĂ©es Manquants +Les champs suivants doivent ĂȘtre ajoutĂ©s Ă  la base de donnĂ©es : +- `nir_chiffre` (assistantes_maternelles) - **OBLIGATOIRE** +- `ville_naissance` (utilisateurs) +- `pays_naissance` (utilisateurs) +- `date_acceptation_cgu` (utilisateurs) +- `presentation_dossier` (parents ou table dĂ©diĂ©e) +- `date_consentement_photo` (utilisateurs) - **Existe dĂ©jĂ ** ✅ + +--- + +## 🔄 Workflow dĂ©taillĂ© + +### Étape 1 : Initialisation du systĂšme + +**PrĂ©requis** : Base de donnĂ©es initialisĂ©e avec le super admin + +```sql +-- Seed initial (01_init.sql) +INSERT INTO utilisateurs (email, password, prenom, nom, role, statut) +VALUES ( + 'admin@ptits-pas.fr', + '$2b$12$Fo5ly1YlTj3O6lXf.IUgoeUqEebBGpmoM5zLbzZx.CueorSE7z2E2', -- Hash de "4dm1n1strateur" + 'Admin', + 'SystĂšme', + 'super_admin', + 'actif' +); +``` + +**État** : ✅ ImplĂ©mentĂ© + +--- + +### Étape 2 : CrĂ©ation d'un gestionnaire + +**Acteur** : Super Administrateur +**Interface** : Panneau d'administration - Section "CrĂ©er un gestionnaire" + +#### 2.1 Interface utilisateur + +**Écran** : Formulaire ultra-simple avec les champs suivants : + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| Nom | Text | 2-100 caractĂšres | ✅ | +| PrĂ©nom | Text | 2-100 caractĂšres | ✅ | +| Email | Email | Format email valide | ✅ | +| Mot de passe | Password | Min 8 caractĂšres, 1 majuscule, 1 chiffre | ✅ | + +**Bouton** : "Soumettre" + +**Wireframe** : +``` +┌─────────────────────────────────────────┐ +│ CrĂ©er un Gestionnaire │ +├────────────────────────────────────────── +│ │ +│ Nom : [________________] │ +│ │ +│ PrĂ©nom : [________________] │ +│ │ +│ Email : [________________] │ +│ (personnel ou collectivitĂ©)│ +│ │ +│ Mot de passe : [________________] │ +│ │ +│ [ Soumettre ] │ +│ │ +└─────────────────────────────────────────┘ +``` + +#### 2.2 Flux technique + +**Frontend → Backend** + +```typescript +// Frontend (Flutter) +POST /api/v1/gestionnaires +Headers: { + Authorization: Bearer + Content-Type: application/json +} +Body: { + "email": "lucas.moreau@ptits-pas.fr", + "password": "password", + "prenom": "Lucas", + "nom": "MOREAU", + "telephone": "06 87 23 45 67" +} +``` + +**Backend → Database** + +```typescript +// Backend (NestJS) +// 1. Validation du token (AuthGuard) +// 2. VĂ©rification du rĂŽle (RolesGuard - super_admin uniquement) +// 3. Validation des donnĂ©es (DTO) +// 4. Hash du mot de passe (bcrypt, 12 rounds) +// 5. CrĂ©ation de l'utilisateur + +INSERT INTO utilisateurs ( + email, password, prenom, nom, telephone, role, statut, + changement_mdp_obligatoire, cree_le +) VALUES ( + 'lucas.moreau@ptits-pas.fr', + '$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5iIdYvYvOYvOy', -- Hash bcrypt de "password" + 'Lucas', + 'MOREAU', + '06 87 23 45 67', + 'gestionnaire', + 'actif', -- Statut actif immĂ©diatement + TRUE, -- Changement de mot de passe obligatoire Ă  la premiĂšre connexion (CDC 3.3) + NOW() +); +``` + +**RĂ©ponse** + +```json +{ + "id": "uuid-lucas-moreau", + "email": "lucas.moreau@ptits-pas.fr", + "prenom": "Lucas", + "nom": "MOREAU", + "telephone": "06 87 23 45 67", + "role": "gestionnaire", + "statut": "actif", + "cree_le": "2025-11-24T10:30:00Z" +} +``` + +**État** : 🟠 Backend implĂ©mentĂ©, Frontend Ă  crĂ©er + +--- + +### Étape 3 : Inscription d'un parent + +**Acteur** : Parent (non authentifiĂ©) +**Interface** : Page publique d'inscription parent +**RĂ©fĂ©rence CDC** : Section 3.1 + +Le processus d'inscription parent se dĂ©roule en **6 Ă©tapes** conformĂ©ment au cahier des charges. + +#### 3.1 Étape 1 : Informations Parent 1 + +**Écran** : Formulaire d'identitĂ© du parent principal + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| Nom | Text | 2-100 caractĂšres | ✅ | +| PrĂ©nom | Text | 2-100 caractĂšres | ✅ | +| Adresse postale | Text | Adresse complĂšte | ✅ | +| Code postal | Text | 5 chiffres | ✅ | +| Ville | Text | 2-150 caractĂšres | ✅ | +| TĂ©lĂ©phone | Tel | Format français | ✅ | +| Email | Email | Format email valide | ✅ | + +**Note importante** : Le Parent 1 ne dĂ©finit **pas** de mot de passe lors de l'inscription. Il recevra un email avec un lien pour crĂ©er son mot de passe aprĂšs validation du gestionnaire. + +**Bouton** : "Suivant" + +--- + +#### 3.2 Étape 2 : Informations Parent 2 (facultatif) + +**Écran** : Ajout d'un co-parent (optionnel) + +**Question** : "Souhaitez-vous ajouter un second parent ?" +- ⭕ Oui +- ⭕ Non + +**Si Oui** : + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| Nom | Text | 2-100 caractĂšres | ✅ | +| PrĂ©nom | Text | 2-100 caractĂšres | ✅ | +| Email | Email | Format email valide | ✅ | +| TĂ©lĂ©phone | Tel | Format français | ✅ | +| MĂȘme adresse que Parent 1 | Checkbox | - | - | + +**Si "MĂȘme adresse" non cochĂ©** : Afficher les champs adresse, code postal, ville + +**Note importante** : Le Parent 2 ne dĂ©finit **pas** de mot de passe lors de l'inscription. Il recevra un email avec un lien pour crĂ©er son mot de passe aprĂšs validation du gestionnaire. Cette approche est particuliĂšrement adaptĂ©e aux situations de parents sĂ©parĂ©s ou divorcĂ©s oĂč la communication peut ĂȘtre difficile. + +**Bouton** : "Suivant" + +--- + +#### 3.3 Étape 3 : Informations sur l'enfant + +**Écran** : Fiche enfant + +**Question** : "L'enfant est-il dĂ©jĂ  nĂ© ?" +- ⭕ Oui → Afficher "Date de naissance" +- ⭕ Non → Afficher "Date prĂ©visionnelle de naissance" + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| PrĂ©nom | Text | 2-100 caractĂšres | ❌ (si Ă  naĂźtre) | +| Nom | Text | HĂ©ritĂ© des parents | Auto | +| Date de naissance | Date | Format JJ/MM/AAAA | ✅ (si nĂ©) | +| Date prĂ©visionnelle | Date | Format JJ/MM/AAAA | ✅ (si Ă  naĂźtre) | +| Genre | Select | H / F | ✅ | +| Photo | File | Image (JPEG/PNG), max 5MB | ✅ (si nĂ©) | +| Grossesse multiple | Checkbox | Jumeaux, triplĂ©s, etc. | ❌ | + +**Bouton** : "Ajouter un autre enfant" (optionnel) +**Bouton** : "Suivant" + +**Note** : Rattachement automatique aux deux parents si Parent 2 renseignĂ©. + +--- + +#### 3.4 Étape 4 : PrĂ©sentation du dossier + +**Écran** : Zone de texte libre + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| PrĂ©sentation | Textarea | Max 2000 caractĂšres | ⚙ Configurable | + +**Exemple de texte d'aide** : +> "DĂ©crivez votre situation familiale, vos besoins de garde, vos contraintes horaires, etc. Cette prĂ©sentation sera visible par les assistantes maternelles et le gestionnaire." + +**Bouton** : "Suivant" + +--- + +#### 3.5 Étape 5 : Acceptation des CGU + +**Écran** : Conditions GĂ©nĂ©rales d'Utilisation + +| ÉlĂ©ment | Type | Obligatoire | +|---------|------|-------------| +| CGU | Checkbox | ✅ | + +**Texte** : +☐ J'ai lu et j'accepte les [Conditions GĂ©nĂ©rales d'Utilisation](./cgu.pdf) et la [Politique de confidentialitĂ©](./privacy.pdf) + +**Comportement** : +- Les liens ouvrent les documents PDF dans un nouvel onglet +- Le refus bloque la crĂ©ation de compte +- La date d'acceptation est enregistrĂ©e en base + +**Bouton** : "Suivant" + +--- + +#### 3.6 Étape 6 : RĂ©capitulatif et validation + +**Écran** : RĂ©sumĂ© de toutes les informations saisies + +**Sections affichĂ©es** : +1. **Parent 1** : Nom, prĂ©nom, email, tĂ©lĂ©phone, adresse +2. **Parent 2** (si renseignĂ©) : Nom, prĂ©nom, email, tĂ©lĂ©phone +3. **Enfant(s)** : PrĂ©nom, date de naissance/prĂ©visionnelle, photo +4. **PrĂ©sentation** : Extrait du texte (100 premiers caractĂšres) + +**Boutons** : +- "Modifier" (retour aux Ă©tapes prĂ©cĂ©dentes) +- "Valider et envoyer ma demande" + +**Message de confirmation** : +> "Votre demande d'inscription a Ă©tĂ© envoyĂ©e. Elle sera examinĂ©e par un gestionnaire. Vous recevrez un email ou un SMS une fois votre compte validĂ©." + +**Bouton** : "Terminer" + +#### 3.2 Flux technique + +**Frontend → Backend** + +```typescript +// Frontend (Flutter) - Route publique +// Exemple : Claire MARTIN (parent avec triplĂ©s) +// Note : Pas de mot de passe lors de l'inscription +POST /api/v1/auth/register +Headers: { + Content-Type: application/json +} +Body: { + "email": "claire.martin@ptits-pas.fr", + "prenom": "Claire", + "nom": "MARTIN", + "telephone": "06 89 56 78 90", + "role": "parent" +} +``` + +**Backend → Database** + +```typescript +// Backend (NestJS) +// 1. Validation des donnĂ©es (DTO) +// 2. VĂ©rification que l'email n'existe pas dĂ©jĂ  +// 3. GĂ©nĂ©ration d'un token de crĂ©ation de mot de passe (UUID) +// 4. Transaction : CrĂ©er utilisateur + entitĂ© mĂ©tier + +BEGIN TRANSACTION; + +-- CrĂ©ation de l'utilisateur (sans mot de passe) +INSERT INTO utilisateurs ( + email, password, prenom, nom, telephone, role, statut, + adresse, code_postal, ville, profession, situation_familiale, date_naissance, + password_reset_token, password_reset_expires, cree_le +) VALUES ( + 'claire.martin@ptits-pas.fr', + NULL, -- Pas de mot de passe lors de l'inscription + 'Claire', + 'MARTIN', + '06 89 56 78 90', + 'parent', + 'en_attente', -- Statut en attente de validation + '5 Avenue du GĂ©nĂ©ral de Gaulle', + '95870', + 'Bezons', + 'InfirmiĂšre', + 'MariĂ©e', + '1990-04-03', + gen_random_uuid(), -- Token de crĂ©ation de mot de passe + NOW() + INTERVAL '7 days', -- Expiration du token (7 jours) + NOW() +) RETURNING id; + +-- CrĂ©ation de l'entitĂ© mĂ©tier parent +-- Note : id_co_parent sera renseignĂ© plus tard si Thomas MARTIN s'inscrit +INSERT INTO parents (id_utilisateur, id_co_parent) +VALUES ('uuid-claire-martin', NULL); + +COMMIT; +``` + +**RĂ©ponse** + +```json +{ + "message": "Inscription rĂ©ussie. Votre compte est en attente de validation par un gestionnaire. Vous recevrez un email une fois votre compte validĂ©.", + "userId": "uuid-claire-martin" +} +``` + +**État** : 🔮 À implĂ©menter complĂštement selon CDC + +--- + +### Étape 3bis : Inscription d'une assistante maternelle + +**Acteur** : Assistante Maternelle (non authentifiĂ©e) +**Interface** : Page publique d'inscription assistante maternelle +**RĂ©fĂ©rence CDC** : Section 3.2 + +Le processus d'inscription assistante maternelle se dĂ©roule en **5 Ă©tapes** avec 2 panneaux principaux. + +#### 3bis.1 Panneau 1 : Informations d'identitĂ© + +**Écran** : Formulaire d'identitĂ© + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| Nom | Text | 2-100 caractĂšres | ✅ | +| PrĂ©nom | Text | 2-100 caractĂšres | ✅ | +| Adresse postale | Text | Adresse complĂšte | ✅ | +| Code postal | Text | 5 chiffres | ✅ | +| Ville | Text | 2-150 caractĂšres | ✅ | +| TĂ©lĂ©phone | Tel | Format français | ✅ | +| Email | Email | Format email valide | ✅ | +| Photo de profil | File | Image (JPEG/PNG), max 5MB | ⚙ Configurable | + +**Consentement photo** (si photo uploadĂ©e) : + +☐ J'autorise le stockage et l'affichage de ma photo sur la plateforme (RGPD) + +**Note importante** : L'assistante maternelle ne dĂ©finit **pas** de mot de passe lors de l'inscription. Elle recevra un email avec un lien pour crĂ©er son mot de passe aprĂšs validation du gestionnaire. + +**Note** : La date du consentement est enregistrĂ©e automatiquement. + +**Bouton** : "Suivant" + +--- + +#### 3bis.2 Panneau 2 : Informations professionnelles + +**Écran** : Informations professionnelles + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| Date de naissance | Date | Format JJ/MM/AAAA | ✅ | +| Ville de naissance | Text | 2-150 caractĂšres | ✅ | +| Pays de naissance | Select | Liste des pays | ✅ | +| NumĂ©ro de SĂ©curitĂ© sociale (NIR) | Text | 15 chiffres | ✅ | +| NumĂ©ro d'agrĂ©ment | Text | Format libre | ✅ | +| Date d'obtention de l'agrĂ©ment | Date | Format JJ/MM/AAAA | ✅ | +| Nombre d'enfants pouvant ĂȘtre accueillis | Number | 1-6 | ✅ | + +**Note importante affichĂ©e** : +> ⚠ Le numĂ©ro de SĂ©curitĂ© sociale (NIR) est saisi en clair et utilisĂ© uniquement pour la gĂ©nĂ©ration automatique du contrat. Il est stockĂ© de maniĂšre sĂ©curisĂ©e et conforme au RGPD. + +**Bouton** : "Suivant" + +--- + +#### 3bis.3 PrĂ©sentation + +**Écran** : Message au gestionnaire + +| Champ | Type | Validation | Obligatoire | +|-------|------|------------|-------------| +| PrĂ©sentation | Textarea | Max 2000 caractĂšres | ❌ | + +**Exemple de texte d'aide** : +> "PrĂ©sentez-vous et expliquez votre dĂ©marche. Vous pouvez ajouter des prĂ©cisions sur votre expĂ©rience, votre mĂ©thode pĂ©dagogique, vos disponibilitĂ©s, etc." + +**Bouton** : "Suivant" + +--- + +#### 3bis.4 Acceptation des CGU + +**Écran** : Conditions GĂ©nĂ©rales d'Utilisation + +| ÉlĂ©ment | Type | Obligatoire | +|---------|------|-------------| +| CGU | Checkbox | ✅ | + +**Texte** : +☐ J'ai lu et j'accepte les [Conditions GĂ©nĂ©rales d'Utilisation](./cgu.pdf) et la [Politique de confidentialitĂ©](./privacy.pdf) + +**Comportement** : +- Les liens ouvrent les documents PDF dans un nouvel onglet +- Le refus bloque la crĂ©ation de compte +- La date d'acceptation est enregistrĂ©e en base + +**Bouton** : "Suivant" + +--- + +#### 3bis.5 RĂ©capitulatif et validation + +**Écran** : RĂ©sumĂ© de toutes les informations saisies + +**Sections affichĂ©es** : +1. **IdentitĂ©** : Nom, prĂ©nom, email, tĂ©lĂ©phone, adresse, photo +2. **Informations professionnelles** : + - Date de naissance, lieu de naissance + - NIR (masquĂ© : XXX XX XX XX XXX 123) + - NumĂ©ro d'agrĂ©ment + - CapacitĂ© d'accueil +3. **PrĂ©sentation** : Extrait du texte (100 premiers caractĂšres) + +**Boutons** : +- "Modifier" (retour aux Ă©tapes prĂ©cĂ©dentes) +- "Valider et envoyer ma demande" + +**Message de confirmation** : +> "Votre demande d'inscription a Ă©tĂ© envoyĂ©e. Elle sera examinĂ©e par un gestionnaire. Vous recevrez un email ou un SMS une fois votre compte validĂ©." + +**Bouton** : "Terminer" + +**État** : 🔮 À implĂ©menter complĂštement selon CDC + +--- + +### Étape 4 : Consultation des demandes par le gestionnaire + +**Acteur** : Gestionnaire +**Interface** : Dashboard gestionnaire avec 2 onglets + +#### 4.1 Interface utilisateur + +**Écran** : Dashboard avec navigation par onglets + +``` +┌─────────────────────────────────────────────────────────┐ +│ Dashboard Gestionnaire │ +├────────────────────────────────────────────────────────── +│ [ Parents ] [ Assistantes Maternelles ] │ +├────────────────────────────────────────────────────────── +│ │ +│ 📋 Demandes en attente (3) │ +│ │ +│ ┌─────────────────────────────────────────────────┐ │ +│ │ đŸ‘€ Jean MARTIN │ │ +│ │ 📧 jean.martin@example.com │ │ +│ │ đŸ“± 06 01 02 03 04 │ │ +│ │ 📅 Inscrit le : 20/11/2025 │ │ +│ │ │ │ +│ │ [ ✅ Valider ] [ ❌ Refuser ] │ │ +│ └─────────────────────────────────────────────────┘ │ +│ │ +│ ┌─────────────────────────────────────────────────┐ │ +│ │ đŸ‘€ Sophie DURAND │ │ +│ │ ... │ │ +│ └─────────────────────────────────────────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────┘ +``` + +#### 4.2 Flux technique - Liste des parents + +**Frontend → Backend** + +```typescript +// Frontend (Flutter) +GET /api/v1/parents +Headers: { + Authorization: Bearer +} +Query params: { + statut: "en_attente" // Filtrer uniquement les comptes en attente +} +``` + +**Backend → Database** + +```sql +-- Backend (NestJS) +SELECT + u.id, + u.email, + u.prenom, + u.nom, + u.telephone, + u.statut, + u.cree_le, + p.id_co_parent +FROM utilisateurs u +LEFT JOIN parents p ON u.id = p.id_utilisateur +WHERE u.role = 'parent' + AND u.statut = 'en_attente' +ORDER BY u.cree_le DESC; +``` + +**RĂ©ponse** + +```json +[ + { + "id": "uuid-claire-martin", + "email": "claire.martin@ptits-pas.fr", + "prenom": "Claire", + "nom": "MARTIN", + "telephone": "06 89 56 78 90", + "ville": "Bezons", + "profession": "InfirmiĂšre", + "situation_familiale": "MariĂ©e", + "statut": "en_attente", + "cree_le": "2025-11-20T14:30:00Z" + }, + { + "id": "uuid-david-lecomte", + "email": "david.lecomte@ptits-pas.fr", + "prenom": "David", + "nom": "LECOMTE", + "telephone": "06 45 56 67 78", + "ville": "Bezons", + "profession": "DĂ©veloppeur web", + "situation_familiale": "PĂšre cĂ©libataire", + "statut": "en_attente", + "cree_le": "2025-11-21T09:15:00Z" + } +] +``` + +#### 4.3 Flux technique - Liste des assistantes maternelles + +**Frontend → Backend** + +```typescript +// Frontend (Flutter) +GET /api/v1/assistantes-maternelles +Headers: { + Authorization: Bearer +} +Query params: { + statut: "en_attente" +} +``` + +**Backend → Database** + +```sql +-- Backend (NestJS) +SELECT + u.id, + u.email, + u.prenom, + u.nom, + u.telephone, + u.statut, + u.cree_le, + am.numero_agrement, + am.ville_residence +FROM utilisateurs u +LEFT JOIN assistantes_maternelles am ON u.id = am.id_utilisateur +WHERE u.role = 'assistante_maternelle' + AND u.statut = 'en_attente' +ORDER BY u.cree_le DESC; +``` + +**RĂ©ponse** + +```json +[ + { + "id": "uuid-marie-dubois", + "email": "marie.dubois@ptits-pas.fr", + "prenom": "Marie", + "nom": "DUBOIS", + "telephone": "06 96 34 56 78", + "ville": "Bezons", + "statut": "en_attente", + "cree_le": "2025-11-22T11:00:00Z", + "numero_agrement": null, + "ville_residence": "Bezons" + }, + { + "id": "uuid-fatima-elmansouri", + "email": "fatima.elmansouri@ptits-pas.fr", + "prenom": "Fatima", + "nom": "EL MANSOURI", + "telephone": "06 75 45 67 89", + "ville": "Bezons", + "statut": "en_attente", + "cree_le": "2025-11-22T15:30:00Z", + "numero_agrement": null, + "ville_residence": "Bezons" + } +] +``` + +**État** : 🟠 Backend implĂ©mentĂ©, Frontend Ă  connecter (actuellement en mock) + +--- + +### Étape 5 : Validation d'un compte + +**Acteur** : Gestionnaire +**Action** : Clic sur le bouton "Valider" + +#### 5.1 Flux technique - Validation + +**Frontend → Backend** + +```typescript +// Frontend (Flutter) +PATCH /api/v1/users/{userId}/valider +Headers: { + Authorization: Bearer + Content-Type: application/json +} +Body: { + "comment": "Dossier complet, compte validĂ©" // Optionnel +} +``` + +**Backend → Database** + +```sql +-- Backend (NestJS) +-- Exemple : Lucas MOREAU valide Marie DUBOIS +BEGIN TRANSACTION; + +-- Mise Ă  jour du statut utilisateur +UPDATE utilisateurs +SET statut = 'actif', + modifie_le = NOW() +WHERE id = 'uuid-marie-dubois'; + +-- Enregistrement de la validation +INSERT INTO validations ( + id_utilisateur, + type, + statut, + valide_par, + commentaire, + cree_le +) VALUES ( + 'uuid-marie-dubois', + 'validation_compte', + 'valide', + 'uuid-lucas-moreau', + 'AgrĂ©ment vĂ©rifiĂ© - Profil complet', + NOW() +); + +COMMIT; +``` + +**Backend → Service Email** + +```typescript +// Envoi du lien de crĂ©ation de mot de passe pour tous les utilisateurs (Parents et AM) +await this.mailService.sendPasswordCreationLink({ + to: user.email, + prenom: user.prenom, + nom: user.nom, + token: user.password_reset_token, + expiresAt: user.password_reset_expires, + role: user.role // 'parent' ou 'assistante_maternelle' +}); + +// Si Parent 2 existe, envoi du mĂȘme type d'email +if (user.role === 'parent' && parent2) { + await this.mailService.sendPasswordCreationLink({ + to: parent2.email, + prenom: parent2.prenom, + nom: parent2.nom, + token: parent2.password_reset_token, + expiresAt: parent2.password_reset_expires, + role: 'parent', + isCoParent: true // Indique qu'il s'agit du co-parent + }); +} +``` + +**RĂ©ponse** + +```json +{ + "message": "Compte validĂ© avec succĂšs", + "userId": "uuid-marie-dubois", + "emailSent": true +} +``` + +#### 5.2 Flux technique - Refus + +**Frontend → Backend** + +```typescript +// Frontend (Flutter) +PATCH /api/v1/users/{userId}/suspendre +Headers: { + Authorization: Bearer + Content-Type: application/json +} +Body: { + "comment": "Informations incomplĂštes" // Obligatoire pour un refus +} +``` + +**Backend → Database** + +```sql +-- Backend (NestJS) +-- Exemple : Lucas MOREAU refuse un compte (exemple fictif) +BEGIN TRANSACTION; + +-- Mise Ă  jour du statut utilisateur +UPDATE utilisateurs +SET statut = 'suspendu', + modifie_le = NOW() +WHERE id = 'uuid-utilisateur-refuse'; + +-- Enregistrement du refus +INSERT INTO validations ( + id_utilisateur, + type, + statut, + valide_par, + commentaire, + cree_le +) VALUES ( + 'uuid-utilisateur-refuse', + 'validation_compte', + 'refuse', + 'uuid-lucas-moreau', + 'Informations incomplĂštes - Documents manquants', + NOW() +); + +COMMIT; +``` + +**Backend → Service Email** + +```typescript +// Envoi de l'email de notification +await this.mailService.sendAccountRejected({ + to: user.email, + prenom: user.prenom, + nom: user.nom, + role: user.role, + reason: comment +}); +``` + +**RĂ©ponse** + +```json +{ + "message": "Compte refusĂ©", + "userId": "uuid-utilisateur-refuse", + "emailSent": true +} +``` + +**État** : 🔮 Backend partiellement implĂ©mentĂ© (manque envoi email), Frontend Ă  connecter + +--- + +### Étape 6 : RĂ©ception de la notification + +**Acteur** : Parent ou Assistante Maternelle +**Canal** : Email **OU** SMS (conformĂ©ment au CDC 3.1.6 et 3.2.5) + +**Note** : Le choix du canal de notification (email/SMS) peut ĂȘtre : +- ConfigurĂ© par l'administrateur (paramĂštre global) +- Choisi par l'utilisateur lors de l'inscription +- Les deux en parallĂšle pour plus de fiabilitĂ© + +#### 6.1 Email de validation - Parents (avec crĂ©ation de mot de passe) + +**ExpĂ©diteur** : `no-reply@ptits-pas.fr` +**Destinataire** : Email du parent +**Objet** : `Votre compte P'titsPas a Ă©tĂ© validĂ© - CrĂ©ez votre mot de passe ✅` + +**Template Parent 1** : + +```html + + + + + + + +
+
+

✅ Compte validĂ©

+
+
+

Bonjour {{prenom}} {{nom}},

+ +

Bonne nouvelle ! Votre compte P'titsPas a été validé par notre équipe.

+ +

Pour finaliser votre inscription et accéder à votre espace parent, veuillez créer votre mot de passe en cliquant sur le bouton ci-dessous :

+ +

+ Créer mon mot de passe +

+ +
+ ⏰ Attention : Ce lien est valable pendant 7 jours (jusqu'au {{expires_date}}). +
+ +

Votre identifiant : {{email}}

+ +

Si vous avez des questions, n'hésitez pas à nous contacter à contact@ptits-pas.fr.

+ +

À trùs bientît sur P'titsPas !

+ +

L'équipe P'titsPas

+
+ +
+ + +``` + +**Template Parent 2 (Co-parent)** : + +```html + + + + + + + +
+
+

✅ Bienvenue sur P'titsPas

+
+
+

Bonjour {{prenom}} {{nom}},

+ +

Votre co-parent vous a ajouté sur la plateforme P'titsPas et votre compte a été validé par notre équipe.

+ +

Pour accéder à votre espace parent et consulter les informations de vos enfants, veuillez créer votre mot de passe en cliquant sur le bouton ci-dessous :

+ +

+ Créer mon mot de passe +

+ +
+ ⏰ Attention : Ce lien est valable pendant 7 jours (jusqu'au {{expires_date}}). +
+ +

Votre identifiant : {{email}}

+ +

Si vous avez des questions ou si vous n'ĂȘtes pas Ă  l'origine de cette inscription, contactez-nous Ă  contact@ptits-pas.fr.

+ +

À trùs bientît sur P'titsPas !

+ +

L'équipe P'titsPas

+
+ +
+ + +``` + +#### 6.2 Email de validation - Assistantes Maternelles (avec crĂ©ation de mot de passe) + +**ExpĂ©diteur** : `no-reply@ptits-pas.fr` +**Destinataire** : Email de l'assistante maternelle +**Objet** : `Votre compte P'titsPas a Ă©tĂ© validĂ© - CrĂ©ez votre mot de passe ✅` + +**Template** : + +```html + + + + + + + +
+
+

✅ Compte validĂ©

+
+
+

Bonjour {{prenom}} {{nom}},

+ +

Bonne nouvelle ! Votre compte P'titsPas a été validé par notre équipe.

+ +

Pour finaliser votre inscription et accéder à votre espace assistante maternelle, veuillez créer votre mot de passe en cliquant sur le bouton ci-dessous :

+ +

+ Créer mon mot de passe +

+ +
+ ⏰ Attention : Ce lien est valable pendant 7 jours (jusqu'au {{expires_date}}). +
+ +

Votre identifiant : {{email}}

+ +

Si vous avez des questions, n'hésitez pas à nous contacter à contact@ptits-pas.fr.

+ +

À trùs bientît sur P'titsPas !

+ +

L'équipe P'titsPas

+
+ +
+ + +``` + +#### 6.3 Email de refus + +**Expéditeur** : `no-reply@ptits-pas.fr` +**Destinataire** : Email de l'utilisateur +**Objet** : `Votre demande d'inscription P'titsPas` + +**Template** : + +```html + + + + + + + +
+
+

Votre demande d'inscription

+
+
+

Bonjour {{prenom}} {{nom}},

+ +

Nous avons bien reçu votre demande d'inscription sur P'titsPas.

+ +

Malheureusement, nous ne pouvons pas valider votre compte pour le moment.

+ +

Motif : {{reason}}

+ +

Si vous pensez qu'il s'agit d'une erreur ou si vous souhaitez plus d'informations, n'hésitez pas à nous contacter à contact@ptits-pas.fr.

+ +

Cordialement,

+ +

L'équipe P'titsPas

+
+ +
+ + +``` + +**État** : 🔮 À implĂ©menter + +--- + +#### 6.3 SMS de validation (optionnel) + +**ExpĂ©diteur** : P'titsPas (nom court configurable) +**Destinataire** : NumĂ©ro de tĂ©lĂ©phone de l'utilisateur + +**Template SMS** : + +``` +P'titsPas : Votre compte a Ă©tĂ© validĂ© ! CrĂ©ez votre mot de passe : https://app.ptits-pas.fr/create-password?token={{token}} (valable 7 jours) +``` + +**Contraintes** : +- Maximum 160 caractĂšres (SMS standard) +- Lien court pour l'URL +- Message clair et concis + +--- + +#### 6.4 SMS de refus (optionnel) + +**ExpĂ©diteur** : P'titsPas +**Destinataire** : NumĂ©ro de tĂ©lĂ©phone de l'utilisateur + +**Template SMS** : + +``` +P'titsPas : Votre demande d'inscription n'a pas pu ĂȘtre validĂ©e. Motif : {{reason_court}}. Contactez-nous : contact@ptits-pas.fr +``` + +**Contraintes** : +- Maximum 160 caractĂšres +- Motif abrĂ©gĂ© si nĂ©cessaire +- Contact pour plus d'informations + +**État** : 🔮 À implĂ©menter (Service SMS Ă  configurer : Twilio, OVH, etc.) + +--- + +### Étape 7 : CrĂ©ation du mot de passe + +**Acteur** : Parent (Parent 1 ou Parent 2) ou Assistante Maternelle +**Interface** : Page de crĂ©ation de mot de passe (lien reçu par email) + +#### 7.1 Flux technique + +**Frontend → Backend** + +```typescript +// Frontend (Flutter/Web) +// L'utilisateur clique sur le lien reçu par email +// URL : https://app.ptits-pas.fr/create-password?token= + +GET /api/v1/auth/verify-token?token= +// VĂ©rification que le token est valide et non expirĂ© + +// Si valide, affichage du formulaire de crĂ©ation de mot de passe +POST /api/v1/auth/create-password +Headers: { + Content-Type: application/json +} +Body: { + "token": "", + "password": "NouveauMotDePasse123!", + "password_confirmation": "NouveauMotDePasse123!" +} +``` + +**Backend → Database** + +```typescript +// Backend (NestJS) +// 1. VĂ©rification du token (existe, non expirĂ©, non utilisĂ©) +// 2. Validation du mot de passe (min 8 caractĂšres, 1 majuscule, 1 chiffre) +// 3. Hash du mot de passe (bcrypt, 12 rounds) +// 4. Mise Ă  jour de l'utilisateur + +UPDATE utilisateurs +SET password = '$2b$12$...', -- Hash bcrypt du nouveau mot de passe + password_reset_token = NULL, -- Suppression du token + password_reset_expires = NULL, + statut = 'actif', -- Activation du compte + modifie_le = NOW() +WHERE password_reset_token = '' + AND password_reset_expires > NOW() + AND password IS NULL; -- SĂ©curitĂ© : uniquement si pas de mot de passe existant +``` + +**RĂ©ponse** + +```json +{ + "message": "Mot de passe créé avec succĂšs. Vous pouvez maintenant vous connecter.", + "userId": "uuid-claire-martin" +} +``` + +**Frontend** : Redirection automatique vers la page de connexion avec un message de succĂšs. + +**État** : 🔮 À implĂ©menter (Frontend + Backend) + +--- + +### Étape 8 : Connexion de l'utilisateur validĂ© + +**Acteur** : Parent ou Assistante Maternelle (compte validĂ© et mot de passe dĂ©fini) +**Interface** : Page de connexion + +#### 7.1 Flux technique + +**Frontend → Backend** + +```typescript +// Frontend (Flutter) +// Exemple : Claire MARTIN se connecte aprĂšs validation +POST /api/v1/auth/login +Headers: { + Content-Type: application/json +} +Body: { + "email": "claire.martin@ptits-pas.fr", + "password": "Test1234!" +} +``` + +**Backend → Database** + +```sql +-- Backend (NestJS) +SELECT + id, email, password, prenom, nom, role, statut +FROM utilisateurs +WHERE email = 'jean.martin@example.com'; + +-- VĂ©rification : +-- 1. L'utilisateur existe +-- 2. Le mot de passe correspond (bcrypt.compare) +-- 3. Le statut est 'actif' (sinon erreur 403) +``` + +**RĂ©ponse - SuccĂšs** + +```json +{ + "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", + "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", + "user": { + "id": "uuid-claire-martin", + "email": "claire.martin@ptits-pas.fr", + "role": "parent", + "prenom": "Claire", + "nom": "MARTIN", + "statut": "actif" + } +} +``` + +**RĂ©ponse - Compte en attente** + +```json +{ + "statusCode": 403, + "message": "Votre compte est en attente de validation. Vous recevrez un email une fois votre compte validĂ©.", + "error": "Forbidden" +} +``` + +**RĂ©ponse - Compte refusĂ©** + +```json +{ + "statusCode": 403, + "message": "Votre compte a Ă©tĂ© refusĂ©. Contactez contact@ptits-pas.fr pour plus d'informations.", + "error": "Forbidden" +} +``` + +#### 7.2 Redirection aprĂšs connexion + +**Parent validĂ©** → Dashboard parent (page simple : "Vous ĂȘtes connectĂ©") +**Assistante Maternelle validĂ©e** → Dashboard AM (page simple : "Vous ĂȘtes connectĂ©") + +**État** : ✅ Backend implĂ©mentĂ©, Frontend Ă  adapter + +--- + +## 📊 Diagrammes de sĂ©quence + +### Diagramme 1 : CrĂ©ation d'un gestionnaire + +```mermaid +sequenceDiagram + participant SA as Super Admin
(Frontend) + participant API as Backend API
(NestJS) + participant Auth as AuthGuard
+ RolesGuard + participant DB as PostgreSQL + + SA->>API: POST /gestionnaires
{nom, prenom, email, password} + API->>Auth: VĂ©rifier token JWT + Auth->>Auth: VĂ©rifier role = super_admin + Auth-->>API: ✅ AutorisĂ© + + API->>API: Valider DTO (CreateGestionnaireDto) + API->>API: Hash password (bcrypt, 12 rounds) + + API->>DB: INSERT INTO utilisateurs
(role='gestionnaire', statut='actif') + DB-->>API: ✅ Utilisateur créé (id, email, ...) + + API-->>SA: 201 Created
{id, email, prenom, nom, role} + + SA->>SA: Afficher message de succĂšs +``` + +--- + +### Diagramme 2 : Inscription d'un parent + +```mermaid +sequenceDiagram + participant P as Parent
(Frontend) + participant API as Backend API
(NestJS) + participant DB as PostgreSQL + + P->>API: POST /auth/register
{email, password, prenom, nom, role='parent'} + + API->>API: Valider DTO (RegisterDto) + + API->>DB: SELECT * FROM utilisateurs
WHERE email = ? + DB-->>API: ❌ Aucun rĂ©sultat + + API->>API: Hash password (bcrypt, 12 rounds) + + API->>DB: BEGIN TRANSACTION + + API->>DB: INSERT INTO utilisateurs
(role='parent', statut='en_attente') + DB-->>API: ✅ id_utilisateur + + API->>DB: INSERT INTO parents
(id_utilisateur) + DB-->>API: ✅ Parent créé + + API->>DB: COMMIT + + API-->>P: 201 Created
{message, userId} + + P->>P: Afficher message:
"Inscription réussie.
Votre compte est en attente
de validation." +``` + +--- + +### Diagramme 3 : Validation d'un compte par le gestionnaire + +```mermaid +sequenceDiagram + participant G as Gestionnaire
(Frontend) + participant API as Backend API
(NestJS) + participant Auth as AuthGuard
+ RolesGuard + participant DB as PostgreSQL + participant Mail as Service Email
(Nodemailer) + participant SMTP as Serveur SMTP
(mail.ptits-pas.fr) + participant U as Utilisateur
(Email) + + G->>API: GET /parents?statut=en_attente + API->>Auth: VĂ©rifier token + role gestionnaire + Auth-->>API: ✅ AutorisĂ© + API->>DB: SELECT * FROM utilisateurs
WHERE role='parent' AND statut='en_attente' + DB-->>API: Liste des parents en attente + API-->>G: 200 OK
[{id, email, prenom, nom, ...}] + + G->>G: Afficher liste + G->>G: Clic sur "Valider" + + G->>API: PATCH /users/{id}/valider
{comment: "Dossier complet"} + API->>Auth: VĂ©rifier token + role gestionnaire + Auth-->>API: ✅ AutorisĂ© + + API->>DB: BEGIN TRANSACTION + API->>DB: UPDATE utilisateurs
SET statut='actif'
WHERE id=? + DB-->>API: ✅ 1 row updated + + API->>DB: INSERT INTO validations
(type, statut, valide_par, ...) + DB-->>API: ✅ Validation enregistrĂ©e + + API->>DB: COMMIT + + API->>Mail: sendAccountValidated(user) + Mail->>Mail: GĂ©nĂ©rer HTML depuis template + Mail->>SMTP: SMTP SEND
From: no-reply@ptits-pas.fr
To: user.email
Subject: Compte validĂ© + SMTP->>U: 📧 Email de validation + SMTP-->>Mail: ✅ Email envoyĂ© + Mail-->>API: ✅ emailSent: true + + API-->>G: 200 OK
{message, userId, emailSent} + + G->>G: Retirer l'utilisateur de la liste
Afficher notification de succĂšs + + U->>U: 📧 Reçoit l'email + U->>U: Clic sur "Se connecter" +``` + +--- + +### Diagramme 4 : Connexion d'un utilisateur validĂ© + +```mermaid +sequenceDiagram + participant U as Utilisateur
(Frontend) + participant API as Backend API
(NestJS) + participant DB as PostgreSQL + + U->>API: POST /auth/login
{email, password} + + API->>DB: SELECT * FROM utilisateurs
WHERE email = ? + DB-->>API: Utilisateur trouvĂ© + + API->>API: bcrypt.compare(password, hash) + API->>API: ✅ Mot de passe correct + + API->>API: VĂ©rifier statut + + alt Statut = 'actif' + API->>API: GĂ©nĂ©rer JWT
(access_token + refresh_token) + API-->>U: 200 OK
{access_token, refresh_token, user} + U->>U: Stocker tokens + U->>U: Redirection vers dashboard + else Statut = 'en_attente' + API-->>U: 403 Forbidden
"Compte en attente de validation" + U->>U: Afficher message d'attente + else Statut = 'suspendu' + API-->>U: 403 Forbidden
"Compte refusĂ©" + U->>U: Afficher message + contact + end +``` + +--- + +## 🔧 SpĂ©cifications techniques + +### Architecture Backend + +**Framework** : NestJS 10.x +**Langage** : TypeScript 5.x +**ORM** : TypeORM 0.3.x +**Validation** : class-validator + class-transformer +**Authentication** : JWT (jsonwebtoken + @nestjs/jwt) +**Password Hashing** : bcrypt (12 rounds) +**Email** : Nodemailer (Ă  installer) + +### Architecture Frontend + +**Framework** : Flutter 3.19.0 +**Langage** : Dart 3.x +**State Management** : Provider / Riverpod +**HTTP Client** : Dio / http +**Storage** : flutter_secure_storage (tokens) + +### Architecture Database + +**SGBD** : PostgreSQL 17 +**Schema** : Voir [DATABASE.md](./DATABASE.md) +**Tables concernĂ©es** : +- `utilisateurs` (table principale) +- `parents` (extension pour parents) +- `assistantes_maternelles` (extension pour AM) +- `validations` (historique des validations) + +### Configuration Email + +**Serveur SMTP** : `mail.ptits-pas.fr` +**Port** : 25 (STARTTLS) +**ExpĂ©diteur** : `no-reply@ptits-pas.fr` +**Authentification** : Aucune (serveur interne) + +--- + +## 📡 APIs utilisĂ©es + +### API 1 : CrĂ©er un gestionnaire + +**Endpoint** : `POST /api/v1/gestionnaires` +**Authentification** : Bearer Token (super_admin uniquement) +**RĂ©fĂ©rence** : [API.md - Gestionnaires](./API.md#post-gestionnaires) + +**Request** : +```json +{ + "email": "lucas.moreau@ptits-pas.fr", + "password": "password", + "prenom": "Lucas", + "nom": "MOREAU" +} +``` + +**Response 201** : +```json +{ + "id": "uuid-lucas-moreau", + "email": "lucas.moreau@ptits-pas.fr", + "role": "gestionnaire", + "prenom": "Lucas", + "nom": "MOREAU" +} +``` + +**Errors** : +- `401 Unauthorized` : Token manquant ou invalide +- `403 Forbidden` : RĂŽle insuffisant (pas super_admin) +- `409 Conflict` : Email dĂ©jĂ  utilisĂ© +- `400 Bad Request` : DonnĂ©es invalides + +--- + +### API 2 : Inscription (parent ou AM) + +**Endpoint** : `POST /api/v1/auth/register` +**Authentification** : Aucune (route publique) +**RĂ©fĂ©rence** : [API.md - Authentification](./API.md#post-authregister) + +**Request** : +```json +{ + "email": "claire.martin@ptits-pas.fr", + "password": "password", + "prenom": "Claire", + "nom": "MARTIN", + "telephone": "01 39 98 89 01", + "role": "parent" +} +``` + +**Response 201** : +```json +{ + "message": "Inscription rĂ©ussie. Votre compte est en attente de validation.", + "userId": "uuid-claire-martin" +} +``` + +**Errors** : +- `409 Conflict` : Email dĂ©jĂ  utilisĂ© +- `400 Bad Request` : DonnĂ©es invalides + +--- + +### API 3 : Liste des parents en attente + +**Endpoint** : `GET /api/v1/parents` +**Authentification** : Bearer Token (gestionnaire ou super_admin) +**RĂ©fĂ©rence** : [API.md - Parents](./API.md#get-parents) + +**Query Params** : +``` +?statut=en_attente +``` + +**Response 200** : +```json +[ + { + "id": "uuid", + "email": "parent@example.com", + "prenom": "Jean", + "nom": "Martin", + "telephone": "0601020304", + "statut": "en_attente", + "cree_le": "2025-11-20T14:30:00Z" + } +] +``` + +**Errors** : +- `401 Unauthorized` : Token manquant ou invalide +- `403 Forbidden` : RĂŽle insuffisant + +--- + +### API 4 : Liste des assistantes maternelles en attente + +**Endpoint** : `GET /api/v1/assistantes-maternelles` +**Authentification** : Bearer Token (gestionnaire ou super_admin) +**RĂ©fĂ©rence** : [API.md - Assistantes Maternelles](./API.md#get-assistantes-maternelles) + +**Query Params** : +``` +?statut=en_attente +``` + +**Response 200** : +```json +[ + { + "id": "uuid", + "email": "am@example.com", + "prenom": "Marie", + "nom": "Leblanc", + "telephone": "0698765432", + "statut": "en_attente", + "cree_le": "2025-11-22T11:00:00Z" + } +] +``` + +--- + +### API 5 : Valider un compte + +**Endpoint** : `PATCH /api/v1/users/{id}/valider` +**Authentification** : Bearer Token (gestionnaire, administrateur ou super_admin) +**RĂ©fĂ©rence** : [API.md - Utilisateurs](./API.md#patch-usersidvalider) + +**Request** : +```json +{ + "comment": "Dossier complet, compte validĂ©" +} +``` + +**Response 200** : +```json +{ + "message": "Compte validĂ© avec succĂšs", + "userId": "uuid", + "emailSent": true +} +``` + +**Errors** : +- `401 Unauthorized` : Token manquant ou invalide +- `403 Forbidden` : RĂŽle insuffisant +- `404 Not Found` : Utilisateur introuvable +- `400 Bad Request` : ID invalide + +--- + +### API 6 : Refuser un compte + +**Endpoint** : `PATCH /api/v1/users/{id}/suspendre` +**Authentification** : Bearer Token (gestionnaire, administrateur ou super_admin) +**RĂ©fĂ©rence** : [API.md - Utilisateurs](./API.md#patch-usersidsuspendre) + +**Request** : +```json +{ + "comment": "Informations incomplĂštes" +} +``` + +**Response 200** : +```json +{ + "message": "Compte suspendu", + "userId": "uuid", + "emailSent": true +} +``` + +--- + +### API 7 : Connexion + +**Endpoint** : `POST /api/v1/auth/login` +**Authentification** : Aucune (route publique) +**RĂ©fĂ©rence** : [API.md - Authentification](./API.md#post-authlogin) + +**Request** : +```json +{ + "email": "parent@example.com", + "password": "MotDePasse123" +} +``` + +**Response 200** : +```json +{ + "access_token": "eyJhbGc...", + "refresh_token": "eyJhbGc...", + "user": { + "id": "uuid", + "email": "parent@example.com", + "role": "parent", + "prenom": "Jean", + "nom": "Martin", + "statut": "actif" + } +} +``` + +**Errors** : +- `401 Unauthorized` : Email ou mot de passe incorrect +- `403 Forbidden` : Compte en attente ou suspendu + +--- + +## đŸ—„ïž ModĂšles de donnĂ©es + +### Utilisateur + +**Table** : `utilisateurs` +**RĂ©fĂ©rence** : [DATABASE.md - Table utilisateurs](./DATABASE.md#1-utilisateurs) + +```typescript +interface Utilisateur { + id: UUID; // Identifiant unique + email: string; // Email (unique) + password: string; // Hash bcrypt + prenom: string; // PrĂ©nom + nom: string; // Nom + genre?: 'H' | 'F' | 'Autre'; // Genre (optionnel) + role: RoleType; // RĂŽle (voir enum ci-dessous) + statut: StatutUtilisateurType; // Statut (voir enum ci-dessous) + telephone?: string; // TĂ©lĂ©phone + adresse?: string; // Adresse complĂšte + photo_url?: string; // URL photo de profil + consentement_photo: boolean; // Consentement photo + date_consentement_photo?: Date; // Date du consentement + changement_mdp_obligatoire: boolean; // Force changement MDP + cree_le: Date; // Date de crĂ©ation + modifie_le: Date; // DerniĂšre modification + ville?: string; // Ville + code_postal?: string; // Code postal + telephone?: string; // TĂ©lĂ©phone + profession?: string; // Profession + situation_familiale?: string; // Situation familiale + date_naissance?: Date; // Date de naissance +} +``` + +**Enums** : + +```typescript +enum RoleType { + PARENT = 'parent', + GESTIONNAIRE = 'gestionnaire', + SUPER_ADMIN = 'super_admin', + ASSISTANTE_MATERNELLE = 'assistante_maternelle', + ADMINISTRATEUR = 'administrateur' +} + +enum StatutUtilisateurType { + EN_ATTENTE = 'en_attente', + ACTIF = 'actif', + SUSPENDU = 'suspendu' +} +``` + +--- + +### Parent + +**Table** : `parents` +**RĂ©fĂ©rence** : [DATABASE.md - Table parents](./DATABASE.md#3-parents) + +```typescript +interface Parent { + id_utilisateur: UUID; // FK → utilisateurs(id) + id_co_parent?: UUID; // FK → utilisateurs(id) - Co-parent optionnel +} +``` + +**Relation** : 1:1 avec `utilisateurs` + +--- + +### Assistante Maternelle + +**Table** : `assistantes_maternelles` +**RĂ©fĂ©rence** : [DATABASE.md - Table assistantes_maternelles](./DATABASE.md#2-assistantes_maternelles) + +```typescript +interface AssistanteMaternelle { + id_utilisateur: UUID; // FK → utilisateurs(id) + numero_agrement?: string; // NumĂ©ro d'agrĂ©ment + nir_chiffre?: string; // NIR (15 caractĂšres) + nb_max_enfants?: number; // CapacitĂ© maximale + biographie?: string; // PrĂ©sentation + disponible: boolean; // DisponibilitĂ© + ville_residence?: string; // Ville + date_agrement?: Date; // Date d'agrĂ©ment + annee_experience?: number; // AnnĂ©es d'expĂ©rience + specialite?: string; // SpĂ©cialitĂ©s + place_disponible?: number; // Places disponibles +} +``` + +**Relation** : 1:1 avec `utilisateurs` + +--- + +### Validation + +**Table** : `validations` +**RĂ©fĂ©rence** : [DATABASE.md - Table validations](./DATABASE.md#14-validations) + +```typescript +interface Validation { + id: UUID; // Identifiant unique + id_utilisateur: UUID; // FK → utilisateurs(id) + type: string; // Type de validation (ex: 'validation_compte') + statut: StatutValidationType; // Statut (voir enum ci-dessous) + cree_le: Date; // Date de demande + modifie_le: Date; // DerniĂšre modification + valide_par?: UUID; // FK → utilisateurs(id) - Validateur + commentaire?: string; // Commentaire du validateur +} +``` + +**Enum** : + +```typescript +enum StatutValidationType { + EN_ATTENTE = 'en_attente', + VALIDE = 'valide', + REFUSE = 'refuse' +} +``` + +--- + +## 📧 Templates d'emails + +### Configuration Nodemailer + +**Installation** : +```bash +npm install nodemailer +npm install -D @types/nodemailer +``` + +**Configuration** (`backend/src/mail/mail.config.ts`) : + +```typescript +import { MailerOptions } from '@nestjs-modules/mailer'; +import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; + +export const mailConfig: MailerOptions = { + transport: { + host: 'mail.ptits-pas.fr', + port: 25, + secure: false, + tls: { + rejectUnauthorized: false + } + }, + defaults: { + from: '"P\'titsPas" ', + }, + template: { + dir: __dirname + '/templates', + adapter: new HandlebarsAdapter(), + options: { + strict: true, + }, + }, +}; +``` + +### Service Email + +**Fichier** : `backend/src/mail/mail.service.ts` + +```typescript +import { Injectable } from '@nestjs/common'; +import { MailerService } from '@nestjs-modules/mailer'; + +@Injectable() +export class MailService { + constructor(private mailerService: MailerService) {} + + async sendAccountValidated(user: { + email: string; + prenom: string; + nom: string; + role: string; + }): Promise { + try { + const roleLabel = user.role === 'parent' ? 'Parent' : 'Assistante Maternelle'; + + await this.mailerService.sendMail({ + to: user.email, + subject: 'Votre compte P\'titsPas a Ă©tĂ© validĂ© ✅', + template: './account-validated', + context: { + prenom: user.prenom, + nom: user.nom, + email: user.email, + role_label: roleLabel, + }, + }); + + return true; + } catch (error) { + console.error('Error sending validation email:', error); + return false; + } + } + + async sendAccountRejected(user: { + email: string; + prenom: string; + nom: string; + role: string; + reason: string; + }): Promise { + try { + await this.mailerService.sendMail({ + to: user.email, + subject: 'Votre demande d\'inscription P\'titsPas', + template: './account-rejected', + context: { + prenom: user.prenom, + nom: user.nom, + reason: user.reason, + }, + }); + + return true; + } catch (error) { + console.error('Error sending rejection email:', error); + return false; + } + } +} +``` + +### Templates Handlebars + +**Fichier** : `backend/src/mail/templates/account-validated.hbs` + +Voir le template HTML dans la section [Étape 6.1](#61-email-de-validation) + +**Fichier** : `backend/src/mail/templates/account-rejected.hbs` + +Voir le template HTML dans la section [Étape 6.2](#62-email-de-refus) + +--- + +## ✅ Tests et validation + +### Tests unitaires (Backend) + +**Framework** : Jest + +**Fichiers de test** : +- `backend/src/routes/auth/auth.service.spec.ts` +- `backend/src/routes/user/user.service.spec.ts` +- `backend/src/mail/mail.service.spec.ts` + +**ScĂ©narios de test** : + +1. **CrĂ©ation de gestionnaire** + - ✅ CrĂ©ation rĂ©ussie avec donnĂ©es valides + - ❌ Échec si email dĂ©jĂ  existant + - ❌ Échec si utilisateur non super_admin + - ❌ Échec si donnĂ©es invalides + +2. **Inscription** + - ✅ Inscription parent rĂ©ussie + - ✅ Inscription AM rĂ©ussie + - ✅ CrĂ©ation de l'entitĂ© mĂ©tier (parent/AM) + - ❌ Échec si email dĂ©jĂ  existant + - ❌ Échec si mot de passe trop faible + +3. **Validation de compte** + - ✅ Validation rĂ©ussie + changement statut + - ✅ Email envoyĂ© + - ✅ Enregistrement dans table validations + - ❌ Échec si utilisateur non gestionnaire + - ❌ Échec si utilisateur dĂ©jĂ  validĂ© + +4. **Refus de compte** + - ✅ Refus rĂ©ussi + changement statut + - ✅ Email envoyĂ© avec motif + - ✅ Enregistrement dans table validations + - ❌ Échec si commentaire manquant + +5. **Connexion** + - ✅ Connexion rĂ©ussie si compte actif + - ❌ Échec si compte en attente + - ❌ Échec si compte suspendu + - ❌ Échec si mot de passe incorrect + +### Tests d'intĂ©gration (Backend) + +**Framework** : Supertest + Jest + +**ScĂ©narios de test** : + +1. **Workflow complet - Parent** + ```typescript + it('should complete full parent workflow', async () => { + // 1. Super admin crĂ©e un gestionnaire + const gestionnaire = await createGestionnaire(); + + // 2. Parent s'inscrit + const parent = await registerParent(); + + // 3. Gestionnaire liste les parents en attente + const pendingParents = await getPendingParents(gestionnaire.token); + expect(pendingParents).toContainEqual(expect.objectContaining({ + email: parent.email, + statut: 'en_attente' + })); + + // 4. Gestionnaire valide le parent + await validateUser(gestionnaire.token, parent.id); + + // 5. Parent se connecte + const loginResponse = await loginUser(parent.email, parent.password); + expect(loginResponse.access_token).toBeDefined(); + }); + ``` + +2. **Workflow complet - Assistante Maternelle** + - Identique au workflow parent + +3. **Workflow refus** + ```typescript + it('should handle account rejection', async () => { + const gestionnaire = await createGestionnaire(); + const parent = await registerParent(); + + await rejectUser(gestionnaire.token, parent.id, 'Informations incomplĂštes'); + + const loginResponse = await loginUser(parent.email, parent.password); + expect(loginResponse.statusCode).toBe(403); + }); + ``` + +### Tests E2E (Frontend + Backend) + +**Framework** : Flutter Integration Tests + Mockito + +**ScĂ©narios de test** : + +1. **CrĂ©ation gestionnaire (UI)** + - Remplir le formulaire + - Soumettre + - VĂ©rifier le message de succĂšs + - VĂ©rifier que le gestionnaire peut se connecter + +2. **Inscription parent (UI)** + - Remplir le formulaire d'inscription + - Soumettre + - VĂ©rifier le message "en attente de validation" + - VĂ©rifier que la connexion est refusĂ©e + +3. **Dashboard gestionnaire (UI)** + - Se connecter en tant que gestionnaire + - VĂ©rifier l'affichage des 2 onglets + - VĂ©rifier l'affichage des comptes en attente + - Cliquer sur "Valider" + - VĂ©rifier que le compte disparaĂźt de la liste + +4. **RĂ©ception email (Manuel)** + - VĂ©rifier la rĂ©ception de l'email de validation + - VĂ©rifier le contenu de l'email + - Cliquer sur le lien de connexion + - VĂ©rifier la redirection vers l'application + +### Checklist de validation + +**Phase 1 : Backend** +- [ ] Endpoint crĂ©ation gestionnaire fonctionne +- [ ] Flag `changement_mdp_obligatoire` = TRUE pour gestionnaires/admins +- [ ] Endpoint inscription parent fonctionne (6 Ă©tapes) + - [ ] CrĂ©ation Parent 1 + - [ ] CrĂ©ation Parent 2 (optionnel) + - [ ] CrĂ©ation Enfant(s) + - [ ] Enregistrement prĂ©sentation + - [ ] Enregistrement acceptation CGU avec horodatage + - [ ] RĂ©capitulatif +- [ ] Endpoint inscription AM fonctionne (5 Ă©tapes) + - [ ] Panneau 1 : IdentitĂ© + Photo + Consentement photo + - [ ] Panneau 2 : NIR + AgrĂ©ment + Infos pro + - [ ] PrĂ©sentation + - [ ] Acceptation CGU + - [ ] RĂ©capitulatif +- [ ] EntitĂ© mĂ©tier créée lors de l'inscription +- [ ] Endpoint validation fonctionne +- [ ] Endpoint refus fonctionne +- [ ] Email de validation envoyĂ© +- [ ] Email de refus envoyĂ© +- [ ] SMS de validation envoyĂ© (optionnel) +- [ ] SMS de refus envoyĂ© (optionnel) +- [ ] Connexion bloquĂ©e si compte en attente +- [ ] Connexion autorisĂ©e si compte actif +- [ ] Changement de mot de passe forcĂ© Ă  la premiĂšre connexion (gestionnaires/admins) + +**Phase 2 : Frontend** +- [ ] Écran crĂ©ation gestionnaire implĂ©mentĂ© +- [ ] Formulaire d'inscription parent implĂ©mentĂ© (6 Ă©tapes) + - [ ] Étape 1 : Informations Parent 1 + - [ ] Étape 2 : Informations Parent 2 (optionnel) + - [ ] Étape 3 : Informations Enfant(s) avec upload photo + - [ ] Étape 4 : PrĂ©sentation du dossier + - [ ] Étape 5 : Acceptation CGU (liens PDF) + - [ ] Étape 6 : RĂ©capitulatif +- [ ] Formulaire d'inscription AM implĂ©mentĂ© (5 Ă©tapes) + - [ ] Panneau 1 : IdentitĂ© + Upload photo + Consentement + - [ ] Panneau 2 : NIR + Date/lieu naissance + AgrĂ©ment + - [ ] PrĂ©sentation + - [ ] Acceptation CGU (liens PDF) + - [ ] RĂ©capitulatif +- [ ] Dashboard gestionnaire avec 2 onglets +- [ ] Liste des parents en attente affichĂ©e (avec enfants) +- [ ] Liste des AM en attente affichĂ©e (avec NIR masquĂ©) +- [ ] Boutons Valider/Refuser fonctionnels +- [ ] Messages de feedback utilisateur +- [ ] Gestion des erreurs +- [ ] Écran de changement de mot de passe forcĂ© (premiĂšre connexion) + +**Phase 3 : IntĂ©gration** +- [ ] Workflow complet parent testĂ© +- [ ] Workflow complet AM testĂ© +- [ ] Workflow refus testĂ© +- [ ] Emails reçus et corrects +- [ ] Connexion aprĂšs validation OK +- [ ] Redirection vers dashboard OK + +--- + +## 📚 RĂ©fĂ©rences + +### Documentation interne + +- [API.md](./API.md) - Documentation complĂšte des endpoints +- [DATABASE.md](./DATABASE.md) - SchĂ©ma de la base de donnĂ©es +- [AUDIT.md](./AUDIT.md) - Audit du projet YNOV +- [README-ARCHITECTURE.md](./README-ARCHITECTURE.md) - Architecture du projet +- [README-DEPLOYMENT.md](./README-DEPLOYMENT.md) - Guide de dĂ©ploiement + +### Documentation externe + +- [NestJS Documentation](https://docs.nestjs.com/) +- [TypeORM Documentation](https://typeorm.io/) +- [Flutter Documentation](https://flutter.dev/docs) +- [PostgreSQL Documentation](https://www.postgresql.org/docs/) +- [Nodemailer Documentation](https://nodemailer.com/) + +### Cahier des Charges + +**Section 3.1** : Gestion des utilisateurs +**Section 3.2** : Processus de validation +**Section 4.5** : Notifications email + +--- + +## 📋 RĂ©sumĂ© des modifications (ConformitĂ© CDC) + +Ce document a Ă©tĂ© mis Ă  jour pour ĂȘtre conforme au **Cahier des Charges v1.3** (Section 3). + +### Principales modifications + +#### Inscription Parent +- ✅ Passage de 1 formulaire simple Ă  **6 Ă©tapes complĂštes** +- ✅ Ajout de la gestion du **Parent 2** (co-parent) +- ✅ Ajout de la crĂ©ation des **enfants** lors de l'inscription +- ✅ Ajout du champ **PrĂ©sentation du dossier** +- ✅ Ajout de l'**Acceptation des CGU** avec horodatage +- ✅ Ajout d'un **RĂ©capitulatif** avant validation + +#### Inscription Assistante Maternelle +- ✅ Passage de 1 formulaire simple Ă  **5 Ă©tapes avec 2 panneaux** +- ✅ Ajout du **NIR** (NumĂ©ro de SĂ©curitĂ© sociale) - **OBLIGATOIRE** +- ✅ Ajout de la **Photo obligatoire** (si option activĂ©e) +- ✅ Ajout du **Consentement photo** avec horodatage (RGPD) +- ✅ Ajout de la **Date et lieu de naissance** +- ✅ Ajout de l'**Acceptation des CGU** avec horodatage +- ✅ Ajout d'un **RĂ©capitulatif** avant validation + +#### CrĂ©ation Gestionnaire/Administrateur +- ✅ Ajout du **Changement de mot de passe obligatoire** Ă  la premiĂšre connexion + +#### Notifications +- ✅ Ajout de la possibilitĂ© d'envoi par **SMS** en plus de l'email + +### Champs Base de DonnĂ©es Ă  Ajouter + +```sql +-- Table utilisateurs +ALTER TABLE utilisateurs ADD COLUMN ville_naissance VARCHAR(150); +ALTER TABLE utilisateurs ADD COLUMN pays_naissance VARCHAR(100); +ALTER TABLE utilisateurs ADD COLUMN date_acceptation_cgu TIMESTAMPTZ; + +-- Table assistantes_maternelles +-- Le champ nir_chiffre existe dĂ©jĂ  mais doit ĂȘtre rendu OBLIGATOIRE +ALTER TABLE assistantes_maternelles ALTER COLUMN nir_chiffre SET NOT NULL; + +-- Table parents ou nouvelle table +-- Option 1 : Ajouter Ă  la table parents +ALTER TABLE parents ADD COLUMN presentation_dossier TEXT; + +-- Option 2 : CrĂ©er une table dĂ©diĂ©e +CREATE TABLE dossiers_inscription ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + id_utilisateur UUID REFERENCES utilisateurs(id) ON DELETE CASCADE, + presentation TEXT, + cree_le TIMESTAMPTZ DEFAULT now() +); +``` + +--- + +**DerniĂšre mise Ă  jour** : 24 Novembre 2025 +**Version** : 1.0 +**Statut** : ✅ Document validĂ© - Conforme CDC v1.3 + diff --git a/docs/AUDIT.md b/docs/90_AUDIT.md similarity index 100% rename from docs/AUDIT.md rename to docs/90_AUDIT.md diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 0d05d77..0000000 --- a/docs/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# 📚 Documentation PtitsPas App - -Bienvenue dans la documentation complĂšte de l'application PtitsPas. - -## 📖 Table des matiĂšres - -### Architecture & Infrastructure -- [**Architecture**](./README-ARCHITECTURE.md) - Vue d'ensemble de l'architecture mono-repo et multi-conteneurs -- [**DĂ©ploiement**](./README-DEPLOYMENT.md) - Guide complet de dĂ©ploiement et configuration CI/CD - -### DĂ©veloppement -- [**API Documentation**](./API.md) - Documentation complĂšte des endpoints REST -- [**Database Schema**](./DATABASE.md) - SchĂ©ma de la base de donnĂ©es et modĂšles -- [**Workflow de dĂ©veloppement**](./WORKFLOW.md) - Process Git, branches et dĂ©ploiement - -### Administration -- [**Guide d'administration**](./ADMIN.md) - Gestion des utilisateurs, accĂšs PgAdmin, logs -- [**Troubleshooting**](./TROUBLESHOOTING.md) - RĂ©solution des problĂšmes courants - -### Audit & Analyse -- [**Audit du projet YNOV**](./AUDIT.md) - Analyse complĂšte du code Ă©tudiant et fonctionnalitĂ©s - -### Frontend -- [**Frontend Flutter**](./FRONTEND.md) - Structure de l'application mobile/web - -## 🚀 Quick Start - -```bash -# Cloner le projet -git clone ssh://gitea-jmartin/jmartin/app.git ptitspas-app - -# Lancer l'environnement de dĂ©veloppement -cd ptitspas-app -docker compose up -d - -# AccĂ©der aux services -Frontend: https://app.ptits-pas.fr -API: https://app.ptits-pas.fr/api -PgAdmin: https://app.ptits-pas.fr/pgadmin -``` - -## 🔗 Liens utiles - -- **Gitea** : https://git.ptits-pas.fr -- **Production** : https://app.ptits-pas.fr -- **Mail** : https://mail.ptits-pas.fr - -## 📝 Maintenance - -Cette documentation est maintenue par Julien Martin (julien.martin@ptits-pas.fr). - -DerniĂšre mise Ă  jour : Novembre 2025 - diff --git a/docs/test-data/README.md b/docs/test-data/README.md new file mode 100644 index 0000000..7908a9e --- /dev/null +++ b/docs/test-data/README.md @@ -0,0 +1,279 @@ +# 📊 DonnĂ©es de Test + +Ce dossier contient les jeux de donnĂ©es de test pour l'application P'titsPas. + +## 📁 Fichiers + +### `utilisateurs-test.csv` + +Fichier CSV contenant les utilisateurs de test pour valider le workflow de crĂ©ation de compte. + +**Format** : CSV avec en-tĂȘte +**Encodage** : UTF-8 +**SĂ©parateur** : Virgule (`,`) + +--- + +## đŸ‘„ Utilisateurs de test + +### 1. Administrateur + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| BERNARD | Sophie | sophie.bernard@ptits-pas.fr | 01 39 98 45 67 | 06 78 12 34 56 | + +**RĂŽle** : `administrateur` +**Notes** : Responsable direction gĂ©nĂ©rale - AnciennetĂ© 8 ans + +--- + +### 2. Gestionnaire + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| MOREAU | Lucas | lucas.moreau@ptits-pas.fr | 01 39 98 56 78 | 06 87 23 45 67 | + +**RĂŽle** : `gestionnaire` +**Notes** : Service gestion administrative - AnciennetĂ© 3 ans + +--- + +### 3. Assistantes Maternelles (2) + +#### Marie DUBOIS + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| DUBOIS | Marie | marie.dubois@ptits-pas.fr | 01 39 98 67 89 | 06 96 34 56 78 | + +**RĂŽle** : `assistante_maternelle` +**SpĂ©cialitĂ©** : BĂ©bĂ©s 0-18 mois +**AgrĂ©ment** : 4 enfants +**Places disponibles** : 2 + +#### Fatima EL MANSOURI + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| EL MANSOURI | Fatima | fatima.elmansouri@ptits-pas.fr | 01 39 98 78 90 | 06 75 45 67 89 | + +**RĂŽle** : `assistante_maternelle` +**SpĂ©cialitĂ©** : 1-3 ans +**AgrĂ©ment** : 3 enfants +**Places disponibles** : 1 + +--- + +### 4. Parents (5) + +#### Couple MARTIN (avec triplĂ©s) + +**Claire MARTIN** + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| MARTIN | Claire | claire.martin@ptits-pas.fr | 01 39 98 89 01 | 06 89 56 78 90 | + +**Profession** : InfirmiĂšre +**Situation** : MariĂ©e - triplĂ©s + +**Thomas MARTIN** + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| MARTIN | Thomas | thomas.martin@ptits-pas.fr | 01 39 98 89 01 | 06 78 45 67 89 | + +**Profession** : IngĂ©nieur +**Situation** : MariĂ© - triplĂ©s + +**Enfants** : +- Emma MARTIN (nĂ©e le 15/02/2023, 8 mois) +- Noah MARTIN (nĂ© le 15/02/2023, 8 mois) +- LĂ©a MARTIN (nĂ©e le 15/02/2023, 8 mois) + +**Notes** : Couple avec triplĂ©s - Besoin garde multiple + +--- + +#### Couple divorcĂ© DURAND/ROUSSEAU + +**AmĂ©lie DURAND** + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| DURAND | AmĂ©lie | amelie.durand@ptits-pas.fr | 01 39 98 90 12 | 06 67 78 89 90 | + +**Profession** : Comptable +**Situation** : DivorcĂ©e + +**Julien ROUSSEAU** + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| ROUSSEAU | Julien | julien.rousseau@ptits-pas.fr | 01 39 98 01 23 | 06 56 67 78 89 | + +**Profession** : Commercial +**Situation** : DivorcĂ© + +**Enfants** (en commun) : +- ChloĂ© ROUSSEAU (nĂ©e le 20/04/2022, 2 ans) +- Hugo ROUSSEAU (nĂ© le 10/03/2024, 6 mois) + +**Notes** : +- AmĂ©lie : Garde principale des enfants +- Julien : Garde alternĂ©e 1 weekend/2 + +--- + +#### PĂšre cĂ©libataire + +**David LECOMTE** + +| Nom | PrĂ©nom | Email | TĂ©lĂ©phone | Mobile | +|-----|--------|-------|-----------|--------| +| LECOMTE | David | david.lecomte@ptits-pas.fr | 01 39 98 12 34 | 06 45 56 67 78 | + +**Profession** : DĂ©veloppeur web +**Situation** : PĂšre cĂ©libataire + +**Enfants** : +- Maxime LECOMTE (nĂ© le 15/04/2023, 1 an 5 mois) + +**Notes** : Garde complĂšte - Contact urgence : grand-mĂšre paternelle + +--- + +## đŸ§Ș Utilisation pour les tests + +### ScĂ©narios de test + +#### ScĂ©nario 1 : CrĂ©ation de gestionnaire + +```typescript +// CrĂ©er Lucas MOREAU en tant que gestionnaire +POST /api/v1/gestionnaires +{ + "email": "lucas.moreau@ptits-pas.fr", + "password": "Test1234!", + "prenom": "Lucas", + "nom": "MOREAU" +} +``` + +#### ScĂ©nario 2 : Inscription assistante maternelle + +```typescript +// Marie DUBOIS s'inscrit +POST /api/v1/auth/register +{ + "email": "marie.dubois@ptits-pas.fr", + "password": "Test1234!", + "prenom": "Marie", + "nom": "DUBOIS", + "telephone": "01 39 98 67 89", + "mobile": "06 96 34 56 78", + "role": "assistante_maternelle" +} +``` + +#### ScĂ©nario 3 : Inscription parent + +```typescript +// Claire MARTIN s'inscrit +POST /api/v1/auth/register +{ + "email": "claire.martin@ptits-pas.fr", + "password": "Test1234!", + "prenom": "Claire", + "nom": "MARTIN", + "telephone": "01 39 98 89 01", + "mobile": "06 89 56 78 90", + "role": "parent" +} +``` + +#### ScĂ©nario 4 : Validation par gestionnaire + +```typescript +// Lucas MOREAU valide Marie DUBOIS +PATCH /api/v1/users/{marie_id}/valider +Authorization: Bearer {lucas_token} +{ + "comment": "AgrĂ©ment vĂ©rifiĂ© - Profil complet" +} +``` + +#### ScĂ©nario 5 : Cas complexe - TriplĂ©s + +Test du workflow complet avec le couple MARTIN ayant des triplĂ©s : +1. Claire et Thomas s'inscrivent sĂ©parĂ©ment +2. Chacun dĂ©clare les 3 enfants +3. Validation par le gestionnaire +4. Recherche d'assistante maternelle avec capacitĂ© pour 3 enfants + +#### ScĂ©nario 6 : Cas complexe - Garde alternĂ©e + +Test du workflow avec le couple divorcĂ© DURAND/ROUSSEAU : +1. AmĂ©lie et Julien s'inscrivent sĂ©parĂ©ment +2. Chacun dĂ©clare les 2 enfants en commun +3. Gestion de la garde alternĂ©e +4. Coordination entre les 2 parents + +--- + +## 📧 Emails de test + +Tous les emails de test utilisent le domaine `@ptits-pas.fr`. + +**Pour les tests en local**, vous pouvez utiliser : +- [Mailtrap](https://mailtrap.io/) pour capturer les emails +- [MailHog](https://github.com/mailhog/MailHog) pour un serveur SMTP local +- [Thunderbird](https://www.thunderbird.net/) pour consulter les emails + +**Configuration Thunderbird** : +- Serveur IMAP : `mail.ptits-pas.fr` +- Port : 993 (SSL/TLS) +- Serveur SMTP : `mail.ptits-pas.fr` +- Port : 587 (STARTTLS) + +--- + +## 🔐 Mots de passe de test + +**Par dĂ©faut pour tous les utilisateurs de test** : `password` + +**Note** : Ce mot de passe simple est utilisĂ© uniquement pour les tests. En production, les rĂšgles suivantes s'appliquent : +- Minimum 8 caractĂšres +- Au moins 1 majuscule +- Au moins 1 chiffre +- Au moins 1 caractĂšre spĂ©cial (recommandĂ©) + +--- + +## đŸ—„ïž Script d'import + +Un script d'import sera créé pour charger automatiquement ces donnĂ©es de test en base. + +**Fichier** : `backend/src/scripts/seed-test-data.ts` + +**Utilisation** : +```bash +cd backend +npm run seed:test +``` + +--- + +## ⚠ Avertissement + +**Ces donnĂ©es sont uniquement pour les tests !** + +- Ne jamais utiliser en production +- Les emails sont fictifs mais utilisent le domaine rĂ©el `@ptits-pas.fr` +- Les numĂ©ros de tĂ©lĂ©phone sont fictifs +- Les adresses sont Ă  Bezons (95870) mais peuvent ĂȘtre fictives + +--- + +**DerniĂšre mise Ă  jour** : 24 Novembre 2025 + diff --git a/docs/test-data/utilisateurs-test.csv b/docs/test-data/utilisateurs-test.csv new file mode 100644 index 0000000..c93a0ae --- /dev/null +++ b/docs/test-data/utilisateurs-test.csv @@ -0,0 +1,11 @@ +Type,Nom,Prenom,Email,Telephone,Mobile,Date_naissance,Adresse,Code_postal,Ville,Profession,Situation_familiale,Enfant_1_nom,Enfant_1_naissance,Enfant_1_age,Enfant_2_nom,Enfant_2_naissance,Enfant_2_age,Enfant_3_nom,Enfant_3_naissance,Enfant_3_age,Notes_particulieres +ADMINISTRATEUR,BERNARD,Sophie,sophie.bernard@ptits-pas.fr,01 39 98 45 67,06 78 12 34 56,15/03/1978,"12 Avenue Gabriel PĂ©ri",95870,Bezons,Responsable administrative,MariĂ©e,,,,,,,,,,Responsable direction gĂ©nĂ©rale - AnciennetĂ© 8 ans +GESTIONNAIRE,MOREAU,Lucas,lucas.moreau@ptits-pas.fr,01 39 98 56 78,06 87 23 45 67,22/09/1985,"8 Rue Jean JaurĂšs",95870,Bezons,Gestionnaire des placements,CĂ©libataire,,,,,,,,,,Service gestion administrative - AnciennetĂ© 3 ans +ASSISTANTE_MATERNELLE,DUBOIS,Marie,marie.dubois@ptits-pas.fr,01 39 98 67 89,06 96 34 56 78,08/06/1980,"25 Rue de la RĂ©publique",95870,Bezons,Assistante maternelle,MariĂ©e,,,,,,,,,,AgrĂ©ment 4 enfants - SpĂ©cialitĂ© bĂ©bĂ©s 0-18 mois - 2 places disponibles +ASSISTANTE_MATERNELLE,EL MANSOURI,Fatima,fatima.elmansouri@ptits-pas.fr,01 39 98 78 90,06 75 45 67 89,12/11/1975,"17 Boulevard Aristide Briand",95870,Bezons,Assistante maternelle,MariĂ©e,,,,,,,,,,AgrĂ©ment 3 enfants - SpĂ©cialitĂ© 1-3 ans - 1 place disponible +PARENT,MARTIN,Claire,claire.martin@ptits-pas.fr,01 39 98 89 01,06 89 56 78 90,03/04/1990,"5 Avenue du GĂ©nĂ©ral de Gaulle",95870,Bezons,InfirmiĂšre,MariĂ©e - triplĂ©s,Emma MARTIN,15/02/2023,8 mois,Noah MARTIN,15/02/2023,8 mois,LĂ©a MARTIN,15/02/2023,8 mois,Couple avec triplĂ©s - Besoin garde multiple +PARENT,MARTIN,Thomas,thomas.martin@ptits-pas.fr,01 39 98 89 01,06 78 45 67 89,18/07/1988,"5 Avenue du GĂ©nĂ©ral de Gaulle",95870,Bezons,IngĂ©nieur,MariĂ© - triplĂ©s,Emma MARTIN,15/02/2023,8 mois,Noah MARTIN,15/02/2023,8 mois,LĂ©a MARTIN,15/02/2023,8 mois,Couple avec triplĂ©s - Besoin garde multiple +PARENT,DURAND,AmĂ©lie,amelie.durand@ptits-pas.fr,01 39 98 90 12,06 67 78 89 90,14/12/1987,"23 Rue Victor Hugo",95870,Bezons,Comptable,DivorcĂ©e,ChloĂ© ROUSSEAU,20/04/2022,2 ans,Hugo ROUSSEAU,10/03/2024,6 mois,,,,"Garde principale des enfants - Ex-conjoint : Julien ROUSSEAU - Nom de jeune fille : DURAND" +PARENT,ROUSSEAU,Julien,julien.rousseau@ptits-pas.fr,01 39 98 01 23,06 56 67 78 89,29/08/1985,"14 Rue Pasteur",95870,Bezons,Commercial,DivorcĂ©,ChloĂ© ROUSSEAU,20/04/2022,2 ans,Hugo ROUSSEAU,10/03/2024,6 mois,,,,"Garde alternĂ©e 1 weekend/2 - Ex-conjointe : AmĂ©lie DURAND (nĂ©e DURAND)" +PARENT,LECOMTE,David,david.lecomte@ptits-pas.fr,01 39 98 12 34,06 45 56 67 78,07/10/1992,"31 Rue Émile Zola",95870,Bezons,DĂ©veloppeur web,PĂšre cĂ©libataire,Maxime LECOMTE,15/04/2023,1 an 5 mois,,,,,,"Garde complĂšte - Contact urgence : grand-mĂšre paternelle" + diff --git a/docs/test-data/utilisateurs-test.html b/docs/test-data/utilisateurs-test.html new file mode 100644 index 0000000..13231a0 --- /dev/null +++ b/docs/test-data/utilisateurs-test.html @@ -0,0 +1,359 @@ + + + + + + Fiches d'identification - Utilisateurs de test + + + +
+

🏡 Fiches d'identification - Utilisateurs de test

+

SystĂšme de gestion des assistantes maternelles - Bezons (95870)

+

Mot de passe universel : password

+
+ + +
+
+
Sophie BERNARD
+
ADMINISTRATEUR
+
+
+
+
Informations personnelles
+

Email : sophie.bernard@ptits-pas.fr

+

Téléphone : 01 39 98 45 67

+

Téléphone mobile : 06 78 12 34 56

+

Date de naissance : 15/03/1978

+
+
+
Adresse
+

12 Avenue Gabriel Péri
+ 95870 Bezons
+ France

+
+
+
Fonction
+

Poste : Responsable administrative

+

Service : Direction générale

+

Ancienneté : 8 ans

+
+
+
+ + +
+
+
Lucas MOREAU
+
GESTIONNAIRE
+
+
+
+
Informations personnelles
+

Email : lucas.moreau@ptits-pas.fr

+

Téléphone : 01 39 98 56 78

+

Téléphone mobile : 06 87 23 45 67

+

Date de naissance : 22/09/1985

+
+
+
Adresse
+

8 Rue Jean JaurĂšs
+ 95870 Bezons
+ France

+
+
+
Fonction
+

Poste : Gestionnaire des placements

+

Service : Gestion administrative

+

Ancienneté : 3 ans

+
+
+
+ + +
+
+
Marie DUBOIS
+
ASSISTANTE MATERNELLE
+
+
+
+
Informations personnelles
+

Email : marie.dubois@ptits-pas.fr

+

Téléphone : 01 39 98 67 89

+

Téléphone mobile : 06 96 34 56 78

+

Date de naissance : 08/06/1980

+
+
+
Adresse
+

25 Rue de la République
+ 95870 Bezons
+ France

+
+
+
Profession
+

Agrément : 4 enfants max

+

Expérience : 12 ans

+

Spécialité : Bébés 0-18 mois

+

Places disponibles : 2

+
+
+
+ + +
+
+
Fatima EL MANSOURI
+
ASSISTANTE MATERNELLE
+
+
+
+
Informations personnelles
+

Email : fatima.elmansouri@ptits-pas.fr

+

Téléphone : 01 39 98 78 90

+

Téléphone mobile : 06 75 45 67 89

+

Date de naissance : 12/11/1975

+
+
+
Adresse
+

17 Boulevard Aristide Briand
+ 95870 Bezons
+ France

+
+
+
Profession
+

Agrément : 3 enfants max

+

Expérience : 15 ans

+

Spécialité : Enfants 1-3 ans

+

Places disponibles : 1

+
+
+
+ + +
+
+
Claire & Thomas MARTIN
+
PARENTS - TRIPLÉS
+
+
+
+
Informations Claire
+

Email : claire.martin@ptits-pas.fr

+

Téléphone : 06 89 56 78 90

+

Date de naissance : 03/04/1990

+

Profession : InfirmiĂšre

+
+
+
Informations Thomas
+

Email : thomas.martin@ptits-pas.fr

+

Téléphone : 06 78 45 67 89

+

Date de naissance : 18/07/1988

+

Profession : Ingénieur

+
+
+
Adresse commune
+

5 Avenue du Général de Gaulle
+ 95870 Bezons
+ France
+ Tél. fixe : 01 39 98 89 01

+
+
+
+
đŸ‘¶ Leurs enfants (TriplĂ©s)
+
Emma MARTIN - Née le 15/02/2023 (8 mois)
+
Noah MARTIN - NĂ© le 15/02/2023 (8 mois)
+
Léa MARTIN - Née le 15/02/2023 (8 mois)
+
+
+ + +
+
+
Amélie DURAND
+
PARENT - MÈRE
+
+
+
+
Informations personnelles
+

Email : amelie.durand@ptits-pas.fr

+

Téléphone : 06 67 78 89 90

+

Date de naissance : 14/12/1987

+

Profession : Comptable

+

Situation : Divorcée (nom de jeune fille : DURAND)

+
+
+
Adresse
+

23 Rue Victor Hugo
+ 95870 Bezons
+ France
+ Tél. fixe : 01 39 98 90 12

+
+
+
+
đŸ‘¶ Ses enfants
+
Chloé ROUSSEAU - Née le 20/04/2022 (2 ans)
+
Hugo ROUSSEAU - NĂ© le 10/03/2024 (6 mois)
+
+
+ +
+
+
Julien ROUSSEAU
+
PARENT - PÈRE
+
+
+
+
Informations personnelles
+

Email : julien.rousseau@ptits-pas.fr

+

Téléphone : 06 56 67 78 89

+

Date de naissance : 29/08/1985

+

Profession : Commercial

+

Situation : Divorcé

+
+
+
Adresse
+

14 Rue Pasteur
+ 95870 Bezons
+ France
+ Tél. fixe : 01 39 98 01 23

+
+
+
+
đŸ‘¶ Ses enfants (garde alternĂ©e)
+
Chloé ROUSSEAU - Née le 20/04/2022 (2 ans) - 1 weekend/2
+
Hugo ROUSSEAU - NĂ© le 10/03/2024 (6 mois) - 1 weekend/2
+

Ex-conjointe : Amélie DURAND (née DURAND)

+
+
+ + +
+
+
David LECOMTE
+
PARENT - PÈRE SEUL
+
+
+
+
Informations personnelles
+

Email : david.lecomte@ptits-pas.fr

+

Téléphone : 06 45 56 67 78

+

Date de naissance : 07/10/1992

+

Profession : Développeur web

+

Situation : PÚre célibataire

+
+
+
Adresse
+

31 Rue Émile Zola
+ 95870 Bezons
+ France
+ Tél. fixe : 01 39 98 12 34

+
+
+
Situation familiale
+

Garde : ComplĂšte

+

Contact d'urgence : Grand-mĂšre paternelle

+

Besoin : Garde temps plein

+
+
+
+
đŸ‘¶ Son enfant
+
Maxime LECOMTE - NĂ© le 15/04/2023 (1 an et 5 mois)
+
+
+ +
+ 🔐 Tous les comptes utilisent le mot de passe : password
+ 📧 Accùs webmail : mail.ptits-pas.fr +
+ + + +