Initial commit - LoreMind project
This commit is contained in:
33
docs/loremind-contexte.md
Normal file
33
docs/loremind-contexte.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# LoreMind - Document de Contexte et d'Architecture
|
||||
|
||||
## 1. Vision du Produit
|
||||
LoreMind est une application web d'aide aux Maîtres de Jeu (JDR). Elle permet de centraliser la gestion de l'univers (Lore) et le suivi des campagnes.
|
||||
**Fonctionnalité clé :** Intégration d'un moteur IA capable de générer des pages de contenu complètes (PNJ, Villes, Quêtes) à partir de templates prédéfinis.
|
||||
**Objectif final :** Permettre l'export structuré de ces données vers FoundryVTT.
|
||||
|
||||
## 2. Stack Technologique Globale
|
||||
L'application suit une architecture distribuée pour séparer les responsabilités :
|
||||
* **Frontend :** Angular (Interface utilisateur, affichage du lore, formulaires de templates).
|
||||
* **Backend Core (Métier & Données) :** Java (Spring Boot recommandé). Orchestre l'application, gère la persistance et l'export VTT.
|
||||
* **Backend IA (Cognitif) :** Python. Dédié au traitement des LLM et à la génération de contenu selon les gabarits.
|
||||
* **Base de Données :** PostgreSQL. Stockage relationnel classique, avec utilisation intensive du type `JSONB` pour stocker les templates flexibles.
|
||||
|
||||
## 3. Architecture du Backend Java (Règles strictes)
|
||||
Le développement du Backend Core doit IMPÉRATIVEMENT respecter le **Domain-Driven Design (DDD)** et l'**Architecture Hexagonale (Ports et Adaptateurs)**.
|
||||
|
||||
### 3.1. Contextes Délimités (Bounded Contexts)
|
||||
Le code doit être séparé selon ces domaines autonomes :
|
||||
* `LoreContext` : Gestion de l'encyclopédie de l'univers (Lieux, Factions, PNJ).
|
||||
* `CampaignContext` : Suivi des sessions, actions des joueurs, chronologie.
|
||||
* `GenerationContext` : Gestion des requêtes IA, traitement des templates et communication avec le Backend Python.
|
||||
|
||||
### 3.2. Règles d'Architecture Hexagonale
|
||||
* **Domaine (Core) :** Contient les entités métier pures et les interfaces (Ports). Il ne doit avoir **aucune** dépendance technique (ni Spring, ni annotations JPA, ni base de données).
|
||||
* **Application (Use Cases) :** Orchestre les flux de données (ex: `GenerateNpcUseCase`).
|
||||
* **Infrastructure (Adapters) :** Implémente les interfaces du domaine (ex: `PostgresLoreRepository`, `PythonAiClient`, `RestControllers`).
|
||||
|
||||
## 4. Directives pour l'IA (Windsurf)
|
||||
* Utilise toujours le vocabulaire du domaine (*Ubiquitous Language*) dans le nommage des classes et méthodes (ex: `LoreNode`, `Template`, `Campaign`).
|
||||
* Assure-toi que les entités du domaine ne soient jamais anémiques (la logique métier est dans l'entité, pas dans des services externes).
|
||||
* Pour la base de données PostgreSQL, utilise la spécification JSONB dès qu'une structure de donnée est liée à un template modulable.
|
||||
* Commente uniquement la logique métier complexe, évite les commentaires évidents.
|
||||
Reference in New Issue
Block a user