Commit Graph
100 Commits
Author SHA1 Message Date
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 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 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 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 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 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 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 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 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
jmartinandCursor 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
jmartinandCursor 51d279e341 docs: fermeture ticket #44 (Dashboard Gestionnaire - Structure)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:37:54 +01:00
jmartinandCursor 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
jmartinandCursor defa438edf feat(#44): UserManagementPanel + masquer onglet Administrateurs (dashboard gestionnaire)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:35:35 +01:00
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor d14550a1cf feat(#96): harmoniser les icones de rôles en liste et modale
Uniformise l'identité visuelle des rôles (admin, super admin, gestionnaire, parent) avec icônes dédiées dans les listes et la modale, et affiche le téléphone dans la ligne admin en retirant le rôle redondant.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 22:31:23 +01:00
jmartinandCursor 2645cf1cd6 fix(#96): protéger le super admin en édition et suppression
Empêche la suppression d'un super administrateur et fige son identité (nom/prénom) côté API, avec alignement de la modale frontend pour masquer la suppression et verrouiller ces champs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 22:05:17 +01:00
jmartinandCursor e2ebc6a0a1 feat(#96): différencier la consultation admin et le mode édition
Affiche une identité visuelle dédiée pour les super admins et adapte l’action par ligne (oeil en lecture seule, crayon en édition) avec modale strictement read-only quand l’utilisateur n’a pas les droits.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 21:48:11 +01:00
jmartinandCursor 090ce6e13b docs: close ticket #96
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 18:45:37 +01:00
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 33cc7a9191 feat(backend): add create admin API and update docs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 11:07:14 +01:00
jmartinandCursor 222d7c702f docs: close ticket #97
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 11:04:21 +01:00
jmartinandCursor 537c46127f feat(backend): implement create admin API (ticket #97)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 11:03:53 +01:00
jmartinandCursor 10ebc77ba1 feat(backend): update gestionnaire creation logic and clean up DTOs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 10:26:24 +01:00
jmartinandCursor ed18dcab10 fix(backend): simplify gestionnaire creation and set default status to ACTIF
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 10:25:42 +01:00
jmartinandCursor f9477d3fbe feat: livrer ticket #35 et synchroniser les évolutions admin
Intègre en un seul commit les évolutions de develop, avec la création/édition/suppression de gestionnaires via modale unifiée (#35) et les correctifs associés sur la gestion admin.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 00:20:33 +01:00
jmartinandCursor 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
jmartinandCursor 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 4d37131301 Merge branch 'master' of https://git.ptits-pas.fr/jmartin/petitspas 2026-02-24 00:08:30 +01:00
jmartin fac3ae9baa Merge branch 'develop' of https://git.ptits-pas.fr/jmartin/petitspas into develop 2026-02-24 00:08:28 +01:00
jmartinandCursor 04b910295c fix(backend): fix UpdateGestionnaireDto compilation error (#35)
- Changed UpdateGestionnaireDto to inherit from PartialType(CreateUserDto) instead of CreateGestionnaireDto
- Ensures all fields (like date_consentement_photo) are available for update logic

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 23:53:21 +01:00
jmartinandCursor 5c28981ac5 fix(backend): fix UpdateGestionnaireDto inheritance to include all user fields
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 23:52:56 +01:00
jmartin 57ce5af0f4 Merge branch 'develop' of https://git.ptits-pas.fr/jmartin/petitspas into develop 2026-02-23 23:24:37 +01:00
jmartinandCursor c136f28f12 fix(backend): remove address from gestionnaire creation (#35)
- Updated CreateGestionnaireDto to omit address field
- Updated GestionnairesService to not map address on creation

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 23:21:26 +01:00
jmartin c1204a3050 fix(backend): merge fix/remove-adresse-gestionnaire 2026-02-23 23:19:50 +01:00
jmartinandCursor 9d4363b2a7 fix(backend): remove adresse from CreateGestionnaireDto and service
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 23:19:43 +01:00
jmartinandCursor 4b176b7083 feat: livrer ticket #93 et finaliser #17 avec gestion des Relais (#95)
Homogénéise le dashboard admin (onglets/listes/cartes/états) via composants réutilisables, finalise la création gestionnaire côté backend, et intègre la gestion des Relais avec rattachement gestionnaire.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 23:07:04 +01:00
jmartin af06ab1e66 Merge branch 'feature/93-homogeneisation-onglets-admin' into develop 2026-02-23 23:05:34 +01:00
jmartin aa148354ec Merge branch 'develop' of https://git.ptits-pas.fr/jmartin/petitspas into develop 2026-02-23 23:01:53 +01:00
jmartinandCursor 00c42c7bee feat(release): Backend Gestionnaire Creation (#17)
- Implemented MailModule and MailService
- Updated GestionnairesService to send welcome email
- Forced password change on first login for new gestionnaires

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 22:50:13 +01:00
jmartinandCursor a10dc5a195 docs: mark ticket #17 as completed
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 22:47:15 +01:00
jmartin 04c0b05aae feat(backend): merge feature/17-backend-create-gestionnaire 2026-02-23 22:46:36 +01:00
jmartinandCursor d0b730c8ab feat(backend): implement gestionnaire creation with email notification (#17)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 22:46:30 +01:00
jmartinandCursor bc8362bdb7 refactor(#93): extraire un widget UserList réutilisable
Centralise le pattern d'affichage des listes utilisateurs pour garantir une UI homogène entre gestionnaires, parents, assistantes maternelles et administrateurs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 17:59:03 +01:00
jmartinandCursor ac3178903d docs(#93): tracer l'évolution RBAC intra-RPE dans le CDC
Documente la future gouvernance par rôles au sein d'un même relais pour cadrer les évolutions ultérieures sans l'intégrer au périmètre des tickets backend/frontend actuels.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 17:32:09 +01:00
jmartinandCursor aec1990ec9 refactor(#93): uniformiser la ligne utilisateur et afficher Modifier au survol
Met le rendu des lignes sur une seule ligne (icone, nom, infos) et n’affiche l’action Modifier qu’au hover pour alléger visuellement les listes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 17:32:09 +01:00
jmartinandCursor 5da2ab9005 feat(#93): optimiser l’affichage Parents/AM avec modale de détails
Intègre un bandeau unique (onglets à gauche, recherche/filtre en pilule, bouton Ajouter à droite) et compacte les cartes Parents/AM avec ouverture d’une modale complète sur Modifier (croix, actions Modifier/Supprimer).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 17:32:03 +01:00
jmartinandCursor b2d6414fab refactor(#93): homogénéiser la présentation des onglets admin
Uniformise les 4 onglets de gestion admin avec des composants UI partagés (header, états de liste, carte utilisateur) pour garantir une expérience cohérente sans changement backend.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 17:31:50 +01:00
jmartinandCursor 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
jmartinandCursor 42c569e491 feat(release): Backend Relais Module (#94)
- Implemented Relais entity and CRUD API
- Added relation between Users (Gestionnaires) and Relais
- Updated database initialization script
- Documentation updates

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 14:40:32 +01:00
jmartinandCursor 135c7c2255 docs: mark ticket #94 as completed
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 14:39:17 +01:00
jmartin 9cce326046 feat(backend): merge feature/94-backend-relais (Relais module and database update) 2026-02-21 14:38:44 +01:00
jmartinandCursor d697083f54 feat(database): add Relais table to initialization script
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 14:34:45 +01:00
jmartinandCursor ae786426fd feat(backend): implement Relais module and relation with Gestionnaire (Ticket #94)
- Create Relais entity
- Create Relais module, controller, service with CRUD
- Update Users entity with ManyToOne relation to Relais
- Update GestionnairesService to handle relaisId

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 14:27:14 +01:00
jmartinandCursor d32d956b0e 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
  - Fix: Activate endpoint GET /gestionnaires (import GestionnairesModule in UserModule)

- Docs:
  - Add note about backend fix for Gestionnaires module
  - Update .cursorrules to forbid worktrees

- Seed:
  - Add test data seed script (reset-and-seed-db.sh)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:17:51 +01:00
jmartinandCursor 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
jmartinandCursor 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
jmartinandCursor 3892a8beab feat(#92): seed données de test dashboard admin + script reset BDD
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 17:27:26 +01:00
jmartinandCursor d39bc55be3 chore(backend): variables LOG_API_REQUESTS et CONFIG_ENCRYPTION_KEY dans docker-compose
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 17:26:19 +01:00
jmartinandCursor e0debf0394 docs: README BDD seed/reset, liste tickets #92, procédure API Gitea, statut application
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 17:26:13 +01:00
jmartin 1fca0cf132 Merge branch 'master' of https://git.ptits-pas.fr/jmartin/petitspas 2026-02-16 16:22:16 +01:00
jmartinandCursor b16dd4b55c merge: resolution conflits develop -> master (ticket #14)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 16:22:04 +01:00
jmartinandCursor 8682421453 Merge develop into master (squash)
- feat(#90): API Inscription AM - POST /auth/register/am
- Suppression legacy register/parent/legacy
- BDD assistantes_maternelles alignée entité
- Script test register AM

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 16:19:23 +01:00
jmartinandCursor 31bd8c3175 fix(#90): BDD assistantes_maternelles alignée entité + script test curl
- BDD.sql: ville_residence, annee_experience, specialite, date_agrement nullable
- scripts/test-register-am.sh pour tester POST /auth/register/am

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-16 16:18:06 +01:00
jmartinandCursor 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
jmartinandCursor dfe7daed14 Merge squash develop into master (incl. #14 première config setup/complete)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 23:20:15 +01:00
jmartin 111935e451 Merge branch 'feature/14-premiere-connexion-config' into develop (#14) 2026-02-15 23:20:00 +01:00
jmartinandCursor ae3292a7fc fix(backend): setup/complete accepte userId null pour éviter erreur UUID (#14)
- completeSetup: userId = req.user?.id ?? null (plus de fallback 'system')
- markSetupCompleted(userId: string | null), set(..., userId ?? undefined)
- Corrige 'invalid input syntax for type uuid: "system"' au clic Sauvegarder

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-15 23:19:18 +01:00