Refactorisation des flux data des data tables #72

Closed
opened 2026-04-19 21:25:49 +02:00 by ColinMaudry · 2 comments
ColinMaudry commented 2026-04-19 21:25:49 +02:00 (Migrated from github.com)

Actuellement le flux est le suivant (pour Tableau) :

DuckDB => query_marches => LazyFrame => prepare_table_data (filtres, tri, pagination, etc.)

À chaque action sur le tableau, les données sont intégralement récupérées depuis la base de données, et c'est très lent. Il faut donc

  • mettre en place un état intermédiaire (LocalStorage) dès que des filtres sont appliqués
  • dissocier la pagination, le tri et le filtrage dans des callbacks différents pour n'effectuer que les opération nécessaires sur les données (⚠️ prepare_data_tables est aussi utilisé dans les vues acheteur/titulaire, donc probablement à refactorer aussi). Après chaque opération, les données sont mises à jour dans le local storage
Actuellement le flux est le suivant (pour Tableau) : DuckDB => `query_marches` => LazyFrame => `prepare_table_data` (filtres, tri, pagination, etc.) À chaque action sur le tableau, les données sont intégralement récupérées depuis la base de données, et c'est très lent. Il faut donc - [ ] mettre en place un état intermédiaire (LocalStorage) dès que des filtres sont appliqués - [ ] dissocier la pagination, le tri et le filtrage dans des callbacks différents pour n'effectuer que les opération nécessaires sur les données (⚠️ `prepare_data_tables` est aussi utilisé dans les vues acheteur/titulaire, donc probablement à refactorer aussi). Après chaque opération, les données sont mises à jour dans le local storage
ColinMaudry commented 2026-04-19 21:30:25 +02:00 (Migrated from github.com)

La performance est bonne dans les vues acheteur/titulaire, même avec 15k+ marchés. Donc on laisse prepare_table_data pour les vues et on refactorise juste Tableau.

La performance est bonne dans les vues acheteur/titulaire, même avec 15k+ marchés. Donc on laisse prepare_table_data pour les vues et on refactorise juste Tableau.
ColinMaudry commented 2026-04-19 22:04:59 +02:00 (Migrated from github.com)

Ne pas oublier :

  • Déplacer cache.py et les fonctions de création de cache key vers utils
  • Factoriser les opérations de remplacement des nulls, d'ajout des links etc. dans une fonction partagée par la fonction mémoisée et le traitement sans mémoisation (acheteur, titulaire, observatoire). Par exemple dans table.py
  • Modifier README.md et CLAUDE.md pour utiliser uv plutôt que .venv*
  • Màj CLAUDE.md avec
    • la nouvelle stratégie utils
    • l'utilisation de duckdb
Ne pas oublier : - [x] Déplacer cache.py et les fonctions de création de cache key vers utils - [x] Factoriser les opérations de remplacement des nulls, d'ajout des links etc. dans une fonction partagée par la fonction mémoisée et le traitement sans mémoisation (acheteur, titulaire, observatoire). Par exemple dans table.py - [x] Modifier README.md et CLAUDE.md pour utiliser `uv` plutôt que `.venv`* - [ ] Màj CLAUDE.md avec - la nouvelle stratégie utils - l'utilisation de duckdb
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: colin/colibre#72