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

Modèle de Données Prisma

La base de données relationnelle est un cluster PostgreSQL 17 décrit par le fichier unique apps/api/prisma/schema.prisma.

Le schéma compte 39 modèles, plus 2 tables de jointures implicites gérées par Prisma.


📐 Conventions Fondamentales

  • Nommage : Modèles et propriétés Prisma en camelCase (DossierLegislatif.dateDepot) ; tables et colonnes SQL physiques en snake_case (dossiers_legislatifs.date_depot) via les attributs @map et @@map.
  • Clés Primaires : UUID stockés sous forme text (@default(uuid())).
  • Pas d'Enum SQL natif : Les champs énumérés (chambre, position, sort) sont stockés en text et validés par l'application TypeScript.
  • Chambre : Vaut toujours 'assemblee' ou 'senat'.
  • Législature : 15, 16 ou 17 pour l'Assemblée. Pour le Sénat, qui ne connaît pas de dissolution, la colonne vaut NULL sur scrutins et groupes_politiques (période définie par session ou mandature).

💡 Principes de Modélisation Métier

1. Une personne, plusieurs mandats

Il n'existe pas de table séparée « députés » ou « sénateurs ».

  • La table parlementaires contient des personnes physiques.
  • La table mandats_parlementaires enregistre leurs sièges successifs (une ligne par législature à l'Assemblée, par mandature au Sénat).

2. Changement de chambre et continuité

Lorsqu'un député est élu sénateur, sa fiche est conservée et bascule au Sénat. Son ancien identifiant PA... de l'Assemblée est historisé dans parlementaires_identifiants, garantissant que les votes ou amendements passés restent parfaitement rattachés.

3. Le groupe politique appartient au mandat

Le groupe politique, la circonscription et la commission permanente sont attachés à mandats_parlementaires. La colonne parlementaires.groupe_id n'indique que le groupe actuel.


📊 Catalogue et Volumétrie en Production

DomaineTable SQLVolumétrieRôle
Parlementairesparlementaires~2 200 lignesIdentités, statistiques précalculées, résumés IA
Mandats Siègesmandats_parlementaires~3 600 lignesSièges par législature / mandature
Groupesgroupes_politiques~46 lignesGroupes politiques de l'AN et du Sénat
Scrutinsscrutins~22 000 lignesScrutins publics solennels et ordinaires
Votes Individuelsvotes~3 900 000 lignesVotes nominatifs (pour, contre, abstention, absent)
Amendementsamendements~195 000 lignesAmendements déposés, textes, sorts
Cosignatures_AmendementCosignataires~3 300 000 lignesJointure amendement vers cosignataire
Interventionsinterventions~1 420 000 lignesPrises de parole en séance publique et commission
Liaisons Débatsintervention_scrutin~350 000 lignesRapprochement chronologique débat vers vote
Dossiers Législatifsdossiers_legislatifs~21 500 lignesDossiers et textes de loi
Sujets Transversessujets~1 750 lignesRegroupements des textes AN + Sénat
Lobbyisteslobbyistes~4 100 lignesReprésentants d'intérêts déclarés HATVP
Actions Lobbyingactions_lobby~102 000 lignesActions d'influence déclarées
Réunions & Séancesreunions~8 800 lignesAgenda et procès-verbaux
Enrichissement IAOrchestrateur d'Ingestion
On this page
  • 📐 Conventions Fondamentales
  • 💡 Principes de Modélisation Métier
    • 1. Une personne, plusieurs mandats
    • 2. Changement de chambre et continuité
    • 3. Le groupe politique appartient au mandat
  • 📊 Catalogue et Volumétrie en Production