Intégration du graphe et du multi-branche pour la partie campagne

This commit is contained in:
2026-04-21 05:05:11 +02:00
parent 17f197484a
commit 8afb17a392
31 changed files with 1933 additions and 13 deletions

View File

@@ -4,7 +4,7 @@ On utilise @dataclass (pas Pydantic) pour garder le domaine exempt de toute
dépendance framework. Pydantic apparaît uniquement aux frontières : DTOs HTTP
dans `main.py`, Settings dans `core/config.py`.
"""
from dataclasses import dataclass
from dataclasses import dataclass, field
@dataclass(frozen=True)
@@ -109,15 +109,30 @@ class PageContext:
values: dict[str, str]
@dataclass(frozen=True)
class SceneBranchHint:
"""Indice d'une branche narrative vers une autre scène du même chapitre.
Le Core Java résout déjà `targetSceneId` en nom humain avant l'envoi :
l'IA ne voit donc jamais d'UUID, seulement des noms qu'elle peut citer.
"""
label: str
target_scene_name: str
condition: str | None = None
@dataclass(frozen=True)
class SceneSummary:
"""Résumé d'une scène : nom + description courte + nb illustrations."""
"""Résumé d'une scène : nom + description courte + illustrations + branches."""
name: str
description: str | None
# Depuis l'etape 6 : permet a l'IA de savoir qu'une scene a des illustrations
# attachees. 0 par defaut pour retrocompat si le Core n'envoie rien.
illustration_count: int = 0
# Connexions narratives sortantes (livre dont vous etes le heros).
branches: list[SceneBranchHint] = field(default_factory=list)
@dataclass(frozen=True)