Task : Cartes media riches dans le Chat AI
Status : TERMINE
Modifications
1. intentExecutor.ts
- Export
MediaCard interface
- Ajout champ
mediaCards?: MediaCard[] dans IntentExecutionResult
- Nouvelle fonction
buildMediaCards() : parse Items, extrait id/title/subtitle/imageUrl/playerUrl/type
- Popule
mediaCards dans les 2 returns de executeFetchIntent (autoEnrich path + main return)
2. aiChat.ts
- Import
MediaCard depuis intentExecutor
- Nouveau type
MediaCardsMetadata { type: 'media_cards', cards, totalCount }
Message.metadata devient union InteractiveMetadata | MediaCardsMetadata | null
- Injection metadata dans insert ligne ~1140 (clarified intent) et ~1309 (high-confidence)
3. MediaCards.tsx (NOUVEAU)
- Composant Qwik : grille responsive
grid-cols-2 sm:grid-cols-3
- Cards DaisyUI card-compact avec image lazy, titre, sous-titre, bouton "Voir"
- Message "X affiches sur Y resultats" si totalCount > cards.length
4. ChatMessages.tsx
- Import MediaCards
- Types MediaCard, MediaCardsMetadata, union MessageMetadata
- Rendu conditionnel : si metadata.type === 'media_cards' → markdown + MediaCards
- ClarificationButtons inchange (verifie type === 'choices')
Pas de migration DB
Colonne metadata JSONB existante.