# Aperçu des TCG supportés

# Aperçu des TCG supportés

> _Dernière mise à jour : 2026-05-10_

6 TCG intégrés. Chaque TCG a une page dédiée dans ce chapitre. Workflow de mise à jour des cartes : voir `mettre-a-jour-cartes.md`. Workflow d'ajout d'un nouveau TCG : voir `ajouter-un-tcg.md`.

## Tableau récap

| TCG | Collection Qdrant | Source data | Type source | Fréquence maj | Symboles UI | Deckbuilding | Méta |
|---|---|---|---|---|---|---|---|
| **Magic: The Gathering** | `magic-cards` | Scryfall bulk JSON + traduction Haiku | Téléchargée | À chaque set Standard (~3-4×/an) | mana-font (webfont) | ✅ | ✅ 17Lands + MTGGoldfish + MTGTop8 |
| **Disney Lorcana** | `lorcana-cards` | LorcanaJSON.org | Téléchargée (MIT) | À chaque set | PNG Ravensburger | ⚠️ partiel | ❌ DotGG figée nov 2025 |
| **Flesh and Blood** | `flesh-and-blood-cards` | Package npm `@flesh-and-blood/cards` | Bundlée image Docker | À chaque set | PNG LSS | ✅ | ✅ fabtcg.com tournois |
| **Riftbound** | `riftbound-cards` | API Riot card-gallery | Live API | À chaque set | PNG Riot press-kit | ✅ | ✅ Mobalytics + RiftboundStats |
| **Terraforming Mars** | `terraforming-mars-cards` | HTML parsing + cards.json | Statique locale | Quasi-statique | (cards.json) | ❌ pas de format | ❌ |
| **Ark Nova** | `ark-nova-cards` | JSON + sprites | Statique locale | Quasi-statique | (sprites locales) | ❌ | ❌ |

## Caractéristiques transverses

### Côté backend
- **Source** : implémente l'interface `CardSource` dans `src/services/cards/sources/<tcg>.ts` (`load()`, `normalizeCard()`, `getImageUrl()`)
- **Registry** : enregistré dans `src/services/cards/sources/registry.ts` (Map `collection → CardSource`)
- **Cache mémoire** : `cards-cache.ts` charge la collection au boot (warm-up `CARD_WARM_TIMEOUT_MS`)
- **Recherche** : `/api/cards/search` utilise BM25 ou full-text in-memory

### Côté frontend
- **Symboles inline** : `frontend/src/lib/<tcg>-symbols.ts` avec regex whitelist + remplacement
- **Hook autocomplete** : `useMentionAutocomplete` debounce 150ms → `/api/cards/search`
- **Modale zoom** : `CardZoomModal.vue` (770+ lignes, async load) gère stats + ability text par TCG

### Côté RAG
- **`hasCardDatabase`** sur `games` : pointe vers la collection Qdrant correspondante. Active dynamiquement :
  - Autocomplete `@card`
  - Bloc `CARTES CITÉES` dans le userPrompt
  - Mode deckbuilding (selon les champs structurels disponibles)
  - Resync via `/admin`

### Côté méta
- Chunks `[META]` ingérés via `services/meta/<source>.ts`
- Ingest sources : `services/meta/ingest.ts` (snapshot → chunks)
- Cron `meta-sync.ts` orchestre la fréquence (par défaut hebdo, configurable par TCG)

## Limites actuelles

- **Lorcana méta** : DotGG est figé depuis le 21 nov 2025. Pas de source alternative pour l'instant. Si DotGG reprend, juste relancer `META_LORCANA_*` (pas implémenté car source morte).
- **TM / Ark Nova deckbuilding** : pas de champs structurels (format, hero, color identity). Retombe silencieusement sur retrieval synergy seul.
- **Pokemon TCG** : pas implémenté. Procédure dans `ajouter-un-tcg.md`.
- **Pas de cross-TCG dans une même question** : un jeu = une `hasCardDatabase` unique. Le mode "MTG vs Lorcana sur le même chat" n'a pas de sens applicatif.