From e81cd5ffa46caddf660d7c77b96984336c3a07a1 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sat, 22 Aug 2026 17:29:03 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20filtre=20les=20d=C3=A9penses=20sur=20pl?= =?UTF-8?q?usieurs=20fournisseurs=20et=20sur=20l'absence=20de=20tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le filtre fournisseur était une recherche de sous-chaîne : impossible de comparer deux fournisseurs, et « PPR » ramenait ses homonymes au passage. Il devient une sélection multiple exacte, prise dans un menu déroulant filtrable au clavier (SelectionMultiple, générique et réutilisable). La liste vient de /api/fournisseurs, remise en ordre alphabétique — l'API la trie par montant, ce qui se lit bien dans un classement mais rend introuvable un fournisseur qu'on cherche à l'œil. Côté API, `fournisseur` devient répétable et s'entend comme un OU exact. Le filtre tag, lui, ne savait pas demander « ce qui n'est pas encore tagué » — c'est pourtant la question qui amorce le travail de tagging. `tag_id=0` le demande, et l'option « Sans tag » l'ouvre depuis la page. Au passage, les deux endpoints dupliquaient leurs filtres : ils partagent désormais _appliquer_filtres, pour que les totaux du résumé ne puissent plus porter sur d'autres lignes que la table. Co-Authored-By: Claude Opus 5 --- frontend/src/components/SelectionMultiple.vue | 197 ++++++++++++++++++ .../src/components/analytics/FilterPanel.vue | 64 ++++-- frontend/src/pages/AnalyticsPage.vue | 5 +- frontend/tests/selectionMultiple.test.js | 49 +++++ src/plesna_gerance/api/routes/analytics.py | 109 ++++++---- tests/test_analytics_filtres.py | 131 ++++++++++++ 6 files changed, 500 insertions(+), 55 deletions(-) create mode 100644 frontend/src/components/SelectionMultiple.vue create mode 100644 frontend/tests/selectionMultiple.test.js create mode 100644 tests/test_analytics_filtres.py diff --git a/frontend/src/components/SelectionMultiple.vue b/frontend/src/components/SelectionMultiple.vue new file mode 100644 index 0000000..99d79c5 --- /dev/null +++ b/frontend/src/components/SelectionMultiple.vue @@ -0,0 +1,197 @@ + + + diff --git a/frontend/src/components/analytics/FilterPanel.vue b/frontend/src/components/analytics/FilterPanel.vue index bde62a7..ccd349e 100644 --- a/frontend/src/components/analytics/FilterPanel.vue +++ b/frontend/src/components/analytics/FilterPanel.vue @@ -1,5 +1,7 @@