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
Colin Maudry
e83df64261
Ajout de src.db.should_rebuild et ses tests
...
refs #71
2026-04-15 16:07:41 +02:00
Colin Maudry
0c3b0265b4
Ajout de la dépendance duckdb
...
Ajoute duckdb (==1.5.2) à pyproject.toml et ignore les artefacts
runtime (decp.duckdb, .tmp, .lock) qui sont régénérés au démarrage
depuis decp_prod.parquet.
refs #71
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-15 16:03:06 +02:00
Colin Maudry
fd1a801ddb
Ignore .worktrees pour exécution en worktree isolé
...
refs #71
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-15 13:50:31 +02:00
Colin Maudry
035d7f23fa
Plan de migration DuckDB — découpage en 20 tâches
...
20 étapes bite-sized couvrant : dépendance duckdb + .gitignore,
should_rebuild (TDD), build_database avec transforms Polars et verrou
fcntl, startup guard + query_marches, migration page-par-page
(marche → acheteur → titulaire → arbre → tableau → observatoire →
figures), suppression des globaux Polars, mesure RSS avant/après.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-15 13:37:49 +02:00
Colin Maudry
e75a69e259
Spec: DuckDB migration for decp data layer
...
Replace global Polars dataframes in src/utils.py (lines 891-913) with
an on-disk DuckDB database, built at startup from decp_prod.parquet.
Keeps two small search-path frames (df_acheteurs, df_titulaires) in
memory; moves heavy filtering and aggregation to DuckDB via a
query_marches helper that returns pl.DataFrame.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-15 13:19:52 +02:00
Colin Maudry
9a19e5cba7
Mise en place d'un cache pour l'observatoire
2026-04-15 12:11:44 +02:00
Colin Maudry
0d0c0d0a75
Acheteur et titulaire appliquent bien la liste de colonnes par défaut
2026-04-15 11:35:10 +02:00
Colin Maudry
ade9a20926
Tableau applique bien la liste de colonnes par défaut
2026-04-14 17:39:52 +02:00
Colin Maudry
24e0cee2b1
Améliorations de typage
2026-03-30 14:58:18 +02:00
Colin Maudry
9e8811e080
Merge tag 'v2.7.1' into dev
...
- Correction du partage de données filtrées entre dashboard et vue des données
2026-03-23 13:40:10 +01:00
Colin Maudry
06186c1691
Merge branch 'hotfix/2.7.1'
v2.7.1
2026-03-23 13:40:01 +01:00
Colin Maudry
30b6874045
Changelog 2.7.1
2026-03-23 13:39:49 +01:00
Colin Maudry
6e5f4011e5
On garde toutes les valeurs en paramètre puour prepare_dashboard_data
2026-03-23 13:39:37 +01:00
Colin Maudry
1f48319a0f
Utilisation d'un store plutôt que df global, regroupement des inputs/outputs
2026-03-23 13:25:08 +01:00
Colin Maudry
75005f43af
Merge tag 'v2.7.0' into dev
...
- Remplacement de la page Statistiques par l'observatoire
- Généralisation de la grille dash (`dbc.Row`, `dbc.Col`)
- Ajout de l'histogramme de distances aux pages acheteur et titulaire
- Ajout de la colonne `acheteur_categorie` (commune, État, etc.)
2026-03-23 07:49:56 +01:00
Colin Maudry
08fc4dcfdc
Merge branch 'release/2.7.0'
v2.7.0
2026-03-23 07:49:04 +01:00
Colin Maudry
ad3f2cf654
Changelog 2.7.0
2026-03-23 07:48:54 +01:00
Colin Maudry
24bce6e2d6
Lien vers #sources
2026-03-23 07:43:37 +01:00
Colin Maudry
72da1a15e2
Nettoyage HTML recherche.py
2026-03-23 07:43:37 +01:00
Colin Maudry
f4514bf06c
Le bouton Partager n'apparaît que s'il y a des filtres
2026-03-23 07:43:02 +01:00
Colin Maudry
a54f78875e
Utilise l'année en cours pour plafonner les données du graph sources #65
2026-03-21 12:25:31 +01:00
Colin Maudry
7b78e0a0ea
Style, ordre des années #65
2026-03-21 12:09:00 +01:00
Colin Maudry
eecd75ac42
Style des boutons Prévisualiser et Partager #65
2026-03-21 11:55:48 +01:00