From e678399fe7d08e06f73ccb54fccd3ad97dadcc70 Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Fri, 3 Jul 2026 09:07:27 +0200 Subject: [PATCH] =?UTF-8?q?Pr=C3=A9ciser=20la=20pagination=20native=20(20/?= =?UTF-8?q?page)=20du=20tableau=20/admin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../specs/2026-07-03-admin-ui-design.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/superpowers/specs/2026-07-03-admin-ui-design.md b/docs/superpowers/specs/2026-07-03-admin-ui-design.md index 0fc00c1..0ce7ce9 100644 --- a/docs/superpowers/specs/2026-07-03-admin-ui-design.md +++ b/docs/superpowers/specs/2026-07-03-admin-ui-design.md @@ -146,12 +146,12 @@ def list_actions(limit: int = 200) -> list[sqlite3.Row]: ... ### `/admin` (liste) - Garde d'accès en tête de `layout()`. -- `dash_table.DataTable(filter_action="native", sort_action="native", ...)` - alimenté par `list_users()` — filtrage/tri par colonne entièrement côté - navigateur (pas de callback serveur), à la différence de `/tableau` dont le - `filter_action="custom"` (`src/pages/tableau.py:74`) n'existe que pour - déléguer le filtrage à DuckDB sur ~1,5M lignes ; ici quelques centaines de - lignes au plus, le mode natif suffit. +- `dash_table.DataTable(filter_action="native", sort_action="native", page_action="native", page_size=20, ...)` alimenté par `list_users()` — + filtrage/tri/pagination entièrement côté navigateur (pas de callback + serveur), à la différence de `/tableau` dont le `filter_action="custom"` + (`src/pages/tableau.py:74`) n'existe que pour déléguer le filtrage à DuckDB + sur ~1,5M lignes ; ici quelques centaines de lignes au plus, le mode natif + suffit pour les trois (20 lignes par page). - Colonnes : email, email vérifié, plan courant, statut courant, créé le. - Lien "Voir" par ligne vers `/admin/user/`. - Lien vers `/admin/journal` dans l'en-tête de page. @@ -232,5 +232,7 @@ Nouveau dossier `tests/admin/`, calqué sur les conventions existantes : - Plusieurs administrateurs (`ADMIN_EMAIL` unique pour l'instant — passer à une liste serait un changement d'une ligne dans `is_admin()` si besoin futur). -- Pagination de `/admin` et `/admin/journal` au-delà des limites fixes - (1000 users, 200 actions) — à revoir si le volume le justifie. +- Pagination de `/admin/journal` (reste une liste plate limitée à 200 lignes) ; + et pagination de `/admin` au-delà de la limite fixe de `list_users()` + (1000 users) — la pagination native ne pagine que les lignes déjà chargées, + pas la requête SQL ; à revoir si le volume le justifie.