# L'annuaire (crisalid-directory-bridge)

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

> **En bref :**
> L'annuaire dit au graphe **qui travaille dans quel laboratoire**. Il tourne sur l'instance de développement, mais seules **51 unités sur 235** y ont des chercheurs rattachés.
> Pour une vitrine par laboratoire, c'est la brique dont tout dépend, et celle qui manque le plus de données aujourd'hui.

## Ce que c'est et à qui ça sert

L'annuaire (crisalid-directory-bridge) lit les sources de l'établissement qui décrivent les personnes et les structures : l'annuaire LDAP, une vue de base de données ou un simple fichier tableur. Il en tire trois choses : les **personnes** et leurs identifiants, les **laboratoires** et leur hiérarchie, et les **rattachements** d'une personne à un laboratoire.

Personne ne l'utilise directement. Il sert au graphe, et par lui à SoVisu+ et à toute vitrine : **sans rattachement, une fiche de laboratoire ne peut lister ni ses chercheurs ni leurs publications**. Il est configuré par l'équipe qui exploite CRISalid, ici la DiBISO.

## Ce qui se passe dedans

<Mermaid
  title="Le parcours d'une donnée d'annuaire"
  caption="Seuls les changements partent vers le graphe. Le statut « supprimé » est émis, mais le graphe ne le traite pas."
  chart={`flowchart TB
    S["Annuaire de l'établissement<br/>LDAP, base ou fichier"]
    T["Traitements de l'orchestrateur Airflow<br/>lancés à la main ou par un ordonnanceur"]
    C["Mise au format CRISalid"]
    D{"Comparaison avec<br/>le chargement précédent"}
    B(["Bus : créé, modifié,<br/>inchangé, supprimé"])
    G[("Le graphe")]
    S --> T --> C --> D --> B --> G`}
/>

Chaque chargement est conservé et comparé au précédent. Une personne apparue est annoncée « créée », une personne disparue « supprimée ». Les six traitements du dépôt n'ont **aucune planification intégrée** : quelqu'un, ou un ordonnanceur extérieur, doit les lancer.

## Ce qu'on a observé

| Constat | Statut | Source |
|---|---|---|
| Six traitements (fichier, LDAP, base de données, diffusion), tous sans planification intégrée | Confirmé | [code](https://github.com/CRISalid-esr/crisalid-directory-bridge/blob/95be05d7/broadcast_entities.py) |
| Une personne qui quitte l'annuaire est annoncée « supprimée », mais **le graphe ignore ce statut** : elle reste rattachée | Confirmé | [suppressions non propagées](/03-crisalid/01-donnees/contrats-api-evenements#suppressions-non-propagées) |
| Les rattachements de personnes sont écrits **sans dates** de début ni de fin : pas d'historique des affiliations | Confirmé | [modèle de données](/03-crisalid/01-donnees/modele-de-donnees) |
| Aucun fichier de licence dans le dépôt | Confirmé | [exploitation et gouvernance](/03-crisalid/03-fonctionnement-transversal/exploitation-et-gouvernance) |
| La brique et son orchestrateur tournent ; leur planification n'est pas lisible sans authentification | Observé sur instance (dev) | [ce que montre l'instance](/03-crisalid/06-instance-saclay/00-ce-que-linstance-demontre) |
| 248 laboratoires dans l'annuaire, 235 unités à code RNSR dans le graphe ; écart non expliqué | Observé sur instance (dev) | [données observées](/03-crisalid/06-instance-saclay/01-donnees-observees#le-périmètre-saclay) |
| **51 unités sur 235** ont des chercheurs rattachés (5 848 chercheurs) ; 184 n'en ont aucun | Observé sur instance (dev) | [données observées](/03-crisalid/06-instance-saclay/01-donnees-observees#le-rattachement-des-chercheurs-aux-unités) |

## Pour la vitrine

- ***Apporte*** : le lien entre un chercheur et son laboratoire, sur lequel repose chaque fiche d'unité et chaque liste de publications par unité.
- ***Prouvé*** : la brique tourne sur l'instance et a rattaché 5 848 chercheurs à 51 unités.
- ***Bloque ou reste à prouver*** : 184 unités sans chercheur, dont la cause (périmètre de l'annuaire chargé, correspondance des codes) est à établir avec la DiBISO ; pas d'historique des affiliations ; les départs ne sont pas retirés du graphe ; aucune cadence de chargement démontrée ; licence à clarifier avant toute réutilisation. Le POC compare donc unité par unité ce que CRISalid rattache et ce que trouvent les sources ouvertes ([extrait et comparatif du POC](/01-cadrage-saclay/02-scenarios/03-extrait-et-comparatif-du-poc)).

## Liens

- Dépôt officiel : [github.com/CRISalid-esr/crisalid-directory-bridge](https://github.com/CRISalid-esr/crisalid-directory-bridge)
- Documentation officielle : [données de structures](https://crisalid-esr.github.io/crisalid-deployment/directories/structures.html) et [données de personnes](https://crisalid-esr.github.io/crisalid-deployment/directories/people.html)
- Pages qui font foi : [données observées, rattachement](/03-crisalid/06-instance-saclay/01-donnees-observees#le-rattachement-des-chercheurs-aux-unités) ; [modèle de données](/03-crisalid/01-donnees/modele-de-donnees)

Révision lue : `95be05d7`
