# Extrait CRISalid et comparatif du POC

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

> **En bref :**
> - Pour le POC du 9 novembre, la DiBISO produit **un extrait ponctuel** de CRISalid par des requêtes figées, dans son propre réseau. La vitrine ne lit jamais le graphe.
> - L'extrait couvre les unités d'une Graduate School, **sans unité ZRR**, et ne retient que les champs d'une liste blanche. Il exclut les entités à supprimer et les coauteurs externes, et plafonne les dates.
> - Les mêmes unités sont générées depuis les **sources ouvertes**, puis comparées une à une. **Proposition à acter au comité** : le service d'export qui remplacera l'extrait est livré avec la vitrine et exploité par la DiBISO, pour 8–15 j.h hors chiffrage actuel.

Cette page détaille l'[étape 1 de la Partie 1](./01-partie-1-vitrine-marque-blanche#étape-1--le-poc-de-pertinence). Les critères d'arrêt y sont fixés ; le calendrier est dans la [feuille de route](/04-prochaines-etapes/00-feuille-de-route).

## Qui fait quoi

| Rôle | Qui | Quand |
| --- | --- | --- |
| Autoriser l'extrait et l'exécuter | DiBISO, équipe CRISalid | Semaine du 2 novembre, puis S2 |
| Valider la liste des unités, sans ZRR | FSD | Semaine du 2 novembre |
| Valider la liste blanche des champs | DPO et communication | S1 |
| Écrire les requêtes figées, générer les fiches, comparer | Équipe vitrine | S1 à S3 |
| Arbitrer les écarts et décider de la suite | Responsable métier, puis comité | S4, semaine du 7 décembre |

L'accès d'audit du 29 octobre était temporaire et réservé à l'observation : **il ne sert pas à produire l'extrait**.

## Le circuit

<Mermaid
  title="Du graphe au comparatif"
  caption="L'extrait est produit dans le réseau de CRISalid, filtré avant de le quitter. Les sources ouvertes alimentent les mêmes fiches, en parallèle."
  chart={`flowchart TB
    subgraph DB["Réseau CRISalid, DiBISO"]
      G[("Graphe CRISalid")]
      Q["Requêtes figées"]
      F["Filtres : unités validées,<br/>champs publics, exclusions"]
      X[["Extrait daté<br/>et versionné"]]
      G --> Q --> F --> X
    end
    subgraph VT["Équipe vitrine"]
      O["Sources ouvertes<br/>RNSR, HAL, scanR,<br/>OpenAlex, ORCID, theses.fr"]
      V1["Fiches depuis CRISalid"]
      V2["Fiches depuis<br/>les sources ouvertes"]
      C["Comparatif par unité"]
      V1 --> C
      V2 --> C
    end
    X --> V1
    O --> V2`}
/>

## Le périmètre

- **Une Graduate School**, choisie par la direction de la recherche, **sans unité ZRR** (liste validée par le FSD).
- **Toutes ses unités**, pas seulement celles que CRISalid couvre. Sur l'instance, seules 51 unités sur 235 ont des chercheurs rattachés ([données observées](/03-crisalid/06-instance-saclay/01-donnees-observees#le-rattachement-des-chercheurs-aux-unités)). Les unités vides de CRISalid testent ce que les sources ouvertes apportent : c'est le cœur du comparatif.
- **Volume attendu** : quelques unités à quelques dizaines, quelques centaines de chercheurs, quelques milliers de publications. Il sera mesuré au chargement.

## L'extrait

### Ce qu'il contient

Quatre fichiers, un par entité, chacun daté et portant une version de schéma et une empreinte :

| Fichier | Une ligne par | Champs (liste blanche proposée) |
| --- | --- | --- |
| Unités | unité du périmètre | Libellés long et court, type, RNSR, ROR, wikidata, identifiant local, tutelles, site web |
| Chercheurs | personne **rattachée** à une unité du périmètre | Nom affiché, unité, ORCID, IdRef, IdHAL |
| Publications | publication d'au moins un chercheur exporté | Titre, type, date, revue, DOI, identifiant HAL, accès ouvert |
| Liens | couple chercheur–publication | Rang d'auteur, s'il est connu |

| Exclu dans tous les cas | Raison |
| --- | --- |
| Emails, `eppn`, identifiants techniques, position RH | Données personnelles non publiques ([sécurité et données personnelles](/03-crisalid/03-fonctionnement-transversal/securite-droits-donnees-personnelles)) |
| Corrections internes, états de dépôt HAL, notices non consolidées | Données de travail |
| Projets et financements | Absents de CRISalid ([modèle de données](/03-crisalid/01-donnees/modele-de-donnees)) |
| Dates d'affiliation | Non conservées par CRISalid |

La liste blanche est une **proposition** : CRISalid ne qualifie aucun champ comme public ou privé. Restent à décider : qui valide chaque ligne, et si l'ORCID ou l'IdHAL d'une personne peut être publié sans son accord explicite.

### Les règles de filtrage

| Règle | Pourquoi |
| --- | --- |
| Ne retenir que les unités de la liste validée par le FSD | Seul point de contrôle de la ZRR : CRISalid ne la connaît pas |
| Exclure les entités marquées pour suppression | 3 353 documents attendent une suppression jamais appliquée |
| Ne créer une fiche que pour les chercheurs **rattachés** ; les coauteurs externes restent de simples noms dans la liste des auteurs | Les 833 195 personnes du graphe sont surtout des coauteurs externes |
| Plafonner les dates de publication à la date de l'extrait | Notices datées jusqu'en juillet 2027 |
| Signaler explicitement les unités sans chercheur rattaché | 184 unités sur 235 sont vides sur l'instance |
| Exclure les personnes parties, d'après une liste des actifs fournie par l'établissement | Les départs de l'annuaire ne sont pas propagés dans le graphe ([suppressions non propagées](/03-crisalid/01-donnees/contrats-api-evenements#suppressions-non-propagées)) |

<details>
<summary><strong>Esquisse des requêtes, à valider avec la DiBISO</strong></summary>

Noms observés sur l'instance de développement ; les propriétés exactes restent **à confirmer** avec l'équipe CRISalid.

```cypher
// Chercheurs rattachés aux unités du périmètre
MATCH (p:Person)-[:MEMBER_OF]->(u:ResearchUnit)
WHERE u.uid IN $unites_validees
RETURN u.uid, p.uid, p.display_name;

// Publications de ces chercheurs, hors entités marquées pour suppression
MATCH (p:Person)-[:HAS_CONTRIBUTION]->(:Contribution)<-[:HAS_CONTRIBUTION]-(pub:ScholarlyPublication)
WHERE p.uid IN $chercheurs_exportes
  AND coalesce(pub.to_be_deleted, false) = false
RETURN DISTINCT pub.uid, pub.titles, pub.issued, p.uid;
```

Sur l'instance, ce chemin répond en moins d'une seconde par unité ([test du chemin d'export](/03-crisalid/06-instance-saclay/00-ce-que-linstance-demontre#le-test-dun-chemin-dexport)).

</details>

## Le comparatif, unité par unité

Pour chaque unité du périmètre, le rapport met côte à côte ce que donnent CRISalid et les sources ouvertes :

| Mesure | Comment |
| --- | --- |
| Chercheurs | Présents des deux côtés, d'un seul, absents ; rapprochement par ORCID, IdRef, IdHAL, puis par nom |
| Publications | Rapprochement par DOI, puis par identifiant HAL ; part trouvée d'un seul côté |
| Identifiants pérennes | Part des chercheurs avec ORCID, IdRef ou IdHAL |
| Doublons | Publications partageant un même DOI dans l'extrait |
| Fraîcheur | Date de la publication la plus récente de chaque côté |
| Unité vide dans CRISalid | Ce que les sources ouvertes permettent d'afficher à la place |

**Ce que le comparatif doit produire** : une note par unité, transmise à la DiBISO pour compléter le référentiel, et une synthèse pour le comité. Il **n'établit pas** quelle source a raison : CRISalid reste la référence quand il couvre une unité.

## Les indicateurs

Mesurés **sur l'extrait**, car c'est ce que verra le public. Au POC, ils sont **indicatifs** : seuls les critères d'arrêt de la [Partie 1](./01-partie-1-vitrine-marque-blanche#étape-1--le-poc-de-pertinence) décident.

| Indicateur | Mesure | Rôle |
| --- | --- | --- |
| Unités avec une fiche exploitable | Unités avec au moins un chercheur et des publications, quelle que soit la source ÷ unités du périmètre | **Critère d'arrêt** : au moins 75 % |
| Non-divulgation | Champs hors liste blanche ou unités non validées dans les pages | **Critère d'arrêt** : zéro |
| Couverture par CRISalid seul | Unités couvertes par CRISalid ÷ unités du périmètre | Mesure l'écart à combler par la DiBISO |
| Identifiants pérennes | Chercheurs avec ORCID, IdRef ou IdHAL ÷ chercheurs exportés | Fixe le seuil du lancement |
| Doublons résiduels | Publications partageant un DOI ÷ publications avec DOI | Fixe le seuil du lancement |

Les seuils du lancement sont fixés au comité, à partir de ces valeurs de départ. Les définitions de GO, GO conditionnel, PIVOT et NO-GO sont celles de la [grille d'arbitrage](/02-analyse-lpi/03-audit-technique/02-arbitrage/02-grille-arbitrage).

## Après le POC : qui porte le service d'export

Le POC se contente d'un extrait lancé à la main. La vitrine synchronisée a besoin d'un **service d'export** qui produit le même extrait chaque semaine, le contrôle et alerte en cas d'échec. Il n'existe pas : ni l'API ni le graphe ne produisent de fichier.

| Option | Pour | Contre |
| --- | --- | --- |
| **Livré avec la vitrine, exécuté dans le réseau CRISalid, exploité par la DiBISO** | Une seule équipe écrit l'extrait et le consomme ; le graphe ne sort jamais du réseau ; le code rejoint la suite CRISalid | La DiBISO prend une tâche d'exploitation de plus |
| Écrit et exploité par la DiBISO seule | Proche des données | Aucune charge prévue à la DiBISO ; calendrier incertain |
| Lecture directe de l'API par la vitrine | Rien à écrire | Une seule clé, qui permet aussi d'écrire ; la vitrine dépend de CRISalid à chaque page |

**Proposition de l'audit, à acter au comité (question Q5)** : la première option.
- **Charge estimée** : 8–15 j.h, soit 4–11 k€ au taux mixte, à contre-expertiser par la DSI. Elle s'ajoute au chiffrage du lancement, qui ne la comprend pas.
- **Cadence** : un extrait par semaine au départ, jamais plus fréquent que l'enrichissement réel de CRISalid.
- **Archives** : chaque extrait est conservé ; la version active est désignée explicitement. Si CRISalid est arrêté, l'export échoue et la vitrine sert la version précédente.
- **Test de non-divulgation** : exécuté à chaque export.

**Réversibilité.** Le format de l'extrait appartient à Paris-Saclay. Si CRISalid était abandonné, seule sa production changerait, par exemple depuis HAL ou scanR : la vitrine resterait.
