Commit Graph

747 Commits

Author SHA1 Message Date
Colin Maudry aa445b6f01 Plan #72 2026-04-20 11:36:38 +02:00
Colin Maudry 330ed4f0cb Base de données et .lock à la racine de decp.info 2026-04-20 11:28:00 +02:00
Colin Maudry da5a99b3af Merge branch 'main' into dev 2026-04-20 10:49:31 +02:00
Colin Maudry 285ed37d79 Correction de l'import d'utils.cache 2026-04-20 00:06:44 +02:00
Colin Maudry e44fe452b2 Corrections de typage et d'appels à filter_table_data 2026-04-19 23:55:20 +02:00
Colin Maudry 7aef7acd34 Petits ajustements (cache => utils, noms de variables) 2026-04-19 23:49:02 +02:00
Colin Maudry 3ce6f224ae rtk, uv, pyproject 2026-04-19 23:39:33 +02:00
Colin Maudry c7c7c2c62c Factorisation des opération de postprocess des tables 2026-04-19 23:28:45 +02:00
Colin Maudry ad58c1152a Améliorations sur le typage 2026-04-19 23:23:07 +02:00
Colin Maudry 19449969d6 Mention de rtk dans CLAUDE.md 2026-04-19 23:22:48 +02:00
Colin Maudry b0d2aca4ff perf(tableau): memoize filter+sort+postprocess pipeline (#72)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:50:32 +02:00
Colin Maudry 0abbd982ea feat: add memoized _load_filter_sort_postprocess helper (#72)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:39:13 +02:00
Colin Maudry 18d07b5398 feat: add normalize_sort_by hashable cache-key helper (#72)
Add normalize_sort_by function to convert Dash DataTable's sort_by list
(unhashable) into a tuple representation (hashable) for use in cache keys.
Includes TDD-driven tests for empty inputs, hashability, and order preservation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:36:55 +02:00
Colin Maudry ff425108b0 fix: restore track_search import in table.py (#72) 2026-04-19 22:34:25 +02:00
Colin Maudry 0c7ca04f8e refactor: move track_search out of filter_table_data into callers (#72)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 22:32:28 +02:00
Colin Maudry 89904a5bad test: scaffold unit tests for table utilities (#72) 2026-04-19 22:30:28 +02:00
Colin Maudry 4d0baebb75 Vérification de l'existence de cache_dir v2.7.2 2026-04-19 15:54:36 +02:00
Colin Maudry 5ccfec35e9 Merge tag 'v2.7.2' into dev
- Chargement des données depuis une base DuckDB plutôt qu'en mémoire (plus de stabilité) ([#71](https://github.com/ColinMaudry/decp.info/issues/71))
- Mise en cache des vue sur l'observatoire pour un chargement plus rapide (remise à zéro quotidienne)
- Correction de bug : la liste de colonnes par défaut est bien appliquée plutôt qu'afficher toutes les colonnes
- Quelques corrections de bugs d'affichage
- Refactorisation des fonctions utilitaires (`utils.py` approchait des 1 000 lignes)
2026-04-19 15:33:58 +02:00
Colin Maudry 38f7543205 Merge branch 'release/2.7.2' 2026-04-19 15:32:41 +02:00
Colin Maudry 26169abc2f Suppression du cache à chaque redémarrage 2026-04-19 15:29:34 +02:00
Colin Maudry 1eb579da57 Logging des cache miss si DEVELOPMENT 2026-04-19 15:23:02 +02:00
Colin Maudry 1f5ffe2962 Changelog 2.7.2 2026-04-19 15:22:09 +02:00
Colin Maudry 4c4b010f44 Correction des tests avec données db 2026-04-18 21:39:36 +02:00
Colin Maudry 9d9760e596 Cache 2026-04-18 20:06:46 +02:00
Colin Maudry a7516d65e3 Utilisation du logger global dans app et db 2026-04-18 19:28:34 +02:00
Colin Maudry 600567330f Améliorations typing 2026-04-18 19:01:22 +02:00
Colin Maudry af3b3464e4 Refactorisation utils 2026-04-18 19:01:07 +02:00
Colin Maudry e4e1438220 Refactorisation des fonctions utils 2026-04-18 18:33:09 +02:00
Colin Maudry e352624c02 Capitalisation des constantes 2026-04-18 18:09:42 +02:00
Colin Maudry accdfe1384 Merge branch 'feat/duckdb-migration' into dev 2026-04-18 16:57:45 +02:00
Colin Maudry da13ed7984 DuckDB migration design spec #71 2026-04-18 16:57:41 +02:00
Colin Maudry 035e6b7ac3 Formatage prettier (reformatage automatique) 2026-04-16 11:13:08 +02:00
Colin Maudry 71f21b733f Mesure de l'impact mémoire post-migration DuckDB (#71) 2026-04-16 11:12:50 +02:00
Colin Maudry 09ddb0f485 Suppression des dataframes globaux remplacés par DuckDB (#71) 2026-04-16 11:11:58 +02:00
Colin Maudry 342f7b53a9 figures.py : remplacement de df.columns par schema.names() depuis src.db (#71) 2026-04-16 11:09:43 +02:00
Colin Maudry 88016d9517 observatoire.py : migration vers query_marches et schema depuis src.db (#71) 2026-04-16 11:09:22 +02:00
Colin Maudry 5ecfb463f3 tableau.py : migration vers query_marches et schema depuis src.db (#71) 2026-04-16 11:08:45 +02:00
Colin Maudry 1655af375c arbre/liste_marches_org.py : requêtes DuckDB pour les listes de marchés (#71) 2026-04-16 11:07:59 +02:00
Colin Maudry cba3128b8f departement.py : requêtes DuckDB sur acheteurs_departement et titulaires_departement (#71) 2026-04-16 11:07:32 +02:00
Colin Maudry a31d996812 titulaire.py : migration vers query_marches et schema depuis src.db (#71) 2026-04-16 11:07:07 +02:00
Colin Maudry e89311f3ab acheteur.py : migration vers query_marches et schema depuis src.db (#71) 2026-04-16 11:06:35 +02:00
Colin Maudry 31b68079e0 marche.py : utilisation de query_marches au lieu du df global (#71) 2026-04-16 11:05:52 +02:00
Colin Maudry 9cf92563ae Intégration de src.db dans utils (coexistence avec les globaux) (#71) 2026-04-16 11:05:18 +02:00
Colin Maudry 94ff13a66b test: reconstruction de la base DuckDB de test avant chaque session (#71) 2026-04-16 11:04:44 +02:00
Colin Maudry 4715db282e Les boutons de Tableau passent à ligne si écran plus étroit 2026-04-15 17:49:25 +02:00
Colin Maudry 2d592842ab Suppression print/logs inutiles 2026-04-15 16:33:57 +02:00
Colin Maudry cfd0da34cd test(db): sérialisation des builds concurrents par fcntl.flock (#71)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 16:27:41 +02:00
Colin Maudry f31522734c Connexion DuckDB globale, verrou fcntl et query_marches
- _ensure_database : vérifie rebuild sous verrou fcntl exclusif
- conn en lecture seule au niveau module, schema importé via SELECT LIMIT 0
- query_marches : helper SQL paramétré retournant un pl.DataFrame
- get_cursor : cursor par appel pour thread-safety Dash
- pyarrow ajouté en dépendance (requis par duckdb .pl())

refs #71

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 16:23:09 +02:00
Colin Maudry 077af6dd2e Implémentation de build_database avec transforms Polars et tables dérivées
- _load_source_frame reprend la pipeline Polars (sort, filtre donneesActuelles,
  booleans_to_strings, remplacement des noms null)
- build_database utilise write_parquet + read_parquet pour zéro-dépendance
  pyarrow (pyarrow absent du venv) et écrit atomiquement via .tmp + os.replace
- 4 tables dérivées : acheteurs_marches, titulaires_marches,
  acheteurs_departement, titulaires_departement

refs #71

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 16:16:12 +02:00
Colin Maudry 553e23dd98 Nettoyage des tests should_rebuild suite à la revue
- Import de should_rebuild au niveau module
- Suppression d'un setenv DEVELOPMENT inutile (branche db-missing)
- Utilisation de os.utime pour un ordre mtime déterministe

refs #71

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 16:10:17 +02:00