jmartin
699d163c6a
feat: documents légaux upload stable ( #126 )
...
Squash develop: correction FK televersePar, droits Docker / volume
/app/documents/legaux pour l’upload PDF admin.
Made-with: Cursor
2026-04-17 17:35:32 +02:00
jmartin
d91caef0c5
merge(master): intégration develop — ticket #50 , documents légaux et validation CGU
...
Squash merge de la branche develop dans master : un seul commit sur master pour regrouper la livraison liée au ticket #50 (affichage dynamique des CGU et de la politique de confidentialité à l'inscription) ainsi que la documentation et les ajustements associés.
Frontend (P'titsPas) : modale de validation bloquante avec onglets CGU / confidentialité, chargement des PDF depuis l'API des documents légaux actifs, affichage via pdfx (PdfViewPinch et barre de progression latérale sur le web, repli PdfView sous Windows). Branchement dans le flux d'inscription (écran de présentation), enrichissement du UserService et correction des chemins média pour les URL absolues.
Documentation: jeux de fichiers juridiques (markdown et PDF de référence), réorganisation (dossier docs/juridique, archives, renommage du briefing), mises à jour index, liste de tickets et décisions projet. Scripts et métadonnées mineures (Gitea, pubspec, index web).
Made-with: Cursor
2026-04-17 17:33:47 +02:00
jmartin
241ce36b85
merge: doc tickets #24/#43 depuis develop
2026-04-16 22:56:47 +02:00
jmartin
b0594c32e7
docs(tickets): #24 livré backend, #43 alignement API verify-token/create-password
...
Made-with: Cursor
2026-04-16 22:56:42 +02:00
jmartin
81ac8860f1
feat(auth): durcir la création du mot de passe via token
...
Squash de develop vers master pour intégrer verify-token/create-password avec TTL strict, usage unique atomique et invalidation explicite du token.
Made-with: Cursor
2026-04-16 11:33:49 +02:00
jmartin
8105c01501
Merge branch 'feature/123-durcissement-token-creation-mdp' into develop
2026-04-16 11:30:09 +02:00
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