CLAIR DocsCLAIR Docs
  • clair.vote
  • GitHub
  • Nous soutenir
Nous soutenir
  • Accueil
  • Plateforme & Guide
  • Données & Base de Données
  • Explorateur API
CLAIR

Plateforme citoyenne de transparence politique. Données 100% publiques, 0% d'opinion.

Explorer

  • Députés
  • Sénateurs
  • Groupes politiques
  • Sujets
  • Dossiers législatifs
  • Scrutins
  • Agenda
  • Lobbying

Ressources

  • Nous soutenir
  • À propos
  • Méthodologie
  • Contact
  • Comprendre
  • Guide pratique
  • API ouverte

Légal

  • Mentions légales
  • Confidentialité
  • CGU

© 2026 CLAIR. Sources : Assemblée nationale · Sénat · HATVP · Ministère de l'Intérieur · DILA

Vue d'ensembleCommandes CLIEnrichissement IAModèle PrismaOrchestrateur d'IngestionQualité des DonnéesSchémas ERDSources Open Data
Données & Base de Données

L'Orchestrateur d'Ingestion

L'ingestion de CLAIR est une application Node.js / TypeScript pilotée par CLI (services/ingestion/src/cli.ts basée sur Commander). Elle télécharge les données publiques, effectue les transformations, alimente PostgreSQL, établit les liaisons cross-chambres et déclenche l'enrichissement par IA.


⏱️ Les Deux Passages Planifiés (Railway)

PassagePlanification (UTC)Heure de ParisCommande Exécutée
Ingestion Nightly0 3 * * *5h (été) / 4h (hiver)node --max-old-space-size=6144 services/ingestion/dist/cli.js smart-sync --all
Ingestion Intraday0 6-21/2 * * *Toutes les 2h (8h à 22h)node services/ingestion/dist/cli.js sync-intraday
  • Le passage intraday ne rafraîchit que les éléments volatils du jour : agenda Sénat (J-2 à J+2), vidéos et replays de l'Assemblée et du Sénat. Il ne touche pas aux scrutins ou aux statistiques.
  • Le passage nightly effectue le rafraîchissement complet, la réconciliation de graphe et les calculs de statistiques.

🔄 Déroulement du Batch Nocturne (smart-sync --all)

Cycle d'Exécution du Batch Nocturne

🔗 Algorithme des Rattachements d'Entités

L'ordre des rattachements est strictement séquentiel pour éviter les faux positifs :

  1. Débats et Scrutins : Rattachement des prises de parole antérieures aux votes en séance.
  2. Interventions et Dossiers : Liaison par numéro de texte législatif.
  3. Commissions et Avis : Parsing des comptes rendus PDF (via pdftotext) pour extraire les positions de commission sur les amendements.
  4. Scrutins et Dossiers : Suppression des liaisons obsolètes, rattachement Sénat, analyse TF-IDF sur les titres de lois et numéros de texte.
  5. Amendements et Scrutins : Rapprochement dans la table de jointure scrutin_amendement, puis propagation du dossier vers les amendements.
  6. Nature des Scrutins : Classification automatique de la nature du vote (texte entier, amendement, motion, etc.).

🛡️ Résilience et Gestion des Échecs

  • Non-blocage : L'échec de téléchargement ou de parsing d'une source isole l'erreur dans sync_logs.statut = 'failed' et continue le traitement des sources suivantes.
  • Idempotence : Toutes les écritures en base utilisent des clauses upsert Prisma basées sur les identifiants uniques officiels.
  • Traçabilité : Consultation instantanée de la santé des flux via pnpm ingestion:status.
Modèle PrismaQualité des Données
On this page
  • ⏱️ Les Deux Passages Planifiés (Railway)
  • 🔄 Déroulement du Batch Nocturne (smart-sync --all)
  • 🔗 Algorithme des Rattachements d'Entités
  • 🛡️ Résilience et Gestion des Échecs