Mise à jour avec la possibilité de mettre des images
This commit is contained in:
@@ -53,20 +53,40 @@ class ChatMessage:
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class LoreStructuralContext:
|
||||
"""Carte structurelle d'un Lore pour nourrir l'IA sans tout lui envoyer.
|
||||
class PageSummary:
|
||||
"""Résumé enrichi d'une page du Lore, projeté pour alimenter le prompt.
|
||||
|
||||
Pas de contenu des pages — uniquement noms, dossiers, templates, tags.
|
||||
Suffit pour que l'IA propose des suggestions cohérentes avec l'existant.
|
||||
Depuis b9 : on ne se contente plus du nom + template, on embarque aussi
|
||||
les valeurs des champs dynamiques (tronquées côté Core Java à 500 car.),
|
||||
les tags, et les titres des pages liées (les IDs techniques sont déjà
|
||||
résolus en titres lisibles côté Java — voir LoreStructuralContextBuilder).
|
||||
|
||||
Les notes privées du MJ restent volontairement absentes ici (confinées
|
||||
à leur page d'édition via PageContext quand l'utilisateur y travaille).
|
||||
"""
|
||||
|
||||
title: str
|
||||
template_name: str
|
||||
values: dict[str, str]
|
||||
tags: list[str]
|
||||
related_page_titles: list[str]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class LoreStructuralContext:
|
||||
"""Carte structurelle enrichie d'un Lore pour nourrir l'IA.
|
||||
|
||||
Depuis b9 : chaque page expose son contenu (values, tags, liens) via
|
||||
PageSummary. Le prompt n'est plus qu'une table des matières — c'est
|
||||
une encyclopédie condensée que le LLM peut directement citer.
|
||||
|
||||
Le dict `folders` est indexé par nom de dossier et mappe vers la liste
|
||||
des pages qu'il contient, chaque page étant représentée par le tuple
|
||||
(page_title, template_name).
|
||||
des pages qu'il contient (PageSummary).
|
||||
"""
|
||||
|
||||
lore_name: str
|
||||
lore_description: str | None
|
||||
folders: dict[str, list[tuple[str, str]]]
|
||||
folders: dict[str, list[PageSummary]]
|
||||
tags: list[str]
|
||||
|
||||
|
||||
@@ -87,3 +107,65 @@ class PageContext:
|
||||
template_name: str
|
||||
template_fields: list[str]
|
||||
values: dict[str, str]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class SceneSummary:
|
||||
"""Résumé d'une scène : nom + description courte + nb illustrations."""
|
||||
|
||||
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
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ChapterSummary:
|
||||
"""Résumé d'un chapitre : nom + description courte + ses scènes."""
|
||||
|
||||
name: str
|
||||
description: str | None
|
||||
scenes: list[SceneSummary]
|
||||
illustration_count: int = 0
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ArcSummary:
|
||||
"""Résumé d'un arc narratif : nom + description courte + ses chapitres."""
|
||||
|
||||
name: str
|
||||
description: str | None
|
||||
chapters: list[ChapterSummary]
|
||||
illustration_count: int = 0
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class CampaignStructuralContext:
|
||||
"""Carte narrative enrichie d'une Campagne pour nourrir l'IA.
|
||||
|
||||
Jumeau de LoreStructuralContext côté Campaign. On décrit l'arbre
|
||||
arcs → chapitres → scènes en donnant le NOM + une DESCRIPTION courte
|
||||
(synopsis) à chaque niveau. Les champs longs (notes MJ, narration
|
||||
joueur, combat) restent réservés à l'entité focus via
|
||||
NarrativeEntityContext. Ordre narratif préservé dans la liste `arcs`.
|
||||
"""
|
||||
|
||||
campaign_name: str
|
||||
campaign_description: str | None
|
||||
arcs: list[ArcSummary]
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class NarrativeEntityContext:
|
||||
"""Contexte d'une entité narrative précise en cours d'édition.
|
||||
|
||||
Équivalent de PageContext côté Campaign. Focalise l'IA sur un Arc,
|
||||
Chapter ou Scene en particulier. `entity_type` ∈ {"arc","chapter","scene"}.
|
||||
Les `fields` sont une map ordonnée nomChamp → valeurActuelle (chaîne
|
||||
vide si non renseigné).
|
||||
"""
|
||||
|
||||
entity_type: str
|
||||
title: str
|
||||
fields: dict[str, str]
|
||||
|
||||
Reference in New Issue
Block a user