2026-05-03 16:17:47 +00:00
|
|
|
from dataclasses import dataclass
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
|
class Adventure:
|
|
|
|
|
id: str
|
|
|
|
|
user_id: str
|
|
|
|
|
status: str # 'awaiting_first_entry' | 'active' | 'complete' | 'error'
|
|
|
|
|
language: str
|
|
|
|
|
source_language: str
|
|
|
|
|
competencies: list[str]
|
|
|
|
|
max_entry_count: int
|
|
|
|
|
entry_story_text_target_length: dict # {"min": int, "max": int}
|
|
|
|
|
title: str
|
|
|
|
|
description: str | None
|
|
|
|
|
plot_summary: str | None
|
|
|
|
|
genres: list[str]
|
|
|
|
|
setting: list[str]
|
|
|
|
|
vibes: list[str]
|
|
|
|
|
protagonist: list[str]
|
|
|
|
|
created_at: datetime
|
|
|
|
|
deleted_at: datetime | None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
|
class AdventureEntry:
|
|
|
|
|
id: str
|
|
|
|
|
adventure_id: str
|
|
|
|
|
generated_from_choice_id: str | None
|
|
|
|
|
status: str # 'generating' | 'complete' | 'error'
|
|
|
|
|
entry_index: int
|
|
|
|
|
story_text: str | None
|
|
|
|
|
gamemaster_notes: str | None
|
|
|
|
|
llm_data: dict | None
|
2026-05-08 09:58:46 +00:00
|
|
|
story_text_linguistic_data: dict | None
|
|
|
|
|
pipeline_timing: dict | None
|
2026-05-03 16:17:47 +00:00
|
|
|
created_at: datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
|
class AdventureEntryPossibleChoice:
|
|
|
|
|
id: str
|
|
|
|
|
entry_id: str
|
|
|
|
|
index: int
|
|
|
|
|
label: str
|
|
|
|
|
text: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
|
class AdventureEntryPossibleChoiceDecision:
|
|
|
|
|
id: str
|
|
|
|
|
choice_id: str
|
|
|
|
|
user_id: str
|
|
|
|
|
created_at: datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
|
class AdventureEntryTranslation:
|
|
|
|
|
id: str
|
|
|
|
|
entry_id: str
|
|
|
|
|
component_type: str
|
|
|
|
|
target_language: str
|
|
|
|
|
translated_text: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
|
class AdventureEntryAudio:
|
|
|
|
|
id: str
|
|
|
|
|
entry_id: str
|
|
|
|
|
component_type: str
|
|
|
|
|
tts_provider: str
|
|
|
|
|
tts_options: dict | None
|
|
|
|
|
file_name: str
|