# GAB-248 · AssessmentLearningOralAssessment — « Évaluation orale + consentement strict »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechAssessmentLearning
**Tag :** V1_X · XL · P1 · privacy
**Critère validé :** changer le JSON change le rendu sans modifier le HTML. check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-248/
  renderer.html            ← moteur évaluation orale (ne pas modifier par instance)
  instance.example.json    ← SOURCE DE VÉRITÉ (contenu réel, à plat)
  schema.contract.json     ← contrat de validation
  README-contract.md       ← ce fichier
```

## Archétype : évaluation orale avec consentement micro strict

GAB-248 couvre **l'évaluation orale pédagogique** (score + critères), distinct de l'entraînement oral (AudioOralExamPractice, module Audio, pratique répétée). La différence clé :
- `AudioOralExamPractice` = pratique répétée, module 9 (Audio)
- `GAB-248 OralAssessment` = évaluation notée + critères + garde-fous RGPD (ce gabarit, module 16)

## Champs requis (instance, à plat)
`gab_id` · `oral_assessment_id` · `title` · `oral_type` · `consent_chain{heading,description,steps[]}` · `criteria[]{index,title,description}` · `privacy_rules` · `non_official_notice` · `primary_cta{label,action}`

Optionnels : `subtitle`, `no_biometric_notice`, `secondary_cta{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, type oral, chaîne de consentement (étapes + états), liste des critères, règles privacy, notice non-officielle, libellés CTAs.
- **HTML** : layout, consent-box, critères visuels, blocs privacy/no-diag/non-official, boutons structurels.

## Garde-fous critiques (child_safety + RGPD)

### Chaîne de consentement micro obligatoire
Trois conditions cumulatives avant activation micro :
1. Consentement élève explicite
2. Consentement parental si élève < 15 ans (RGPD art.8)
3. Activation micro navigateur

Le step `danger` (enregistrement par défaut) est barré visuellement — l'enregistrement n'est jamais activé par défaut.

### Interdiction biométrie vocale (RGPD art.9)
`no_biometric_notice` : ce gabarit évalue uniquement la **structure et clarté pédagogique** de l'oral. Aucune analyse ni stockage de caractéristiques biométriques de la voix (timbre, hauteur, fluence pathologique) — donnée de santé sensible.

### Privacy audio
- Audio chiffré côté serveur
- Jamais transmis à un tiers
- Supprimé sous 30 jours (sauf opt-in explicite)
- Transcript éventuel : local browser uniquement, jamais en base

### Notice non-officielle obligatoire (BLOCKED si absente)
Ce gabarit n'est JAMAIS un jury officiel et ne remplace pas l'épreuve réelle du Grand Oral du Bac.

## BLOCKED si
- `consent_chain` absent
- `criteria` vide ou absent
- `primary_cta` absent
- `non_official_notice` absent

## QA à vérifier
1. Modifier `criteria[0].title` → rendu change sans toucher au HTML.
2. `criteria:[]` → BLOCKED propre affiché.
3. `consent_chain` absent → BLOCKED.
4. `non_official_notice` absent → BLOCKED.
5. CTA primaire → panel ok affiché.
6. CTA secondaire (micro) → panel ok affiché.
7. Responsive 375/768/1024 — consent_chain lisible sur mobile.

## Source
`INDEX-300-assessmentlearning-GAB-246-250-PLAYABLE.html` (stage `data-tpl="248"`, section `<!-- GAB-248 ORAL ASSESSMENT -->`).

## Références externes (external_refs / dependencies)
- **GAB-247** (AssessmentLearningExamMode) : consom le même module, désactivations différentes.
- **AudioOralExamPractice** (module Audio) : entraînement oral distinct — ne pas confondre avec ce gabarit d'évaluation.
- RGPD art.5 (minimisation données), art.8 (consentement mineur), art.9 (données de santé biométriques).
