# Contrôler le moissonneur et ses adaptateurs
> **En bref :**
> Ce contrôle lit la configuration du moissonneur (svp-harvester) : sources déclarées, ordre des identifiants, paramètres du bus. Sans base ni appel réseau. Statut : **Confirmé** (exécution locale).

**Résultat :** code `0`, 7 tests sur 7, relancé le 30 octobre 2026. Cinq sources sont déclarées, chacune avec son adaptateur : IdRef, scanR, HAL, OpenAlex, Scopus. Web of Science, cité par le README, n'existe ni dans la configuration ni dans le code.

## Pourquoi ce contrôle

Les publications arrivent dans CRISalid par le moissonneur. Ce contrôle répond à **« quelles sources sait-il interroger, dans quel ordre d'identifiants, et par quel canal répond-il ? »**. Les sources réellement utilisées à Paris-Saclay sont dans le [catalogue des sources](/03-crisalid/01-donnees/catalogue-des-sources).

## Avant de commencer

- Python 3, bibliothèque standard seulement.
- Le dépôt de l'audit et la copie `svp-harvester` dans `official-crisalid`.
- **À ne pas faire :** lancer PostgreSQL, RabbitMQ ou un conteneur ; appeler une API distante.

## Étapes

### Étape 1 — Lancer le contrôle

**Pourquoi :** lire la configuration réelle du dépôt sans dépendre d'aucun service.

```bash
python3 scripts/check-crisalid-harvester-contract.py
```

### Étape 2 — Savoir ce qui est inspecté

**Pourquoi :** la preuve porte sur des fichiers, pas sur un service en marche.

Le script lit `harvesters.yml`, `identifiers.yml` et `jobs.yml`, analyse sans les exécuter les réglages et l'interface du bus, et vérifie les tables créées par la première migration de la base.

### Étape 3 — Lire le rapport

**Pourquoi :** chaque test répond à une question précise.

- Cinq adaptateurs déclarés, chacun relié à une classe existante ; pas de Web of Science.
- Dix types d'identifiants, dans un ordre fixe, d'`idref` (priorité 0) à `local` (9).
- Une tâche quotidienne de mise à jour des concepts.
- Échange `publications`, files `svp-harvester-interactive` et `svp-harvester-batch`, file de rebut `dlx.publications`.
- Tables de notices, contributeurs, organisations et concepts présentes dès la première migration.

## Ce que le contrôle établit

La configuration statique du dépôt : ce que le moissonneur **sait** faire. Il ne dit pas quelles sources sont activées sur une instance.

## Limites

- Aucune source distante n'est interrogée ; ni base, ni bus.
- Scopus est déclaré mais n'alimente aucune notice à Paris-Saclay ([catalogue des sources](/03-crisalid/01-donnees/catalogue-des-sources)).
- La suite de tests amont réinitialise sa base : jamais sur une base partagée.
- Pour un moissonnage réel dans une pile isolée : [moissonner les publications](/03-crisalid/04-tutoriels/01-parcours/enrichir-les-publications).

## Et ensuite

Contrôle suivant : [Fusion et corrections](./verifier-fusion-corrections).

Révision lue : `svp-harvester` `6898db85`.
