# Le moissonneur (svp-harvester)

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

> **En bref :**
> Le moissonneur va chercher les publications d'un chercheur dans les grandes bases, à partir de ses identifiants, et les met dans un format commun. Il ne décide pas des doublons.
> Sur l'instance de développement, il a rapporté **536 361 notices** de quatre sources : OpenAlex, scanR, HAL et IdRef.

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

Le moissonneur (svp-harvester) remplit le graphe **sans ressaisie**. On lui donne les identifiants d'une personne (IdRef, ORCID, idHAL…) ; il interroge en parallèle les bases de publications et renvoie tout ce qu'il trouve.

Personne ne l'utilise directement : il répond aux demandes du graphe. Ces demandes partent de deux endroits : un chercheur qui clique sur « mettre à jour mes publications » dans SoVisu+, ou une tâche qui relance à intervalle court le moissonnage d'une personne tirée au hasard ([exploitation](/03-crisalid/03-fonctionnement-transversal/exploitation-et-gouvernance)). Son écran d'administration sert à observer, pas à piloter.

## Ce qui se passe dedans

<Mermaid
  title="Un moissonnage, de la demande au graphe"
  caption="Chaque base a son format ; le moissonneur les traduit toutes dans un format commun avant de les transmettre. Le rapprochement des doublons se fait ensuite, dans le graphe."
  chart={`flowchart TB
    D["Demande du graphe<br/>identifiants d'une personne"]
    P["Interrogation en parallèle<br/>OpenAlex, scanR, HAL, IdRef"]
    C["Traduction dans<br/>un format commun"]
    H[("Historique des<br/>moissonnages")]
    B(["Bus : notice nouvelle,<br/>modifiée, inchangée, disparue"])
    G[("Le graphe")]
    D --> P --> C
    C --> H
    C --> B --> G`}
/>

<Screenshot
  src="/images/crisalid/moissonneur-fonctionnement.png"
  alt="Schéma : une demande portant les identifiants d'un chercheur déclenche des moissonnages parallèles HAL, IdRef, scanR, puis un convertisseur vers un format de référence commun"
  title="Le principe du moissonneur, selon ses auteurs"
  caption="Une demande arrive avec les identifiants d'une personne ; les moissonnages tournent en parallèle ; un convertisseur produit un format commun."
  source="schéma officiel du dépôt svp-harvester"
  sourceUrl="https://github.com/CRISalid-esr/svp-harvester"
/>

Le moissonneur garde l'historique de ce qu'il a déjà rapporté et qualifie chaque notice : nouvelle, modifiée, inchangée ou disparue. Le graphe ne traite pas les notices disparues ([suppressions non propagées](/03-crisalid/01-donnees/contrats-api-evenements#suppressions-non-propagées)). Pour les publications d'économie, il complète la description avec le [vocabulaire JEL](/03-crisalid/02-sous-projets/carte-des-sous-projets#ce-quil-faut-savoir-des-autres-briques).

## Ce qu'on a observé

| Constat | Statut | Source |
|---|---|---|
| Cinq sources sont programmées ; quatre alimentent réellement le graphe : Scopus n'alimente aucune notice | Confirmé | [catalogue des sources](/03-crisalid/01-donnees/catalogue-des-sources) |
| Web of Science est cité dans la documentation, mais aucun connecteur n'existe | Confirmé | [connecteurs du dépôt](https://github.com/CRISalid-esr/svp-harvester/tree/6898db85/app/harvesters) |
| Aucune déduplication : les notices partent telles quelles, le graphe les rapproche | Confirmé | [README](https://github.com/CRISalid-esr/svp-harvester/blob/6898db85/README.md) |
| Le dépôt se dit lui-même « pas encore prêt pour la production » | Confirmé | [README](https://github.com/CRISalid-esr/svp-harvester/blob/6898db85/README.md) |
| Licence CeCILL 2.1 | Confirmé | [licence](https://github.com/CRISalid-esr/svp-harvester/blob/6898db85/LICENCE) |
| 536 361 notices : OpenAlex 200 569, scanR 171 533, HAL 113 558, IdRef 50 701 | Observé sur instance (dev) | [données observées](/03-crisalid/06-instance-saclay/01-donnees-observees#la-provenance) |
| Des notices datées jusqu'en juillet 2027, telles que les sources les livrent | Observé sur instance (dev) | [données observées](/03-crisalid/06-instance-saclay/01-donnees-observees#les-dates-futures) |
| Le service tourne ; ses routes de données sont protégées | Observé sur instance (dev) | [ce que montre l'instance](/03-crisalid/06-instance-saclay/00-ce-que-linstance-demontre) |

## Pour la vitrine

- ***Apporte*** : les publications des chercheurs suivis, tirées des sources ouvertes de référence, avec leur provenance et leurs identifiants (DOI, HAL, PubMed…).
- ***Prouvé*** : quatre sources moissonnées en volume sur l'instance ; les identifiants de publication sont riches (222 013 DOI, 165 867 identifiants HAL).
- ***Bloque ou reste à prouver*** : il ne moissonne que les **personnes connues** du graphe, donc rien pour les unités sans chercheur rattaché ; la couverture d'un corpus complet par le tirage au hasard n'est pas mesurée ; les dates futures doivent être plafonnées dans l'extrait. Ces sources étant ouvertes, le POC peut les interroger directement pour comparer.

## Liens

- Dépôt officiel : [github.com/CRISalid-esr/svp-harvester](https://github.com/CRISalid-esr/svp-harvester)
- Documentation officielle : [svp-harvester.readthedocs.io](https://svp-harvester.readthedocs.io/en/latest/overview.html) ; [configuration du moissonnage](https://crisalid-esr.github.io/crisalid-deployment/map/harvesting.html)
- Pages qui font foi : [catalogue des sources](/03-crisalid/01-donnees/catalogue-des-sources) ; [données observées, provenance](/03-crisalid/06-instance-saclay/01-donnees-observees#la-provenance)

Révision lue : `6898db85`
