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
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
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
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
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
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
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
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 and Cursor
0579fda553
merge: intégrer feature/96-creation-admin-modale dans develop
...
Fusionne le ticket #96 avec résolution des conflits sur la modale partagée, les droits admin/super admin et l’harmonisation visuelle des listes utilisateurs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 22:36:58 +01:00
jmartin and Cursor
d66bdd04be
feat: admin creation modal and backend fixes for user updates ( #96 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 18:39:01 +01:00
jmartin and Cursor
d8572e7fd6
feat( #96 ): finaliser la modale admin/gestionnaire et les règles d’édition
...
Unifie la modale utilisateur pour création/édition admin et gestionnaire, fiabilise la saisie/normalisation (téléphone, nom/prénom) et corrige la mise à jour backend pour accepter le rattachement relais sans erreur 400.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 17:25:15 +01:00
jmartin and Cursor
bb92f010bd
feat( #35 ): unifier la modale gestionnaire en création et édition
...
Branche la modale sur l'action Modifier, supprime l'action dédiée de rattachement relais, ajoute la suppression avec confirmation et sécurise le dropdown relais en édition.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 00:19:32 +01:00
jmartin and Cursor
42bb872c41
feat( #35 ): créer un gestionnaire via modale avec sélection de relais
...
Implémente la création de gestionnaire directement depuis le dashboard admin avec formulaire validé, appel API dédié et rattachement optionnel à un relais depuis une combobox.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-24 00:08:31 +01:00
jmartin and Cursor
fbafef8f2c
feat( #95 ): implémenter la gestion Relais admin et le rattachement gestionnaire
...
Ajoute la section Paramètres territoriaux avec CRUD Relais, modale de saisie structurée, états visuels harmonisés, et rattachement d'un relais principal aux gestionnaires via l'API.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-21 20:06:17 +01:00
jmartin and Cursor
e4f7a35f0f
fix( #92 ): activer endpoint GET /gestionnaires (note backend)
...
- UserModule: importer GestionnairesModule
- GestionnairesModule: importer AuthModule (AuthGuard/JwtService)
- user_service: appeler /gestionnaires au lieu de /users + filtre
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 22:46:11 +01:00
jmartin and Cursor
8a6768b316
feat(dashboard-admin): connect admin dashboard to real API data (Ticket #92 )
...
- Frontend:
- Create UserService to handle user-related API calls (gestionnaires, parents, AMs, admins)
- Update AdminDashboardScreen to use dynamic widgets
- Implement dynamic management widgets:
- GestionnaireManagementWidget
- ParentManagementWidget
- AssistanteMaternelleManagementWidget
- AdminManagementWidget
- Add data models: ParentModel, AssistanteMaternelleModel
- Update AppUser model
- Update ApiConfig
- Backend:
- Update controllers (Parents, AMs, Gestionnaires, Users) to allow ADMINISTRATEUR role to list users
- Note: Gestionnaires endpoint is currently bypassed in frontend (using /users filter) due to module import issue (documented in docs/92_NOTE-BACKEND-GESTIONNAIRES.md)
- Docs:
- Add note about backend fix for Gestionnaires module
- Update .cursorrules to forbid worktrees
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 21:43:27 +01:00
jmartin and Cursor
c94f2cf0d5
feat( #90 ): API Inscription AM - POST /auth/register/am
...
- DTO RegisterAMCompletDto (identité, photo, infos pro, CGU)
- Endpoint POST /auth/register/am + inscrireAMComplet() (transaction User + AssistanteMaternelle)
- Photo base64, token création MDP, consentement photo
- Suppression legacy: route register/parent/legacy, registerParent(), RegisterParentDto
- Frontend: ApiConfig.registerAM pour ticket #91
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-16 00:05:23 +01:00
jmartin and Cursor
8e8c6d79b1
feat( #14 ): finalisation redirection et nettoyage
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-15 23:08:02 +01:00
jmartin and Cursor
31857ec891
docs( #14 ): note back config/setup + frontend parsing erreurs
...
- docs/14_NOTE-BACKEND-CONFIG-SETUP.md : modifs à faire côté back (UUID system)
- configuration_service : parsing défensif des réponses d'erreur (évite JSNull)
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-13 16:10:04 +01:00
jmartin and Cursor
1834eb8c79
feat(admin): panneau Paramètres - sauvegarde config + test SMTP
...
- Onglet Paramètres dans l'admin avec 3 sections (Email, Personnalisation, Avancé)
- Service ConfigurationService (GET config, PATCH bulk, POST test-smtp)
- Bouton Sauvegarder et bouton Tester SMTP (sauvegarde avant test)
- Endpoints api_config pour configuration
Closes #15
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-13 11:16:37 +01:00
jmartin and Cursor
18af5c9034
fix(auth): connexion admin - token snake_case, routes GoRouter, profil ( Closes #84 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-09 22:36:52 +01:00
jmartin
fe71fdf28e
feat( #47 ): Ajout de la modale de changement de mot de passe obligatoire
...
Implémentation complète du ticket #47 :
- Mise à jour de l'URL API vers app.ptits-pas.fr
- Ajout du champ changement_mdp_obligatoire au modèle AppUser
- Ajout des endpoints /auth/me et /auth/change-password-required
- Implémentation de la vraie logique de connexion dans AuthService
- Création de la modale ChangePasswordDialog non-dismissible
- Connexion du bouton de connexion avec gestion de la modale
- Ajout des routes admin-dashboard et parent-dashboard
La modale s'affiche automatiquement après connexion si
changement_mdp_obligatoire = true et bloque l'utilisateur jusqu'au
changement de mot de passe.
2026-01-27 16:30:15 +01:00
jmartin
cef197d133
Merge master into develop - Synchronisation des branches
...
Fusion des travaux :
- Backend complet (ConfigService, DocumentsLegaux, Auth, etc.)
- Frontend étapes inscription 1-2
- Infrastructure Docker
- Documentation technique
Résolution des conflits :
- Images déplacées vers frontend/assets/images/
- Dossier Archives supprimé
- Backend : version master conservée
- Frontend : améliorations UI de develop conservées
2026-01-27 14:56:49 +01:00
jmartin
9cb4162165
feat: Intégration du frontend Flutter depuis YNOV
...
- Framework: Flutter web
- Pages: Login, inscription, dashboards
- Services: API client, authentification, gestion d'état
- Intégration avec backend NestJS
- Dockerfile pour déploiement web
2025-11-24 15:44:15 +01:00
Julien Martin
5156f4fefb
feat: ajout du parcours complet d’inscription parent avec UI harmonisée et gestion centralisée des données
2025-05-12 16:42:24 +02:00
Julien Martin
bbdacd68aa
feat(auth): Supprime l'ancien workflow d'inscription parent et ajoute les assets pour le nouveau workflow
2025-05-05 12:51:32 +02:00
Julien Martin
d3663a28ad
feat: mise en place du projet et création de la page de login
2025-05-02 21:30:31 +02:00
Julien Martin
c8b8ad9318
feat(login): ajout du lien 'Mot de passe oublié ?' dans l'interface de connexion\n\n- Ajout du lien dans la page de connexion\n- Mise à jour du document d'évolution avec les spécifications de récupération de compte\n- Ajustements mineurs dans l'interface
2025-05-02 19:44:52 +02:00
Julien Martin
9321430818
feat(init): mise en place initiale de P'titsPas - Documentation: CDC complet, sécifications techniques SSS-001, charte graphique, évolutions - Backend: structure NestJS avec controllers/services/routes, config Prisma - Frontend: app Flutter avec structure MVC, thème et Firebase - Changement de nom: SuperNounou devient P'titsPas
2025-04-30 10:38:47 +02:00