Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.7 KiB
Page /etapes — « Quelles données pour quelles étapes et quels seuils ? »
Date : 2026-06-04
Branche : dev
Objectif
Créer une page pédagogique sur decp.info qui montre, sur un seul graphique, quelles données sont publiées à chaque étape de la passation d'un marché public et à partir de quel seuil réglementaire (en € HT).
La page aide à comprendre l'écosystème des publications de données de la commande publique et à situer les DECP (le cœur de decp.info) parmi les autres sources.
Portée
- Une page dédiée à l'URL
/etapes. - Layout standard (bandeau de navigation global affiché en haut, comme toutes les pages).
- Non listée dans la navbar pour l'instant (on ne sait pas encore comment la lier depuis le reste de l'app — elle n'est pas secrète).
- Référencée dans le sitemap pour le SEO.
- Graphique en HTML/CSS statique (pas de Plotly, pas de SVG, pas d'interactivité).
- Pas de test automatisé spécifique (contenu statique) ; vérification visuelle via
python run.py.
Hors portée : tout lien entrant depuis la navbar ou d'autres pages, toute interactivité (survol, filtre), toute donnée dynamique.
Le graphique
Axes
- Axe Y (de haut en bas) — étapes de la passation :
- Programmation
- Publicité (appel d'offres)
- Attribution
- Contrat — vide (« aucune donnée publiée aujourd'hui »)
- Paiement — vide (« aucune donnée publiée aujourd'hui »)
- Axe X — seuils réglementaires en € HT, segmenté (espacement égal entre seuils, pas linéaire, sinon tout serait écrasé entre 40 k€ et 5,4 M€). Marqueurs de colonnes :
0 €40 000 €— seuil DECP90 000 €— seuil de publicité140 000 € / 216 000 €— seuils formalisés (UE)5 404 000 €— travaux (UE)
Barres (publications de données)
Chaque barre est une bande horizontale colorée, positionnée sur sa ligne d'étape et couvrant la plage de seuils où la publication s'applique.
| Publication | Étape(s) | Plage de seuils | Note |
|---|---|---|---|
| Approch | Programmation | toute la largeur | sourcing / préinformation, publication non réglementaire |
| Journaux d'annonces légales | Publicité | 90 000 € → seuil formalisé | remplit exactement cette case |
| BOAMP | Publicité | ≥ 90 000 € (jusqu'à l'infini) | au-delà des seuils UE, publicité obligatoire au BOAMP et au JOUE |
| JOUE | Publicité (avis de marché) + Attribution (avis d'attribution) | ≥ seuils formalisés | deux barres, une par étape |
| DECP | Attribution | ≥ 40 000 € (jusqu'à l'infini) | données essentielles de la commande publique |
Légende
Sous le graphique : une pastille de couleur + le nom complet pour chaque publication (Approch, Journaux d'annonces légales, BOAMP, JOUE, DECP).
Implémentation
Nouveau fichier src/pages/etapes.py
Enregistrement de la page :
register_page(
__name__,
path="/etapes",
title="Quelles données pour quelles étapes et quels seuils ? | decp.info",
name="Étapes et données",
description="À chaque étape d'un marché public (programmation, publicité, attribution), quelles données sont publiées et à partir de quel seuil : DECP, BOAMP, JOUE, journaux d'annonces légales, Approch.",
image_url=META_CONTENT["image_url"],
)
Le name="Étapes et données" n'est pas dans la liste blanche de la navbar (src/app.py:181), la page reste donc hors navigation tout en étant accessible.
layout = html.Div(className="container", children=[...]) :
html.H2("Quelles données pour quelles étapes et quels seuils ?")- Paragraphe d'intro (
dcc.Markdown) expliquant ce que montre le graphique. - Le graphique (composants
html.Divreproduisant la maquette v3, barres positionnées enleft/righten%). - La légende.
- Note de bas (
dcc.Markdown) : axe X segmenté (non linéaire) ; Contrat et Paiement sans données ouvertes à ce jour.
Modification de src/app.py
Ajouter "/etapes" à la liste des URLs du sitemap (sitemap(), ~ligne 73) :
pages = [
"/",
"/observatoire",
"/tableau",
"/a-propos",
"/etapes",
]
Aucune modification de la navbar.
CSS
Bloc dédié dans src/assets/css/ (fichier existant ou nouveau), avec classes préfixées (ex. .etapes-chart, .etapes-lane, .etapes-bar…) pour éviter toute collision.
Responsive : envelopper le graphique dans un conteneur overflow-x:auto avec une largeur minimale, afin que les barres restent lisibles sur petit écran plutôt que de s'écraser.
Vérification
python run.pypuis ouvrir/etapes: le graphique s'affiche, fidèle à la maquette v3, avec le bandeau de navigation en haut./etapesabsente de la navbar./sitemap.xmlcontient/etapes.- Sur fenêtre étroite : défilement horizontal du graphique, pas d'écrasement.
Référence
Maquette validée : .superpowers/brainstorm/80498-1780599135/content/chart-concept-v3.html.