This commit is contained in:
commit
46af290db3
100 files changed
+16663
No files matched your search
@@ -0,0 +1,46 @@
|
||||
from typing import List, Literal, Optional
|
||||
from uuid import uuid4
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class Character(BaseModel):
|
||||
id: str = Field(default_factory=lambda: str(uuid4()))
|
||||
name: str
|
||||
description: str = ""
|
||||
traits: List[str] = [] # Характер, привычки
|
||||
appearance: str = "" # Внешность
|
||||
role: Literal["protagonist", "antagonist", "supporting", "minor"] = "supporting"
|
||||
|
||||
|
||||
class Location(BaseModel):
|
||||
id: str = Field(default_factory=lambda: str(uuid4()))
|
||||
name: str
|
||||
description: str = ""
|
||||
atmosphere: str = "" # Атмосфера, ощущения
|
||||
type: Literal["city", "building", "nature", "interior", "other"] = "other"
|
||||
|
||||
|
||||
class Event(BaseModel):
|
||||
id: str = Field(default_factory=lambda: str(uuid4()))
|
||||
title: str
|
||||
description: str = ""
|
||||
chapter: Optional[str] = None # В какой главе произошло
|
||||
importance: Literal["major", "minor", "background"] = "minor"
|
||||
|
||||
|
||||
class StoryThread(BaseModel):
|
||||
id: str = Field(default_factory=lambda: str(uuid4()))
|
||||
title: str
|
||||
description: str = ""
|
||||
status: Literal["active", "resolved", "abandoned"] = "active"
|
||||
related_characters: List[str] = [] # ID персонажей
|
||||
related_events: List[str] = [] # ID событий
|
||||
|
||||
|
||||
class StoryBible(BaseModel):
|
||||
characters: List[Character] = []
|
||||
locations: List[Location] = []
|
||||
events: List[Event] = []
|
||||
threads: List[StoryThread] = []
|
||||
last_updated: Optional[str] = None # ISO timestamp
|
||||
Reference in new issue
Block a user