jmartin
2fa1e4a981
feat(auth): durcir le flux de création de mot de passe par token
...
Ajoute les endpoints verify-token/create-password avec garde-fous TTL, usage unique atomique et invalidation explicite du token pour sécuriser l'activation initiale des comptes.
Made-with: Cursor
2026-04-16 11:30:09 +02:00
jmartin
0cc6fa3a9d
docs: ticket #120 fermé — liste tickets + script clôture Gitea
...
- 23_LISTE-TICKETS : #120 marqué fermé.
- backend/scripts/close-gitea-issue-120.js : commentaire de livraison + PATCH state closed (réutilisable / traçabilité).
Made-with: Cursor
2026-04-13 17:40:58 +02:00
jmartin
0befd4eb2a
feat(admin): validation AM/famille, À valider au survol, nettoyage logs
...
- À valider : ligne avec survol type AdminUserCard, icône Ouvrir centrée et plus grande (iconSize 34).
- Wizard AM : titres Identité et coordonnées / Dossier professionnel / Présentation ; photo à gauche, grille droite [2,2,2,2] (NIR, naissance, agrément, capacité) ; AppUser champs naissance ; dates dd/MM/yyyy via formatIsoDateFr ; ValidationDetailSection titre optionnel.
- Wizard famille : titre étape 4 « Présentation ».
- Suppression des debugPrint liés médias / images / dossier (api_config, auth_network_image, dossier_unifie, user_service, validation_family).
Made-with: Cursor
2026-04-13 17:22:08 +02:00
jmartin
f442c85cb6
fix(auth): persister places_available depuis places_disponibles (inscription AM)
...
Made-with: Cursor
2026-04-13 16:08:20 +02:00
jmartin
ab7845347b
merge: résolution conflits frontend + scripts parent ( #120 )
...
- Conserver le parcours AM complet (photo obligatoire, consentement, MIME, lieux naissance, focus Tab).
- Scripts parent : chemin tests/ressources/photos unifié.
Made-with: Cursor
2026-04-13 16:02:03 +02:00
jmartin
011ab26828
merge: branche backend inscription AM photo ( #120 )
2026-04-13 15:59:35 +02:00
jmartin
a9ce4a6756
fix(am): ordre Tab formulaire pro et chevrons accessibles
...
- Ordre de focus explicite (NumericFocusOrder) pour l’inscription AM étape 2 : chaîne des champs jusqu’aux chevrons, Pays → NIR, places → Suivant (10) puis Précédent (11).
- FocusTraversalGroup avec OrderedTraversalPolicy sur le Scaffold pour respecter cet ordre (desktop / web).
- Champ pays : TextInputAction.next, onFieldSubmitted et onEditingComplete vers le NIR ; CustomAppTextField expose onEditingComplete.
- NirTextField : focusNode et focusTraversalOrder optionnels.
Made-with: Cursor
2026-04-13 14:09:21 +02:00
jmartin
d550e57cb8
fix(inscription-am): étape 1/2 obligatoires alignées API (min 2 car., photo)
...
- Étape 1 : prénom/nom min 2 caractères (minPersonNameLength sur PersonalInfoFormScreen pour AM)
- Étape 2 : ville/pays naissance min 2 ; photo réelle + consentement obligatoires ; isStep2Complete strict
- registerAM : lieu naissance trim + toujours envoyer photo_base64 ; lieu_* non null si valide
- Étape 4 : blocage envoi si isRegistrationComplete faux
Made-with: Cursor
2026-04-13 13:32:25 +02:00
jmartin
b4b44cb1b9
feat(inscription-am): places disponibles, UI étape 2, plafond capacité 4 côté app
...
- POST /auth/register/am : places_disponibles, enregistrement place_disponible, contrôle ≤ capacité
- Formulaire pro AM : places sur la ligne capacité, mobile un champ par ligne, carte desktop plus compacte (espacements, polices, labelFieldSpacing)
- Capacité et places validées jusqu’à 4 dans l’app (kAmCapaciteAccueilMax) ; hint NIR « 13 chiffres + clé »
- Scripts d’inscription AM (Node + smoke shell) : places_disponibles
Made-with: Cursor
2026-04-13 13:20:26 +02:00
jmartin
58607cdbc9
feat(inscription AM #120 ): UI étape pro, photo unifiée, scripts et données test
...
- Panneau AM : validation NIR alignée API, date d’agrément requise côté app,
capacité 1–10, n° agrément + date sur une ligne, ville/pays formatés au blur.
- Widget RegistrationPhotoSlot (cadre, croix) partagé avec les cartes enfant.
- AuthService : MIME PNG/JPEG pour la photo ; payload date_agrement.
- Scripts register-am-dubois / mansouri ; chemins tests/ressources/photos ;
doc test-data + seed ; smoke curl inscription AM.
Made-with: Cursor
2026-04-13 13:19:32 +02:00
jmartin
12bf85b7bd
chore: déplacer les scripts d'inscription parent vers tests/scripts
...
repoRoot corrigé (../..) ; usage: node tests/scripts/register-parent-*.mjs
Made-with: Cursor
2026-04-13 13:19:31 +02:00
jmartin
01c1be8f16
feat(am): inscription photo (picker, bytes web, photo_filename) ( #120 )
...
- ProfessionalInfoFormScreen : ImagePicker par défaut, MemoryImage, consentement si photo réelle
- AmRegistrationData : photoBytes + photoFilename ; récap étape 4
- registerAM : base64 + filename, erreurs réseau/JSON comme parents
- docs: 23_LISTE-TICKETS — issue #120
Made-with: Cursor
2026-04-13 13:19:31 +02:00
jmartin
cdae9b5f7c
feat(am): alignement inscription/validation + BDD init
...
- Lieu naissance obligatoire (DTO), persistance Users + migration SQL
- BDD.sql: colonnes lieu_naissance_*, tables dossier_famille / dossier_famille_enfants
- inscrireAMComplet: places_available = capacite_accueil
- GET dossier AM: user.lieu_naissance_*, consentement_photo
- docs/TEMP_FRONT_alignement_AM.md pour équipe Flutter
- Parité: email accusé AM, RegisterAmResponseDto (numero_dossier)
Made-with: Cursor
2026-04-13 13:14:38 +02:00
jmartin
73efac482f
chore: déplacer les scripts d'inscription parent vers tests/scripts
...
repoRoot corrigé (../..) ; usage: node tests/scripts/register-parent-*.mjs
Made-with: Cursor
2026-04-13 11:40:41 +02:00
jmartin
62b2466cce
feat(am): inscription photo (picker, bytes web, photo_filename) ( #120 )
...
- ProfessionalInfoFormScreen : ImagePicker par défaut, MemoryImage, consentement si photo réelle
- AmRegistrationData : photoBytes + photoFilename ; récap étape 4
- registerAM : base64 + filename, erreurs réseau/JSON comme parents
- docs: 23_LISTE-TICKETS — issue #120
Made-with: Cursor
2026-04-12 21:41:19 +02:00
jmartin
d69768806c
fix(auth): inscription AM — persister photo si photo_base64 sans photo_filename ( #120 )
...
- Défaut nom fichier photo_am.jpg ; extension finale dérivée du data-URL
- Swagger DTO + description endpoint register/am
Made-with: Cursor
2026-04-12 21:37:47 +02:00
jmartin
eac108c9f4
Merge branch 'master' into develop — alignement avec correctifs master (withOpacity, formatters, script Gitea)
...
Made-with: Cursor
2026-04-12 21:15:07 +02:00
jmartin
4dedd9b87a
fix(web): withOpacity à la place de withValues (Flutter 3.19 / dart2js)
...
Made-with: Cursor
2026-04-12 21:11:06 +02:00
jmartin
518b3f84df
Revert "chore(master): alignement post-squash avec develop (téléphone, script Gitea)"
...
This reverts commit dc04e04598 .
2026-04-11 18:08:36 +02:00
jmartin
dc04e04598
chore(master): alignement post-squash avec develop (téléphone, script Gitea)
...
Made-with: Cursor
2026-04-11 18:08:04 +02:00
jmartin
fdd1e06e77
[ #101 ] [Frontend] Inscription parent — API, soumission et validation
...
Squash merge de develop vers master.
Livrables principaux (ticket #101 et mise au point associée) :
- Branchement du formulaire d'inscription parent sur POST /api/v1/auth/register/parent
- Payload DTO (parents, enfants, photos base64, CGU) et services Auth
- Parcours gestionnaire : cartes dossiers, wizard validation famille, images authentifiées
- Scripts d'inscription test (Martin, Durand/Rousseau, Lecomte) ; .gitignore .cursor/
Inclut également les ajustements develop fusionnés dans ce lot (inscription AM, champs relais, etc.).
Closes #101
Made-with: Cursor
2026-04-11 18:07:24 +02:00
jmartin
f1c9db2e7b
fix(admin): vignettes enfants du wizard validation (cover, sans fond blanc)
...
- BoxFit.cover pour remplir le cadre photo
- Suppression du fond blanc du slot, rayon factorisé
Made-with: Cursor
2026-04-11 18:02:52 +02:00
jmartin
ccfcfa3287
chore: ignorer le dossier .cursor (config IDE Cursor)
...
Made-with: Cursor
2026-04-11 18:02:52 +02:00
jmartin
dbca12d5d1
scripts: ajout des inscriptions parent test (Martin, Durand/Rousseau, Lecomte)
...
Scripts Node POST /api/v1/auth/register/parent alignés sur docs/test-data et le seed, avec photos ressources/Photos (réduction JPEG via sharp-cli pour Durand/Rousseau).
Made-with: Cursor
2026-04-11 18:02:52 +02:00
jmartin
4fe29799cd
fix(api): CORS + CORP sur réponses statiques /uploads (Flutter web)
...
- enableCors avant les statics
- Access-Control-Allow-Origin * + Cross-Origin-Resource-Policy sur fichiers
- OPTIONS préflight pour /uploads et /api/v1/uploads
Made-with: Cursor
2026-04-11 17:11:23 +02:00
jmartin
3bfdadd301
fix(front): images validation dossier, traces debug, baseUrl via Env
...
- ApiConfig.baseUrl dérivé de Env.apiBaseUrl (alignement API / origine médias).
- AuthNetworkImage : uploads publics sans Bearer (CORS web) ; log erreurs en debug.
- debugPrint kDebugMode : GET dossier, EnfantDossier.fromJson, absoluteMediaUrl, carte enfant.
- ParentDossier id depuis user_id ; fallbacks présentation / photo.
Made-with: Cursor
2026-04-11 17:08:34 +02:00
jmartin
09289882d0
fix: photos admin — URL via /api/v1/uploads + static Express
...
- Nest: servir le volume uploads aussi sous /api/v1/uploads (Traefik /api)
- Flutter: _fullPhotoUrl = base API + chemin /uploads/... (plus d’origine site seul)
- EnfantDossier: tolérer photoUrl camelCase
Made-with: Cursor
2026-04-11 16:47:29 +02:00
jmartin
e7f0037ac3
fix: motivation dossier famille à l’inscription + servir /uploads + Traefik
...
- Inscription parent: créer dossier_famille + dossier_famille_enfants (presentation_dossier)
- Nest: useStaticAssets sur le volume uploads (chemins /uploads/photos/…)
- docker-compose: route Traefik PathPrefix /uploads → API (priorité 18)
- Front: ParentDossier.id depuis user_id (aligné API)
Made-with: Cursor
2026-04-11 16:37:44 +02:00
jmartin
4969be5809
feat(inscription): payload enfant/photo et limite JSON 15 Mo côté API
...
- Express/Nest : body parser json et urlencoded à 15 Mo pour les photos base64.
- Front : envoi d’inscription parent (authService, payload, étape 3).
Made-with: Cursor
2026-04-11 16:36:15 +02:00
jmartin
d7ccbfbe35
feat(api): dossier famille — photo_url et consent_photo par enfant
...
- DossierFamilleEnfantDto: champs optionnels Swagger
- Mapping getDossierFamilleByNumero + fallback dossier_famille_enfants
- GET dossiers/:num (type family) enrichi via délégation existante
Made-with: Cursor
2026-04-11 16:31:11 +02:00
jmartin
2b3128ce4a
fix(api): inscription parent — body 15mb, uploads persistants, 409 si unique PG
...
- NestExpressApplication + useBodyParser json/urlencoded 15mb
- UPLOAD_PHOTOS_DIR: résolution chemin absolu/relatif + doc .env.example / proxy
- docker-compose: volume backend_uploads + UPLOAD_PHOTOS_DIR par défaut
- Map erreur PostgreSQL 23505 → ConflictException (parent + AM)
- Logs Nest si échec SMTP après inscription (email déjà géré)
Made-with: Cursor
2026-04-10 17:40:23 +02:00
jmartin
077a1ca3ed
fix(bdd): genre_type inclut Autre (alignement API inscription enfants)
...
Made-with: Cursor
2026-03-31 00:08:41 +02:00
jmartin
bf05b1d7d7
feat(inscription): email accusé réception, photos enfants, formulaires identité
...
- Backend: mail après inscription parent avec n° dossier, UPLOAD_PHOTOS_DIR, réponse API
- Frontend: imageBytes + payload photo, utils email/code postal/téléphone, champs dédiés
- Formulaires admin, login (focus), personal_info, child_card, custom_app_text_field
Made-with: Cursor
2026-03-31 00:04:38 +02:00
jmartin
110240b682
feat(frontend): inscription — UI cartes enfant, formatage noms, focus Tab
...
- Formulaire infos perso : ordre de tabulation explicite, Checkbox Material
pour le consentement photo, formatage nom/prénom/ville à la perte de focus
et à la soumission (name_format_utils).
- Carte enfant : cadre photo, croix, ombres, consentement ; formatage
prénom/nom enfant ; normalisation avant passage étape 4.
- Asset photo_frame.png ; HoverReliefWidget clipBehavior.
- Ajustements payload / modèle / étapes inscription liés au parcours.
Made-with: Cursor
2026-03-28 20:40:27 +01:00
jmartin
a723412043
revert(ui): ChildCardWidget identique au commit b18d5c8 (7 fév. 2026)
...
- Restauration fichier tel que dans feat(frontend): Refonte multi-modes (#78 )
- Retrait onGenreChanged (step3/step5) ; genre API: défaut Autre si non renseigné
jusqu’à nouvelle UI genre
Made-with: Cursor
2026-03-28 18:22:22 +01:00
jmartin
1e21fe25f3
fix(front): genre enfant — pastilles au lieu du dropdown sur fond beige
...
Le commit cd2bf63 ajoutait un Dropdown dans un bloc bg_beige, lourd sur
les cartes aquarellées. Remplacement par trois choix tactiles discrets
(Garçon / Fille / Autre), espacements alignés sur prénom/nom.
Made-with: Cursor
2026-03-28 18:15:02 +01:00
jmartin
cd2bf63b8a
feat(front): inscription parent — genre obligatoire H/F/Autre ( #101 )
...
- ChildData.genre + copyWith ; liste déroulante sur la carte enfant
- Validation et payload API alignés sur GenreType
- Étape 3 : mises à jour via copyWith (préservation du genre)
Made-with: Cursor
2026-03-28 18:08:32 +01:00
jmartin
de60a001cc
feat(front): inscription parent — soumission réelle vers POST /auth/register/parent ( #101 )
...
- ParentRegistrationPayload : validation client et mapping UserRegistrationData → JSON API
- AuthService.registerParent
- Étape 5 : appel API, chargement, erreurs en dialogue, succès inchangé puis /login
Made-with: Cursor
2026-03-28 18:07:52 +01:00
jmartin
481fa66630
chore(front): supprimer le préremplissage et les données aléatoires à l’inscription
...
- Parcours AM : plus de jeu de test Marie DUBOIS ni photo factice
- Parcours parent : plus de DataGenerator ; enfants vides à l’ajout
- Suppression de data_generator.dart (inutilisé)
Made-with: Cursor
2026-03-28 18:07:46 +01:00
jmartin
cde676c4f9
feat: alignement master sur develop (squash)
...
- Dossiers unifiés #119 , pending-families enrichi, validation admin (wizards)
- Front: modèles dossier_unifie / pending_family, NIR, auth
- Migrations dossier_famille, scripts de test API
- Résolution conflits: parents.*, docs tickets, auth_service, nir_utils
Made-with: Cursor
2026-03-26 00:20:47 +01:00
jmartin
0a07fade40
docs: liste tickets — fermeture #106 #107 #109 #119 (Gitea)
...
Made-with: Cursor
2026-03-26 00:20:32 +01:00
jmartin
0e8a999e41
Merge branch 'feature/107-onglet-a-valider' into develop
...
Conflits pending-families : conservation du DTO/SQL develop (date_soumission, emails, parents).
Made-with: Cursor
2026-03-26 00:16:53 +01:00
jmartin
2e02f60601
feat(admin): onglet À valider, dossier unifié et modales de validation
...
- Onglet « À valider » (AM + familles), pending-families et détail dossier par numéro.
- Wizards validation AM et famille, modale commune, chargement via GET /dossiers/:num.
- UI : cartes enfants, photo AM (cadre uniforme, ratio), NIR affiché formaté (espaces autour du tiret).
- Backend : DTO / routes parents pending ; scripts de test et mise à jour issue Gitea.
Tickets #107 , #119 .
Made-with: Cursor
2026-03-26 00:15:18 +01:00
jmartin
0e6e473e84
feat: pending-families ajoute parents[] (email/tel/ville/cp) + ordre stable
...
Made-with: Cursor
2026-03-25 10:58:29 +01:00
jmartin
cc3639b19a
fix: dossier AM expose texte_motivation (alias biographie) pour le front
...
Made-with: Cursor
2026-03-23 23:43:00 +01:00
jmartin
cf9cd495bf
feat: enrichissement GET pending-families (date_soumission, nombre_enfants, emails)
...
Made-with: Cursor
2026-03-23 23:37:50 +01:00
jmartin
76ba28a7ce
fix: dossier famille - un seul texte_motivation, plus de tableau presentation
...
Made-with: Cursor
2026-03-18 01:56:58 +01:00
jmartin
1772744c81
feat( #119 ): dossier famille = 1 par famille, N enfants; retrait repas/type_contrat/budget; adresse dans API parents
...
Made-with: Cursor
2026-03-18 01:52:28 +01:00
jmartin
5465117238
fix: renvoyer le genre des enfants dans le dossier famille (GET dossiers/parents)
...
Made-with: Cursor
2026-03-18 01:35:27 +01:00
jmartin
6e2343087e
feat( #119 ): GET /dossiers/:numeroDossier unifié AM ou famille (type + dossier)
...
Made-with: Cursor
2026-03-17 23:11:53 +01:00
jmartin
f6fabc521e
feat( #119 ): GET /parents/dossier-famille/:numeroDossier - dossier famille complet (admin/gestionnaire)
...
Made-with: Cursor
2026-03-17 22:40:48 +01:00
jmartin
5390276ecd
fix: ParentsModule - import JwtModule pour AuthGuard (évite restart loop au déploiement)
...
Made-with: Cursor
2026-03-13 16:49:39 +01:00
jmartin
7e9306de01
fix: GET /parents/pending-families 500 + #113 doublons inscription
...
- parents.service: normaliser parentIds (array ou string PG) pour éviter 500
- auth.service: doublons à l'inscription (#113 ) - parent/co-parent même email, NIR et numéro agrément AM
- docs: mise à jour statuts tickets
Made-with: Cursor
2026-03-13 16:30:12 +01:00
jmartin
d832559027
Merge branch 'develop' of https://git.ptits-pas.fr/jmartin/petitspas into develop
2026-03-13 10:52:28 +01:00
jmartin
54ad1d2aa1
docs: retirer référence aux scripts Gitea validation supprimés
...
Made-with: Cursor
2026-03-13 10:52:15 +01:00
jmartin
060e610a75
Merge branch 'develop' (squash) – Reprise après refus #111
...
Made-with: Cursor
2026-03-12 23:06:04 +01:00
jmartin
86b28abe51
feat( #111 ): Reprise après refus – backend
...
- GET /auth/reprise-dossier?token= : dossier pour préremplir (token seul)
- PATCH /auth/reprise-resoumettre : token + champs modifiables → en_attente, token invalidé
- POST /auth/reprise-identify : numero_dossier + email → type + token
- UserService: findByTokenReprise, resoumettreReprise, findByNumeroDossierAndEmailForReprise
Made-with: Cursor
2026-03-12 23:04:45 +01:00
jmartin
7e32eef0a7
Merge branch 'develop' (squash) – Refus sans suppression #110
...
Made-with: Cursor
2026-03-12 22:57:45 +01:00
jmartin
86d8189038
feat( #110 ): Refus sans suppression – token reprise + email
...
- Colonnes token_reprise, token_reprise_expire_le (migration + BDD.sql)
- refuser: génère token (7j), enregistre, trace validations, envoie email (template refus + lien reprise)
- MailService.sendRefusEmail ; échec email ne bloque pas le refus
Made-with: Cursor
2026-03-12 22:56:27 +01:00
jmartin
aa4e240ad1
Merge branch 'develop' (squash) – Validation dossier famille #108
...
Made-with: Cursor
2026-03-12 22:47:41 +01:00
jmartin
dbcb3611d4
feat( #108 ): Validation dossier famille – POST /parents/:parentId/valider-dossier
...
- getFamilyUserIds(parentId) : tous les user_id de la famille (co_parent + enfants partagés)
- Valide en une fois tous les comptes en_attente/refuse de la famille (validateUser)
- Réponse : liste des Users validés
Made-with: Cursor
2026-03-12 22:46:17 +01:00
jmartin
a92447aaf0
Merge branch 'develop' (squash) – Liste familles en attente #106
...
Made-with: Cursor
2026-03-12 22:37:41 +01:00
jmartin
1fa70f4052
feat( #106 ): Liste familles en attente – GET /parents/pending-families
...
- Une entrée par famille (co_parent + enfants partagés, même logique que backfill #103 )
- libelle, parentIds, numero_dossier ; filtre statut en_attente
- AuthGuard + RolesGuard sur controller parents
Made-with: Cursor
2026-03-12 22:36:16 +01:00
jmartin
94c8a0d97a
Merge branch 'develop' (squash) – Statut refusé #105 , script Gitea fallback ~/.bashrc
...
Made-with: Cursor
2026-03-12 22:28:13 +01:00
jmartin
393a527c37
feat( #105 ): Statut « refusé » – enum, migration, pending/reprise, refuser, connexion
...
- Enum statut_utilisateur_type + valeur 'refuse' (migration + BDD.sql)
- GET /users/reprise, PATCH /users/:id/refuser (refus_compte en validations)
- PATCH /users/:id/valider accepte en_attente et refuse (reprise)
- Connexion refusée si statut refuse
Made-with: Cursor
2026-03-12 22:21:12 +01:00
jmartin
af489f39b4
Merge branch 'develop' (squash) – Numéro de dossier #103 et autres avancements
...
Made-with: Cursor
2026-03-12 22:14:21 +01:00
jmartin
dfd58d9b6c
feat( #103 ): Numéro de dossier – backend
...
- Colonne numero_dossier (utilisateurs, assistantes_maternelles, parents)
- Table numero_dossier_sequence, format AAAA-NNNNNN, séquence par année
- Génération à la soumission AM et parent (famille)
- Backfill existants (famille = co_parent ou enfants partagés)
- API PATCH /users/:id/numero-dossier (gestionnaire/admin)
- Garde-fous: max 2 parents/dossier, pas de mélange AM/parent
Made-with: Cursor
2026-03-12 22:12:33 +01:00
jmartin
34a36b069e
docs: liste tickets complète (23_LISTE-TICKETS) + script gitea-close-issue
...
Made-with: Cursor
2026-03-11 22:19:33 +01:00
jmartin
aefe590d2c
Squash merge develop into master (câblage inscription AM #91 )
...
Made-with: Cursor
2026-02-26 21:21:17 +01:00
jmartin
2fa546e6b7
fix(inscription AM): format NIR Corse + extraction message erreur API
...
Made-with: Cursor
2026-02-26 21:02:40 +01:00
jmartin
8636b16659
feat(inscription AM): câblage API step 4 + AuthService.registerAM avec nir_utils
...
Made-with: Cursor
2026-02-26 20:52:37 +01:00
jmartin
7e17e5ff8d
Merge branch 'feature/91-cablage-inscription-am' into develop
...
Made-with: Cursor
2026-02-26 19:11:38 +01:00
jmartin
f749484731
test(inscription AM): Préremplissage données de test Marie DUBOIS (squash develop)
...
Étapes 1 à 3 du formulaire d'inscription AM : données du jeu de test
officiel (03_seed_test_data.sql) au lieu du générateur aléatoire.
Made-with: Cursor
2026-02-26 19:10:58 +01:00
jmartin
e8b6d906e6
Merge branch 'feature/prefill-am-marie-dubois' into develop
...
Made-with: Cursor
2026-02-26 19:10:47 +01:00
jmartin
ae0be04964
test(inscription AM): Préremplissage données de test Marie DUBOIS
...
Étapes 1 à 3 du formulaire d'inscription AM : remplacer les données
aléatoires par le jeu de test officiel (03_seed_test_data.sql).
Made-with: Cursor
2026-02-26 19:10:04 +01:00
jmartin
ca98821b3e
Merge develop into master (squash): ticket #102 NIR harmonisation
...
- Backend: DTO NIR 15 car 2A/2B, validation format+clé, warning cohérence
- BDD: nir_chiffre NOT NULL, migration pour bases existantes
- Seeds: 02 nir_chiffre, 03 Marie 2A / Fatima 99
- Frontend: nir_utils, nir_text_field, formulaire pro, mock inscription AM
Made-with: Cursor
2026-02-26 13:55:42 +01:00
jmartin
447f3d4137
fix( #102 ): 02_seed - ajouter nir_chiffre à l'INSERT assistantes_maternelles (NOT NULL)
...
Made-with: Cursor
2026-02-26 13:53:41 +01:00
jmartin
721f40599b
feat(frontend): NIR 15 car., formatage, validation, widget dédié ( #102 )
...
- nir_utils: normalizeNir, formatNir, validateNir (format + clé), Corse 2A/2B
- NirInputFormatter: formatage auto à la saisie (espaces + tiret)
- NirTextField: widget réutilisable pour champ NIR
- professional_info_form_screen: NIR 15 car., affichage formaté à l'init
- custom_app_text_field: paramètre inputFormatters
Refs: #102
Made-with: Cursor
2026-02-26 13:49:57 +01:00
jmartin
a9c6b9e15b
feat( #102 ): BDD nir_chiffre NOT NULL + migration pour bases existantes
...
Made-with: Cursor
2026-02-26 12:56:15 +01:00
jmartin
38c003ef6f
feat( #102 ): mock préremplissage AM étape 2 - NIR Marie Dubois 2A (Ajaccio)
...
Made-with: Cursor
2026-02-26 11:24:27 +01:00
jmartin
3dbddbb8c4
feat( #102 ): seed NIR Marie 2A (Corse Ajaccio), Fatima 99 (étranger), doc
...
Made-with: Cursor
2026-02-26 11:23:59 +01:00
jmartin
f46740c6ab
feat( #102 ): validation NIR (format + clé 2A/2B) + warning cohérence
...
Made-with: Cursor
2026-02-26 11:23:22 +01:00
jmartin
85bfef7a6b
feat( #102 ): DTO NIR - accepter 2A/2B Corse (15 caractères)
...
Made-with: Cursor
2026-02-26 11:21:45 +01:00
jmartin
b1a80f85c9
Squash merge develop into master (feat #25 API users/pending, dashboards, login)
...
Made-with: Cursor
2026-02-26 10:44:04 +01:00
jmartin
3c2ecdff7a
Merge branch 'feature/25-backend-pending-users' - feat( #25 ): API GET /users/pending
2026-02-26 10:43:09 +01:00
jmartin
8b83702bd2
feat( #25 ): API GET /users/pending - liste comptes en attente
...
- UserController: endpoint GET /users/pending (rôles SUPER_ADMIN, ADMINISTRATEUR, GESTIONNAIRE)
- UserService: findPendingUsers(role?) avec filtre statut EN_ATTENTE
- GestionnairesService: retrait date_consentement_photo (non présent dans DTO)
Made-with: Cursor
2026-02-26 10:37:22 +01:00
jmartin
19b8be684f
test(inscription AM): Données de test Marie DUBOIS pour le parcours d'inscription
...
En vue du câblage de l'inscription AM sur l'API (#91 ), remplacement des
données aléatoires par le jeu de test officiel (Marie DUBOIS, seed
03_seed_test_data.sql / docs/test-data) dans les étapes 1 à 3 du
formulaire. Facilite les tests manuels et la recette.
- Étape 1 : identité (Marie DUBOIS, 25 Rue de la République, Bezons)
- Étape 2 : infos pro (NIR, agrément AGR-2019-095001, capacité 4)
- Étape 3 : texte de présentation (biographie du seed)
Autres mises à jour : scripts Gitea, doc tickets, dashboards.
Refs: #91
Made-with: Cursor
2026-02-26 10:30:40 +01:00
jmartin
e713c05da1
feat: Bandeau générique, dashboards et doc (squash develop, Closes #100 )
...
- Bandeau générique (DashboardBandeau) pour Parent, Admin, Gestionnaire, AM
- ParentDashboardScreen, AdminDashboardScreen, GestionnaireDashboardScreen, AM dashboard
- AppFooter responsive, scripts Gitea (create/list issues parent API)
- Doc: ticket #101 Inscription Parent API, mise à jour 23_LISTE-TICKETS
- User.fromJson robustesse (nullable id/email/role)
- Suppression dashboard_app_bar.dart au profit de dashboard_bandeau.dart
Refs: #100 , #101
Made-with: Cursor
2026-02-25 21:48:38 +01:00
jmartin
5950d85876
feat(frontend): Bandeau générique, footer et doc ( #100 )
...
- ParentDashboardScreen : utilisation de DashboardBandeau et AppFooter
- app_footer : footer responsive (desktop / mobile)
- docs/23_LISTE-TICKETS.md : mise à jour liste des tickets
- docs/POINT_TICKETS_FRONT_API.txt : point tickets frontend/API
- backend/scripts : create-gitea-issue-parent-api.js, list-gitea-issues.js
Refs: #100
Made-with: Cursor
2026-02-25 21:44:59 +01:00
jmartin and Cursor
4339e1e53d
feat(100): bandeau dashboard générique, icônes rôle/email, footer go_router, user fromJson défensif
...
- Bandeau générique DashboardBandeau (logo | onglets | capsule utilisateur)
- Capsule: icône rôle (admin/gestionnaire/parent/AM) + Prénom Nom + menu (email avec icône, Profil, Paramètres, Déconnexion)
- Migration admin, gestionnaire, parent, AM vers DashboardBandeau
- Écran AM (page blanche), route /am-dashboard
- Routes /privacy et /legal, footer avec context.push
- AppUser.fromJson: id/email/role null-safe
- Suppression DashboardAppBarAdmin et dashboard_app_bar.dart
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 19:50:53 +01:00
jmartin and Cursor
51d279e341
docs: fermeture ticket #44 (Dashboard Gestionnaire - Structure)
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 16:37:54 +01:00
jmartin and Cursor
fffe8cd202
merge: squash develop into master ( #44 Dashboard Gestionnaire - Structure)
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 16:37:15 +01:00
jmartin and Cursor
defa438edf
feat( #44 ): UserManagementPanel + masquer onglet Administrateurs (dashboard gestionnaire)
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 16:35:35 +01:00
jmartin and Cursor
e990d576cf
feat( #44 ): dashboard gestionnaire + redirection login rôle gestionnaire
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 16:20:59 +01:00
jmartin and Cursor
619e39219f
merge: squash develop into master (login autofill + clavier #98 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 12:00:51 +01:00
jmartin and Cursor
e8c6665a06
fix( #98 ): corriger la compatibilité Flutter du bouton image
...
Supprime le paramètre mouseCursor de TextButton.styleFrom (non supporté par la version Flutter du projet) et conserve le curseur pointeur via MouseRegion.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-25 11:10:35 +01:00
jmartin and Cursor
a4e6cfc50e
feat( #98 ): améliorer le login avec autofill natif et navigation clavier
...
Active l’autofill navigateur/OS sur le formulaire de connexion et complète l’accessibilité clavier (Tab jusqu’au bouton, Entrée sur le mot de passe) sans stockage local custom des identifiants.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 23:27:04 +01:00
jmartin and Cursor
6749f2025a
fix(backend): remove date_consentement_photo from gestionnaire update
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 23:15:29 +01:00
jmartin and Cursor
119edbcfb4
merge: squash develop into master
...
Intègre en un seul commit les évolutions récentes de develop vers master, incluant la modale admin/gestionnaire, les protections super admin, les ajustements API associés et la mise à jour documentaire des tickets/spec.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 22:58:40 +01:00
jmartin and Cursor
80d69a5463
docs: aligner tickets Gitea et figer la spec admin
...
Synchronise les statuts des tickets #93/#95/#96/#97 avec l'API Gitea et finalise la SSS-001 avec le contrat de gestion des comptes d'administration.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 22:55:22 +01:00