# GAB-307 · DocumentLearningMapAnalysis — « Analyser une carte »

**Archétype / renderer_key :** `annotation_media` (cartographie) · **module :** EdTechDocumentLearning
**Critère validé :** changer le JSON change la légende et les feedbacks sans modifier le HTML. ✅ check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-307/
  renderer.html            ← moteur analyse de carte (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` · `map_analysis_id` · `document_ref{src,kind,alt}` · `map_title` · `scale` · `legend[]{id,label,color,feedback,is_trap}`

Optionnels : `title`, `map_kind_label`, `orientation`, `instruction`, `fallback_text_summary`, `accessibility`, `child_safety`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre de la carte, items de légende, couleurs de pastilles, feedbacks au clic, marquage `is_trap`, scale, orientation, instruction.
- **HTML** : moteur de clic/clavier, logique "found" / "trap-found", compteur de complétion, layout, fallback panel.

## Garde-fous (child_safety)
- **Anti-invention** : contenu extrait strictement du HTML source GAB-307 — aucune légende inventée.
- **Piège visible** : `is_trap:true` déclenche un feedback ⚠ en gold, jamais masqué.
- **BLOCKED** si `legend` vide, `document_ref` absent, ou `map_title` absent.
- **Asset image** : `document_ref.src` contient `_TODO:assets/...` car aucun fichier image n'était disponible dans la source hardcodée — à renseigner par le producteur de contenu.

## QA à vérifier
1. Modifier un `label`/`feedback` dans l'instance → rendu change sans toucher au HTML (critère d'or).
2. `legend:[]` → BLOCKED propre.
3. Clic item `is_trap:true` → panel warn gold + classe `trap-found`.
4. Tous items cliqués → panel ok "Légende complète lue".
5. Responsive 375/768/1024.
6. Navigation clavier (Tab + Enter/Espace) sur chaque item.

## _TODO / contenus manquants
- `document_ref.src` : l'URL de l'asset carte (`assets/carte-regions-agricoles.jpg`) n'existait pas dans la source HTML hardcodée. Valeur marquée `_TODO:assets/carte-regions-agricoles.jpg` — à remplacer par l'URL réelle.

## external_refs / dependencies
Aucune référence hors-lot. GAB-307 est autonome dans le lot GAB-306→310.

## Source
`INDEX-300-documentlearning-GAB-306-310-PLAYABLE.html` (stage `data-tpl="307"`, handlers `d307Leg`).
