BUG: Recherche globale — /events?q=… ignoré par EventsPage (aucun filtrage) #40

Closed
opened 2026-08-10 21:37:40 +02:00 by nonobis · 1 comment
Owner

🎯 Contexte

La recherche globale du MainLayout envoie l'utilisateur vers /events?q=.... La page d'événements ignore la query string : la recherche ne filtre rien, l'utilisateur croit avoir cherché mais voit tous les événements.

🔍 Observé

MainLayout.DoSearch() (L238-260) → Navigation.NavigateTo($"/events?q={Uri.EscapeDataString(q)}"). EventsPage.LoadEvents() (L96-109) appelle Api.GetEventsAsync(null, null, 1) sans lire NavigationManager.Uri → résultats complets, non filtrés.

❌ Attendu

La page lit q (et les futurs filtres type/période/site), appelle l'API avec le paramètre de recherche, et affiche un état vide explicite (« Aucun résultat pour “xxx” » + action Ajuster la recherche) si rien ne matche.

🧪 Reproduction

  1. Rechercher « personne » dans la barre globale → redirection /events?q=personne.
  2. La liste affiche tous les événements (aucun filtrage) — constat visuel immédiat.

💥 Impact

Fonctionnalité de recherche trompeuse (l'utilisateur la croit défaillante ou la page vide), charge cognitive, écart avec la spec Phase 22 (recherche/filtres).

🛠 Correctif

  1. Lire q (et les filtres) depuis la query string dans OnInitializedAsync / OnParametersSetAsync.
  2. Exposer le paramètre de recherche côté HeimdallApiClient.GetEventsAsync (query string de l'API backend).
  3. Empty state actionnable quand la recherche ne matche rien.
  4. Tests bUnit : navigation avec ?q=personne → API appelée avec le filtre, liste filtrée.

📁 Fichiers concernés (estimés)

  • src/Heimdall.Web/Components/Pages/EventsPage.razor
  • src/Heimdall.Web/Services/HeimdallApiClient.cs
  • tests/Heimdall.Web.Tests/
## 🎯 Contexte La recherche globale du `MainLayout` envoie l'utilisateur vers `/events?q=...`. La page d'événements **ignore la query string** : la recherche ne filtre rien, l'utilisateur croit avoir cherché mais voit tous les événements. ## 🔍 Observé `MainLayout.DoSearch()` (L238-260) → `Navigation.NavigateTo($"/events?q={Uri.EscapeDataString(q)}")`. `EventsPage.LoadEvents()` (L96-109) appelle `Api.GetEventsAsync(null, null, 1)` **sans lire `NavigationManager.Uri`** → résultats complets, non filtrés. ## ❌ Attendu La page lit `q` (et les futurs filtres type/période/site), appelle l'API avec le paramètre de recherche, et affiche un état vide explicite (« Aucun résultat pour “xxx” » + action Ajuster la recherche) si rien ne matche. ## 🧪 Reproduction 1. Rechercher « personne » dans la barre globale → redirection `/events?q=personne`. 2. La liste affiche tous les événements (aucun filtrage) — constat visuel immédiat. ## 💥 Impact Fonctionnalité de recherche trompeuse (l'utilisateur la croit défaillante ou la page vide), charge cognitive, écart avec la spec Phase 22 (recherche/filtres). ## 🛠 Correctif 1. Lire `q` (et les filtres) depuis la query string dans `OnInitializedAsync` / `OnParametersSetAsync`. 2. Exposer le paramètre de recherche côté `HeimdallApiClient.GetEventsAsync` (query string de l'API backend). 3. Empty state actionnable quand la recherche ne matche rien. 4. Tests bUnit : navigation avec `?q=personne` → API appelée avec le filtre, liste filtrée. ## 📁 Fichiers concernés (estimés) - `src/Heimdall.Web/Components/Pages/EventsPage.razor` - `src/Heimdall.Web/Services/HeimdallApiClient.cs` - `tests/Heimdall.Web.Tests/`
Author
Owner

Corrigé et poussé (commits e0482d3, 63f7375 — hook auto-commit). Tests bUnit + Application verts.

Corrigé et poussé (commits e0482d3, 63f7375 — hook auto-commit). Tests bUnit + Application verts.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#40
No description provided.