# Vérifier les champs transmis de Directory Bridge à IKG
> **En bref :**
> Neuf tests suivent les champs de l'annuaire du convertisseur de Directory Bridge jusqu'au modèle de personne d'IKG. Statut : **Confirmé** (exécution locale).

**Résultat :** code `0`, 9 tests sur 9, le 22 octobre 2026. Emails, HDR et types d'appartenance sont transmis puis ignorés par IKG ; un ResearcherID fait rejeter toute la personne ; une date d'emploi invalide bloque la conversion.

## Pourquoi ce contrôle

Un champ lu par Directory Bridge n'arrive pas forcément dans le graphe : IKG peut l'ignorer ou rejeter la personne. Ce contrôle répond à **« quels champs de l'annuaire survivent jusqu'à IKG ? »**, donc à ce qu'une vitrine pourra afficher. Les résultats sont tenus dans le [dictionnaire de données](/03-crisalid/01-donnees/dictionnaire-de-donnees).

Il complète le [contrôle du lecteur CSV](./preparer-directory-bridge) : ici, les colonnes sont fournies directement au convertisseur, sans le lecteur.

## Avant de commencer

- Python 3.12, et les copies `crisalid-directory-bridge` et `crisalid-ikg` dans `official-crisalid`.
- **À ne pas faire :** installer Airflow ou la pile. Aucun service ni connexion au graphe n'est lancé.

## Étapes

### Étape 1 — Créer l'environnement et lancer les tests

**Pourquoi :** reproduire le comportement réel du code sans rien installer de la pile.

```bash
env_dir=$(mktemp -d)
python3.12 -m venv "$env_dir/venv"
"$env_dir/venv/bin/python" -m pip install -r scripts/crisalid-contract-requirements.txt
"$env_dir/venv/bin/python" scripts/check-crisalid-bridge-contract.py
```

Garder `env_dir` : le [contrôle des textes](./verifier-contrat-textes) réutilise cet environnement.

### Étape 2 — Savoir ce qui est exécuté tel quel

**Pourquoi :** la preuve ne vaut que pour le code réellement importé.

Seul le décorateur Airflow est neutralisé ; le convertisseur, les utilitaires de dates et les modèles d'IKG sont importés tels quels. Le CSV d'exemple est testé d'abord sans adaptation, puis sans la colonne `researcherid` (copie en mémoire) pour observer les autres champs.

### Étape 3 — Lire la sortie

**Pourquoi :** distinguer « comportement reproduit » de « contrat sans défaut ».

La sortie affiche neuf tests, puis un rapport JSON avec les versions et révisions.

## Ce que le contrôle établit

- Un ResearcherID présent fait rejeter la personne entière par IKG.
- Emails, HDR et types d'appartenance sont émis par le Bridge et ignorés par le modèle d'IKG.
- Les dates de rattachement survivent jusqu'au modèle ; une date d'appartenance invalide est omise, une date d'emploi invalide bloque la conversion.

## Limites

- Le test s'arrête au modèle d'IKG : l'écriture dans le graphe, qui crée les rattachements sans dates, n'est pas exécutée ([modèle de données](/03-crisalid/01-donnees/modele-de-donnees)).
- Ni bus, ni API, ni SoVisu+.
- Données d'exemple du dépôt uniquement.

## Et ensuite

Contrôle suivant : [IKG sans lancer les services](./preparer-ikg).

Révision lue : `crisalid-directory-bridge` `95be05d7`, `crisalid-ikg` `ebdaae75`.
