> ⚠️ **GAB SENSIBLE — VALIDATION BOSS OBLIGATOIRE avant tout usage.** (child-safety / RGPD / orientation / career). Contenu extrait sans invention ; à relire par un humain.

# GAB-379 · CareerLearningProfessionalInterviewPrep — « Préparer une interview »

**Archétype / renderer_key :** `quiz_scoring` (cartographie officielle) · **module :** EdTechCareerLearning
**Critère validé :** changer le JSON change l'écran (questions, libellés, feedback) sans modifier le HTML. ✅ check.py 12/12.

> ⚠️ **GAB SENSIBLE — FLAG REVUE BOSS OBLIGATOIRE**
> Ce gabarit relève de l'**orientation / career** ET met en jeu l'**interview d'un professionnel réel** (collecte d'avis, prise de notes). Zone child-safety / RGPD.
> **Revue Boss requise avant toute mise en prod.** Aucune question n'a été inventée : extraction 100 % du HTML source.

## Pack (structure officielle par-GAB)
```
GAB-379/
  renderer.html            ← moteur prépa interview (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
```

## Champs requis (instance, à plat)
`gab_id` · `interview_prep_id` · `respectful_questions[]{id,text}` · `consent_required` (=true) · `primary_cta{label,action,disabled_until_selection}`
Optionnels : `title`, `intro_note`, `instruction`, `progress_label_template`, `confirmed_cta_label`, `consent_feedback`, `use_when[]`, `do_not_use_when[]`, `child_safety{}`.

## Ce qui vient du JSON vs HTML
- **JSON** : le texte de chaque question respectueuse, l'intro, l'instruction, le gabarit de progression, le libellé du bouton, le feedback de consentement, les listes use_when / do_not_use_when.
- **HTML** : la liste de questions cochables (checkbox visuelle), la barre de progression, le bouton structurel de confirmation, le panneau de feedback, le layout.

## Garde-fous (child_safety)
- **Consentement non négociable** : `consent_required` DOIT valoir `true` → sinon BLOCKED. L'écran rappelle « avec le consentement du professionnel ».
- **Anti-invention** : les questions sont fournies par l'instance (pré-validées), jamais générées par le moteur ni l'élève.
- **Confidentialité** : prise de notes confidentielle rappelée dans le feedback de confirmation.
- **do_not_use_when** explicite les interdits : questions intrusives, interview sans consentement, absence de fiche (renvoi GAB-380).
- **BLOCKED** si `respectful_questions` vide / `consent_required != true` / `primary_cta.label` absent.

## external_refs / dependencies
- **GAB-380 (CareerLearningEmptyState)** : cité dans `do_not_use_when` (« absence de fiche → GAB-380 ») et dans le bloc `usage` du source. Référence narrative inter-lot uniquement — **aucune dépendance de code** : le renderer GAB-379 est autonome. Pas d'identifiant GAB-380 laissé dans le code exécutable (présent seulement comme texte de contenu extrait du source).

## TODO / contenu manquant (anti-invention)
- `child_safety.objective` = **_TODO** : le slot `objective` est listé comme optionnel dans le source mais aucun objectif explicite n'est fourni en dur dans le HTML. À renseigner par l'enseignant — non inventé.

## QA à vérifier
1. Modifier un `text`/le `consent_feedback` → rendu change sans toucher au HTML (critère d'or). 2. `respectful_questions:[]` → BLOCKED propre. 3. `consent_required:false` → BLOCKED. 4. Cocher ≥1 question → bouton actif ; confirmer → feedback consentement + bouton verrouillé. 5. Responsive 375/768/1024.

## Source
`INDEX-300-careerlearning-GAB-376-380-PLAYABLE.html` (stage `data-tpl="379"`, handlers `d379Tick` / `d379Consent`).
