From 2efb5e067c954a67bb0ed5e9184bc1442c1272dc Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Tue, 14 Jul 2026 19:48:19 +0200 Subject: [PATCH] =?UTF-8?q?Pr=C3=A9cisions=20config=20claude.ai/Desktop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/a_propos/abonnement.py | 6 ++-- src/pages/compte/abonnement.py | 2 +- src/pages/compte/mcp.py | 9 +++--- src/pages/recherche.py | 54 ++++++++++++++++++++++++++++++-- 4 files changed, 61 insertions(+), 10 deletions(-) diff --git a/src/pages/a_propos/abonnement.py b/src/pages/a_propos/abonnement.py index 5ead13e..14c47a5 100644 --- a/src/pages/a_propos/abonnement.py +++ b/src/pages/a_propos/abonnement.py @@ -17,9 +17,9 @@ register_page( ) abonnement_features = dcc.Markdown(""" - - sauvegarde et partage de vues dans la page Tableau - - vote pour les [fonctionnalités à développer](/a-propos/roadmap) en priorité (une fois la période d'essai de 2 jours consommée) - - interrogation des données depuis un agent IA via le connecteur MCP (ChatGPT, Claude, Mistral...) + - sauvegarde et partage de **vues** dans la page Tableau + - interrogation des données depuis un agent IA via le **connecteur MCP** (ChatGPT, Claude, Mistral...) + - vote pour les fonctionnalités à développer en priorité dans la **roadmap** """) diff --git a/src/pages/compte/abonnement.py b/src/pages/compte/abonnement.py index 6622e1f..ef5a8b9 100644 --- a/src/pages/compte/abonnement.py +++ b/src/pages/compte/abonnement.py @@ -46,7 +46,7 @@ def _free_access_view(): return html.Div( [ - html.H3( + html.H5( "Vous avez temporairement accès à toutes les fonctionnalités", className="mb-3", ), diff --git a/src/pages/compte/mcp.py b/src/pages/compte/mcp.py index 5784441..6fd706a 100644 --- a/src/pages/compte/mcp.py +++ b/src/pages/compte/mcp.py @@ -52,14 +52,15 @@ def client_instructions(url: str, token: str): html.Ol( [ html.Li( - "Paramètres → Connecteurs → Ajouter un connecteur personnalisé." + "Icône utilisateur → Paramètres → Connecteurs → Ajouter → Ajouter un connecteur personnalisé." ), - html.Li(f"URL du serveur MCP : {url}"), + html.Li("Nom : colibre"), + html.Li(f"URL du serveur MCP distant : {url}"), html.Li( - "Laissez le champ « Client Secret » vide (client public)." + 'Laissez les champs "Client ID" et "Client secret" vides.' ), html.Li( - "Connectez-vous avec votre compte colibre, puis « Autoriser »." + 'Connectez-vous avec votre compte colibre, puis "Autoriser".' ), ] ), diff --git a/src/pages/recherche.py b/src/pages/recherche.py index a70d876..e4042d7 100644 --- a/src/pages/recherche.py +++ b/src/pages/recherche.py @@ -2,6 +2,7 @@ import dash_bootstrap_components as dbc from dash import Input, Output, State, callback, dcc, html, register_page from src.figures import DataTable +from src.pages.a_propos.abonnement import abonnement_features from src.utils.data import DF_ACHETEURS, DF_TITULAIRES from src.utils.search import search_org from src.utils.seo import META_CONTENT @@ -9,6 +10,53 @@ from src.utils.table import setup_table_columns NAME = "Recherche" +_features_gratuites = dcc.Markdown(""" +- Recherche d'acheteurs et de titulaires +- [Tableau](/tableau) filtrable et personnalisable sur des dizaines de colonnes et exports Excel +- Fiches détaillées : acheteur, titulaire, marché +- Cartes, statistiques et [observatoire](/observatoire) national personnalisable +""") + +home_intro = html.Div( + id="home_intro", + className="container", + style={"maxWidth": "900px", "marginTop": "1rem"}, + children=[ + html.P( + "colibre ouvre les données des marchés publics français à toutes et " + "tous : recherchez, filtrez, cartographiez, exportez — gratuitement " + "et sans compte.", + className="text-center text-muted", + style={"maxWidth": "700px", "margin": "0 auto 1.5rem"}, + ), + dbc.Row( + [ + dbc.Col( + [html.H4("✅ Gratuit, sans compte"), _features_gratuites], + md=6, + style={ + "borderRight": "1px solid var(--bs-border-color)", + "paddingRight": "2rem", + }, + ), + dbc.Col( + [ + html.H4("⭐ Avec un abonnement"), + abonnement_features, + dcc.Link( + "En savoir plus et s'abonner", + href="/a-propos/abonnement", + ), + ], + md=6, + style={"paddingLeft": "2rem"}, + ), + ], + className="align-items-start", + ), + ], +) + register_page( __name__, path="/", @@ -71,6 +119,7 @@ layout = html.Div( style={"textAlign": "center"}, id="mention_tableau", ), + home_intro, # html.Div( # className="search_options", # children=[dcc.RadioItems(options=["Acheteur(s)"])], @@ -83,6 +132,7 @@ layout = html.Div( @callback( Output("search_results", "children"), Output("mention_tableau", "style"), + Output("home_intro", "style"), Input("search", "n_submit"), Input("search-button", "n_clicks"), State("search", "value"), @@ -128,5 +178,5 @@ def update_search_results(n_submit, n_clicks, query): cols.append(col) style = {"textAlign": "center", "display": "none"} - return cols, style - return html.P(""), {"textAlign": "center"} + return cols, style, {"display": "none"} + return html.P(""), {"textAlign": "center"}, home_intro.style