diff --git a/.template.env b/.template.env
index 6b9744a..fe1ac51 100644
--- a/.template.env
+++ b/.template.env
@@ -12,7 +12,7 @@ DATA_SCHEMA_PATH=https://www.data.gouv.fr/api/1/datasets/r/9a4144c0-ee44-4dec-be
DATA_SCHEMA_CACHE=./schema.cache.json
# Colonnes masquées par défaut
-DISPLAYED_COLUMNS="uid, acheteur_id, acheteur_nom, montant, objet, titulaire_nom, titulaire_id, dateNotification, dureeMois, acheteur_departement_code, sourceDataset"
+DISPLAYED_COLUMNS="acheteur_nom, montant, objet, titulaire_nom, dateNotification, dureeMois, acheteur_departement_code"
# Formulaire de contact
SENDER_SERVER_DOMAIN="mail.example.com" # serveur SMTP
diff --git a/src/assets/css/style.css b/src/assets/css/style.css
index ebe7ecb..06bb670 100644
--- a/src/assets/css/style.css
+++ b/src/assets/css/style.css
@@ -363,6 +363,15 @@ table.cell-table th {
background-color: rgb(255 240 240 / 40%);
}
+/* Colonne "Marché" : lien loupe centré et sans soulignement */
+table.cell-table td[data-dash-column="marche"] .dash-cell-value {
+ text-align: center !important;
+}
+
+td[data-dash-column="marche"] a {
+ text-decoration: none;
+}
+
/* Column Visibility Menu */
.column-actions {
margin-right: 8px;
diff --git a/src/utils/data.py b/src/utils/data.py
index 58a9637..ab7cb63 100644
--- a/src/utils/data.py
+++ b/src/utils/data.py
@@ -158,3 +158,11 @@ DF_TITULAIRES = build_org_frame("titulaire")
DEPARTEMENTS = get_departements()
DEPARTEMENTS_GEOJSON = get_departements_geojson()
DATA_SCHEMA = get_data_schema()
+# Colonne virtuelle (dérivée de uid) : lien loupe vers la fiche du marché.
+# Absente du schéma DuckDB, créée à l'affichage dans postprocess_page().
+DATA_SCHEMA["marche"] = {
+ "name": "marche",
+ "type": "string",
+ "title": "Marché",
+ "description": "Lien vers la fiche détaillée du marché.",
+}
diff --git a/src/utils/table.py b/src/utils/table.py
index 0b04c8a..52b07e4 100644
--- a/src/utils/table.py
+++ b/src/utils/table.py
@@ -359,11 +359,8 @@ def setup_table_columns(
def get_default_hidden_columns(page):
if page == "acheteur":
displayed_columns = [
- "uid",
"objet",
"dateNotification",
- "titulaire_id",
- "titulaire_typeIdentifiant",
"titulaire_nom",
"titulaire_distance",
"montant",
@@ -372,10 +369,8 @@ def get_default_hidden_columns(page):
]
elif page == "titulaire":
displayed_columns = [
- "uid",
"objet",
"dateNotification",
- "acheteur_id",
"acheteur_nom",
"titulaire_distance",
"montant",
@@ -408,6 +403,13 @@ def postprocess_page(dff: pl.DataFrame) -> pl.DataFrame:
À appeler après la pagination.
"""
dff = dff.with_columns(pl.all().cast(pl.String).fill_null(""))
+ if "uid" in dff.columns:
+ dff = dff.with_columns(
+ (
+ '🔍'
+ ).alias("marche")
+ )
+ dff = dff.select(["marche"] + [c for c in dff.columns if c != "marche"])
dff = add_links(dff)
if "sourceFile" in dff.columns:
dff = add_resource_link(dff)
diff --git a/tests/test_table.py b/tests/test_table.py
index 0df5e50..a0ab08e 100644
--- a/tests/test_table.py
+++ b/tests/test_table.py
@@ -313,3 +313,31 @@ def test_fetch_page_sql_post_processes_links(flask_app):
)
if page.height > 0:
assert "