e75a69e259
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>