# Project: MJ (AI Driven)

Ce document récapitule l'état du projet au mardi 7 avril 2026.

## 🚀 État Actuel
Le site est fonctionnel avec une interface immersive. Le Maître du Jeu (MJ) est piloté par l'IA (Multi-fournisseurs via Prism) et communique par voix (synthèse et reconnaissance).

### Composants Clés
1. **Interface (UI) :** 
   - Composant Livewire Volt : `resources/views/livewire/game.blade.php`.
   - Design : Tailwind CSS 4.0 avec styles standardisés dans `resources/css/app.css`.
   - Interaction : Reconnaissance vocale (STT) et Synthèse vocale (TTS) via Web Speech API (Navigateur).

2. **Cerveau (IA) :**
   - Service : `app/Services/GameMasterService.php`.
   - Abstraction : [Prism](https://prism.echolabs.dev/) (compatible OpenAI, Gemini, Anthropic, Ollama...).
   - Rôle : MJ narratif, gère les combats automatiquement, joue les PNJ, mémorise le contexte.

3. **Persistance (Données) :**
   - Tables : `campaigns`, `characters`, `messages`.
   - Stockage : SQLite (par défaut).
   - Logique : Chaque interaction est sauvegardée pour permettre de reprendre l'histoire.

## 🛠 Configuration Requise
- **Variables d'environnement :** `AI_PROVIDER` (ex: `openai`) et `AI_MODEL` (ex: `gpt-4o-mini`) doivent être configurés dans le `.env` avec les clés API correspondantes.
- **Assets :** Toujours lancer `npm run dev` ou `npm run build` après modification des styles.
- **Route principale :** Accessible via `/game` (nommé `game`).

## 📜 Règles de Codage & Standards
- **PHP :** Strict types (`declare(strict_types=1)`), PHPDoc complète, conformité PHPStan/PHPMD. Utf8 sans BOM.
- **CSS :** Utilisation de classes sémantiques dans `app.css` (@layer components) pour éviter de surcharger le Blade.
- **Layout :** Utilise le composant standard Laravel `<x-layouts.app>` situé dans `resources/views/components/layouts/app.blade.php`.
- **Langue :** Narration et interface exclusivement en **Français**.

## 🚀 Prochaines Étapes Suggérées
1. **Extraction de Texte PDF :** Créer un script pour indexer le contenu de `storage/jdr/Cyberpunk/` et l'injecter dans le contexte de l'IA pour une fidélité totale aux règles.
2. **Dashboard Joueur :** Ajouter un panneau latéral dans `/game` pour afficher en temps réel les PV, les Eurodollars et l'inventaire depuis la table `characters`.
3. **Système de Dés Visuel :** Ajouter une petite animation de dés lors des combats automatiques narrés par le MJ.

---
*Ce fichier a été généré pour assurer la continuité du développement.*

## Erreur de Login

- php artisan livewire:publish --assets
- Copier vendor/livewire/dist/flux.min.js dans public/flux/

## 📥 Importation de nouveaux scénarios

Le projet dispose d'un système automatisé pour importer et structurer de nouveaux scénarios à partir de fichiers texte ou markdown bruts.

### 1. Préparation
Placez votre fichier source (ex: `mon_scenario.txt`) dans un dossier temporaire ou directement dans `storage/app/`.

### 2. Importation et Analyse IA
Lancez la commande suivante pour analyser le scénario via l'IA (Multi-fournisseurs) et générer la structure de fichiers :
```bash
php artisan app:import-scenario "chemin/vers/votre/fichier.txt"
```
Cette commande va :
- Identifier automatiquement le jeu et le titre.
- Générer un dossier dans `storage/jdr/` avec les fichiers `SYSTEM.md` (règles) et `scenario.md` (récit).
- Créer trois fichiers de seeders dans `database/seeders/` pour les Salles, les Personnages et le Scénario.

### 3. Migration vers la Base de Données
Pour injecter les données extraites dans la base de données, lancez le seeder principal généré (le nom est affiché à la fin de la commande précédente) :
```bash
php artisan db:seed --class=NomDuScenarioSeeder
```

### 4. Illustration
L'IA génère également un `image_prompt` dans la table `scenarios`. Vous pouvez l'utiliser pour générer une couverture (ex: via Midjourney ou DALL-E) et l'enregistrer dans `public/images/scenarios/`.

## Deploiement
scripts\prepare-release.bat ou scripts\prepare-release.sh pour lancer le build de l'apk
git add public/downloads/mj-virtuel-latest.apk
git push origin main.