02 · CivicTech · Données publiques
Programmes Candidats : une plateforme parlementaire archivée
Le service est fermé ; cette étude de cas conserve l'historique technique de Programmes Candidats. La plateforme transformait les scrutins publics de l'Assemblée nationale en parcours consultables : qui avait voté quoi, sur quel texte et à quelle étape. Les publications du Sénat complétaient le chemin lorsqu'un texte changeait de chambre. Avant la fermeture, plus de 137 000 pages sourcées rendaient cet ensemble accessible et indexable.

// sous le capot
Architecture et décisions techniques
J'ai séparé l'application publique Laravel du worker Go qui collectait, auditait et normalisait les sources officielles. MySQL servait les pages et la recherche, tandis que R2 conservait chaque archive source et son manifeste avant l'import.
- 01
Isoler l'ingestion du trafic public
Laravel répondait aux visiteurs pendant que le worker Go absorbait les volumes de données parlementaires. Une importation lourde ne ralentissait donc ni une fiche de député ni une page de scrutin.
- 02
Auditer avant de publier
Chaque archive recevait une empreinte de contenu. Si elle était identique, l'import était ignoré. Sinon, la source était archivée dans R2, sa structure était auditée et les données étaient vérifiées avant la promotion atomique du manifeste d'ingestion.
- 03
Réunir des sources officielles hétérogènes
Les ZIP structurés de l'Assemblée étaient complétés par les textes et rapports publiés par le Sénat. Les domaines étaient autorisés explicitement et le HTML était traité avec un parseur dédié.
- 04
Rendre 137 000 pages traçables et pilotables
Députés, scrutins, dossiers, textes et amendements partageaient un même contrat d'indexabilité. Chaque page distinguait les faits officiels, les calculs, les rapprochements automatiques et les synthèses relues. Les sitemaps étaient découpés et leur date suivait les données réellement modifiées.