# Terraforming Mars

# Terraforming Mars

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

Pas un TCG au sens strict (jeu de société avec base de cartes fixe), mais traité comme tel pour l'autocomplete `@`.

## Source

- **HTML parsing local** + cards.json (extraction one-shot des règles officielles)
- **Collection Qdrant** : `terraforming-mars-cards`
- **Data dir** : `TM_CARDS_DATA_DIR` (défaut `/app/data/terraforming-mars-cards`)
  - `cards.json` : extrait via parsing HTML
  - `images/` : PNG cartes locales

## Code

| Fichier | Rôle |
|---|---|
| `src/services/cards/sources/terraforming-mars.ts` | CardSource |
| `scripts/terraforming-mars-cards/parse-html.ts` | Parse les règles HTML → cards.json |
| `scripts/terraforming-mars-cards/ingest.ts` | Push Qdrant |
| `scripts/terraforming-mars-cards/link-game.ts` | Lie ligne `games` |

## Payload Qdrant `terraforming-mars-cards`

```typescript
{
  id: pointId,
  name: string,
  cost: number,
  card_type: 'Project' | 'Corporation' | 'Prelude' | 'Standard',
  effect: string,             // texte de l'effet
  victory_points: number,
  tags: string[],             // ['Plant', 'Microbe', 'Building', ...]
  requirements: string,       // ex: "Temperature -14°C+"
  image_url: string,          // chemin local
}
```

## Images

Servies localement via proxy `/api/cards/image/:pointId` (resize sharp). Pas de CDN externe.

## Symboles UI

Pas de symboles dédiés pour TM — les ressources (oxygène, température, océan, MC, plant, animal, microbe…) sont rendues comme texte descriptif dans les abilities. Si on veut ajouter des PNG plus tard : créer `frontend/src/lib/tm-symbols.ts` + assets dans `frontend/public/tm-icons/`.

## Pas de méta ni deckbuilding

- TM n'a pas de format compétitif structuré (pas de Standard / Modern, pas d'archétypes formels au sens MTG)
- Le mode deckbuilding ne s'applique pas (le "deck" en TM dépend du draft initial, pas d'une construction préalable)
- Le RAG retombe sur retrieval synergy seul si une question deckbuilding est posée

## Mise à jour

Quasi-statique. Le jeu de base est figé, seules les extensions occasionnelles ajoutent des cartes :

```bash
docker exec boardgame-referee npm run cards:tm:parse-html
docker exec boardgame-referee npm run cards:tm:ingest
```

Puis `/admin` → Resync TM cards (si tu veux passer par l'UI).

## Cas d'usage typique

- Citer une carte spécifique : `@Birds` → l'oracle voit les détails (effet, points, requirements)
- Question synergy : "Quelles cartes synergisent avec Plant tags ?" → retrieval cartes + chunks règles