From 7e504bee729bd0c5be684a3aef11aef71e7cd1e6 Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Mon, 21 Sep 2026 14:41:56 +0200 Subject: [PATCH] docs(frontend): documente la vue recommandations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Route, paramètres ?site= et ?alert=, jointure côté client et sa raison (pas de site_id sur une recommandation, aucun filtre sur GET /recommendations, /alerts non paginé), génération réservée aux admins, points d'entrée. --- docs/architecture/30-frontend.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/architecture/30-frontend.md b/docs/architecture/30-frontend.md index 14a7012..53147b6 100644 --- a/docs/architecture/30-frontend.md +++ b/docs/architecture/30-frontend.md @@ -146,6 +146,29 @@ Compose. Conventions et gabarits : [`apps/frontend/TESTING.md`](../../apps/frontend/TESTING.md). +## Recommandations + +Statut : `Fait`. La vue `/recommendations` (`features/recommendations`, derrière `authGuard`, tous +rôles) présente les recommandations du moteur de règles groupées par alerte, du plus récent au plus +ancien, avec le contexte de l'alerte (sévérité, type, site, horodatage, message) puis chaque action, +son explication et la règle qui l'a produite. + +- **Jointure côté client.** Une recommandation ne porte que `alert_id`, jamais `site_id`, et + `GET /recommendations` n'a aucun filtre. `app-recommendation-list` (`shared/components/`) charge + donc en parallèle `GET /alerts` (filtré par `site_id` quand un site est fixé) et + `GET /recommendations`, puis les joint par `alert_id` (`joinByAlert`, fonction pure testée à + part). Les recommandations dont l'alerte n'est pas dans le jeu chargé sont ignorées : c'est ainsi + que le filtre site s'applique. `/alerts` n'étant pas paginé, un seul appel suffit. +- **Paramètres d'URL.** `?site=` présélectionne le filtre site ; `?alert=` + réduit la vue à une alerte et la met en évidence (entier strictement positif, sinon ignoré). +- **Génération.** Le bouton « Générer les recommandations » n'apparaît que pour le rôle `admin` + (`POST /recommendations/generate?site_id=`, réservé admin côté API) et affiche le bilan renvoyé + (créées, déjà présentes, alertes examinées) avant de recharger la liste. La voie normale reste le + DAG Airflow `alertes` ([ADR 0008](../adr/0008-airflow-execute-le-code-du-backend.md)). +- **Entrées.** Lien « Recommandations » dans l'en-tête du tableau de bord ; section + « Recommandations » sur la vue détail d'un site (liste restreinte au site, lien vers la vue + complète préfiltrée). + ## Questions ouvertes - **Gestion d'état** : les signaux suffisent aujourd'hui, la question se reposera quand plusieurs