# Cartographie globale des données

import { Mermaid } from "../../../src/components/Mermaid";

> **En bref :**
> CRISalid organise cinq circuits : annuaire, publications, référentiels, corrections humaines, diffusion.
> Sur l'instance de développement, **quatre sources bibliographiques alimentent le graphe** (HAL, IdRef, scanR, OpenAlex) ; Scopus, implémenté, n'est pas utilisé.
> La diffusion vers une vitrine publique est le circuit qui reste à construire : le **service d'export** n'existe pas.

Cette page est la carte des composants et des stockages, pour la DSI. Le circuit des données expliqué pas à pas est dans [Comprendre CRISalid](/03-crisalid/00-reperes/comprendre-crisalid) ; les sources dans le [catalogue](./catalogue-des-sources) ; les briques dans la [carte des sous-projets](/03-crisalid/02-sous-projets/carte-des-sous-projets).

## Composants et stockages

<Mermaid
  title="Composants et stockages de CRISalid"
  caption="Traits pointillés : messages sur le bus RabbitMQ. Le service d'export et la vitrine sont des projections Saclay, pas des composants livrés."
  chart={`flowchart TB
    SI["Annuaire de l'établissement<br/>LDAP, vue RH, CSV"] --> BR["Passerelle d'annuaire<br/>(Directory Bridge)"]
    SB["HAL, IdRef, scanR, OpenAlex"] --> HV["Moissonneur<br/>(svp-harvester)"]
    RF["UAI, ROR, taxonomie OpenAlex"] --> RG["Référentiels<br/>(Org Registry, Taxi)"]
    BR -.-> BUS{{"Bus RabbitMQ"}}
    HV -.-> BUS
    BUS -.-> IKG["Graphe (IKG)"]
    RG --> IKG
    IKG --> NEO[("Neo4j")]
    NEO --> AP["API Apollo"]
    AP --> SV["SoVisu+"]
    SV -.->|"corrections"| BUS
    NEO -.->|"à écrire"| EX["Service d'export"]
    EX --> VT["Vitrine (Partie 1)"]
  `}
/>

## Les cinq circuits

| Circuit | Entrée → traitement | Stockage | Statut |
| --- | --- | --- | --- |
| Personnes et structures | Annuaire → passerelle d'annuaire → graphe | Redis (versions), bus, Neo4j | **Confirmé** dans le code ; **Observé sur instance (dev)** : 235 unités à code RNSR, 5 848 chercheurs rattachés à 51 unités |
| Publications | Identifiants des personnes → moissonneur → graphe | PostgreSQL du moissonneur, bus, Neo4j | **Observé sur instance (dev)** : quatre sources actives, 251 191 publications ([catalogue](./catalogue-des-sources)) |
| Référentiels | UAI, ROR, taxonomie OpenAlex, vocabulaires → services dédiés | PostgreSQL ou index spécialisés, puis Neo4j | **Partiel** : plusieurs services optionnels |
| Corrections humaines | Actions dans SoVisu+ → bus → graphe | PostgreSQL de SoVisu+, Neo4j | **Confirmé** dans le code ; usage sur l'instance **À confirmer** |
| Diffusion | Neo4j → API Apollo → SoVisu+ ; vers la vitrine : service d'export | Pas de stockage public | **Projection Saclay** pour l'export ([extrait et comparatif du POC](/01-cadrage-saclay/02-scenarios/03-extrait-et-comparatif-du-poc)) |

## Frontières de responsabilité

- La **passerelle d'annuaire** adapte les sources institutionnelles et détecte les changements ; elle ne décide pas de la vérité métier.
- Le **moissonneur** normalise les réponses des plateformes et garde l'historique de collecte ; il ne dédoublonne pas.
- Le **graphe (IKG)** applique les règles de rapprochement et écrit dans Neo4j.
- **SoVisu+** a sa propre base et transmet les corrections au graphe ; elle ne doit pas devenir une seconde définition des données.
- **Apollo** expose Neo4j en GraphQL ; ce n'est pas un contrat public versionné.

## Ce que la carte ne prouve pas encore

- la cadence réelle : l'enrichissement (calcul d'accès ouvert) est **arrêté depuis le 7 septembre 2026** sur l'instance (**Observé sur instance (dev)**, [données observées](/03-crisalid/06-instance-saclay/01-donnees-observees)) ;
- les délais de propagation, taux de rejet et règles locales de priorité, fusion et suppression : **À confirmer** ;
- la propagation des suppressions, qui n'est pas assurée ([suppressions non propagées](./contrats-api-evenements#suppressions-non-propagées)) ;
- la politique de publication des données personnelles ([sécurité, droits et données personnelles](/03-crisalid/03-fonctionnement-transversal/securite-droits-donnees-personnelles)).

Projets et financements n'ont pas de circuit : voir le [modèle de données](./modele-de-donnees).
