Ingérer un échantillon via le LRC réel¶
Cette procédure démontre l'interopérabilité : on encode un échantillon de traces en CSV propriétaire, on le passe au LRC Prometheus-X réel, qui le renvoie en xAPI conforme DASES.
Vue d'ensemble¶
LearningTrace (domain)
│
│ CsvTraceEncoder
▼
sample_mathia.csv ─┐
│ POST /convert_custom (multipart)
data/seed/ │ ──────────────────────────────► LRC service
lrc_mapping_ │ │
mathia.yml ────────┘ │ stream JSONL xAPI
▼
traces_via_lrc.jsonl
Détails de conception : ADR 006.
Étape 1 — Démarrer le LRC¶
Suis le runbook LRC (clone + checkout SHA pinné + .env + docker
compose --profile dev up -d).
Vérification :
curl -s -H "Host: lrc.localhost" http://localhost:8080/docs | head -1
# attendu : HTTP/1.1 200 ou un début de HTML
Étape 2 — Lancer la conversion d'un échantillon¶
uv run python scripts/generate_dataset.py --seed 42 --via-lrc=http://localhost:8080
Le script :
- Régénère le dataset complet en xapi-direct (comme
make dataset). - Sélectionne un échantillon : Léa + 1 apprenant par archetype distinct. Soit 4 apprenants, ~199 traces.
- Encode l'échantillon en CSV "Mathia" via
CsvTraceEncoder→data/generated/sample_mathia.csv. - Pinge
GET /docsdu LRC (sanity check). - POSTe le CSV + le mapping YAML versionné
(
data/seed/lrc_mapping_mathia.yml) àPOST /convert_custom. - Stream la sortie JSONL vers
data/generated/traces_via_lrc.jsonl.
Sortie console attendue :
=== Échantillon via LRC (http://localhost:8080) ===
Apprenants : 4 (Léa + 1 par archetype distinct). Traces à envoyer : 199.
Écrit 199 lignes dans data/generated/sample_mathia.csv.
Reçu 199 statements xAPI depuis le LRC -> data/generated/traces_via_lrc.jsonl.
Profils DASES : aucun (meta absent du flux /convert_custom).
Le Profils DASES : aucun est attendu — voir ADR 005.
Étape 3 — Vérifier la sortie¶
head -1 data/generated/traces_via_lrc.jsonl | python3 -m json.tool
Tu dois voir un statement xAPI complet :
{
"actor": {
"account": {"name": "Léa Martin", "homePage": "https://mathia.example.com"}
},
"object": {
"id": "https://mathia.example.com/resource/EX011",
"definition": {"name": {"fr-FR": "Fractions simples - colorier"},
"type": "http://adlnet.gov/expapi/activities/interaction"}
},
"verb": {"id": "http://adlnet.gov/expapi/verbs/passed",
"display": {"en-US": "passed"}},
"result": {"score": {"scaled": 0.567}, "completion": true},
"timestamp": "2026-03-06T09:59:26+00:00"
}
L'encart "Interopérabilité" de la vitrine (Vue d'ensemble) lit ces fichiers et montre l'avant/après en live.
Étape 4 — Arrêter le LRC¶
cd ~/Desktop/lrc
docker compose --profile dev down
Libère les ports et les conteneurs ; le cache des images et le code restent en place pour la prochaine fois.
Limites assumées¶
- 95 % du dataset reste généré en xapi-direct (rapidité + reproductibilité). Seul l'échantillon démonstratif passe par le LRC. Voir ADR 006.
- Le mapping YAML n'écrit pas
result.successà cause d'un bug LRC à ce SHA. Le consommateur déduitsuccessduverb.iden aval.