# Story 4.6: Recherche autocomplete pour lier un parent à un élève Status: ready-for-dev ## Story As an administrateur, I want to search for a parent by name or email when linking them to a student, so that I don't need to know or copy-paste a UUID. ## Acceptance Criteria 1. **AC1 - Champ de recherche autocomplete** : Le champ "ID du parent" dans la modale "Ajouter un parent/tuteur" est remplacé par un champ de recherche avec autocomplete. L'admin tape au moins 2 caractères et voit une liste de suggestions de parents correspondants (nom, prénom, email). 2. **AC2 - Résultats de recherche** : Les suggestions affichent le prénom, nom et email de chaque parent trouvé. Seuls les utilisateurs ayant le rôle `ROLE_PARENT` du même tenant sont proposés. 3. **AC3 - Sélection** : L'admin clique sur une suggestion pour la sélectionner. Le parent sélectionné est affiché clairement dans le champ (nom + email). L'admin peut le désélectionner pour chercher à nouveau. 4. **AC4 - Debounce** : Les requêtes de recherche sont debounced (300ms minimum) pour éviter de surcharger l'API. 5. **AC5 - Feedback** : Un indicateur de chargement s'affiche pendant la recherche. Un message "Aucun parent trouvé" s'affiche si la recherche ne retourne aucun résultat. ## Tasks / Subtasks - [ ] Task 1 - Backend : endpoint de recherche parents (AC: 1, 2) - [ ] Créer un endpoint GET `/api/parents/search?q={query}` qui retourne les utilisateurs ROLE_PARENT du tenant courant, filtrés par nom/prénom/email - [ ] Limiter les résultats à 10 suggestions maximum - [ ] Protéger l'endpoint avec les autorisations admin - [ ] Task 2 - Frontend : composant autocomplete (AC: 1, 3, 4, 5) - [ ] Remplacer le champ UUID dans `GuardianList.svelte` par un composant de recherche autocomplete - [ ] Implémenter le debounce (300ms) sur la saisie - [ ] Afficher les résultats dans un dropdown avec prénom, nom, email - [ ] Permettre la sélection/désélection d'un parent - [ ] Afficher le loading et l'état vide - [ ] Task 3 - Tests E2E (AC: 1-5) - [ ] Tester la recherche autocomplete sur la fiche élève - [ ] Tester la liaison parent-élève via le nouveau flux ## Dev Notes ### Composants existants à modifier - `frontend/src/lib/components/organisms/GuardianList/GuardianList.svelte` : remplacer le champ `` par un composant autocomplete - Backend : ajouter un provider/endpoint pour la recherche de parents ### Contexte Actuellement, pour lier un parent à un élève depuis la fiche élève (`/admin/students/{id}`), l'admin doit saisir manuellement l'UUID du compte parent. C'est inutilisable en pratique car personne ne connait les UUID par coeur. ### Contraintes - La recherche doit être scoped au tenant courant - Seuls les utilisateurs avec `ROLE_PARENT` doivent être retournés - Ne pas proposer les parents déjà liés à cet élève