This commit is contained in:
Mikan
2026-06-19 16:31:45 +03:00
parent d0d1f003ae
commit 5a78def096
21 changed files with 1250 additions and 548 deletions

View File

@@ -34,7 +34,7 @@ class User(Base):
hashed_password: Mapped[str] = mapped_column(String(255), nullable=False)
is_admin: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
is_active: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
preferred_language: Mapped[str] = mapped_column(String(8), default="ru", nullable=False)
preferred_language: Mapped[str] = mapped_column(String(8), default="en", nullable=False)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=_utcnow, nullable=False)
worlds: Mapped[List["World"]] = relationship(back_populates="owner", cascade="all, delete-orphan")
@@ -58,7 +58,7 @@ class Preset(Base):
slug: Mapped[str] = mapped_column(String(128), unique=True, index=True, nullable=False)
title: Mapped[str] = mapped_column(String(255), nullable=False)
description: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
language: Mapped[str] = mapped_column(String(8), default="ru", nullable=False)
language: Mapped[str] = mapped_column(String(8), default="en", nullable=False)
is_public: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
is_builtin: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False)
# JSON: world_schema, default_rules, initial_state, world_seed_prompt, suggested_system_prompt
@@ -73,7 +73,7 @@ class World(Base):
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
owner_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False, index=True)
name: Mapped[str] = mapped_column(String(255), nullable=False)
language: Mapped[str] = mapped_column(String(8), default="ru", nullable=False)
language: Mapped[str] = mapped_column(String(8), default="en", nullable=False)
# Frozen world definition: setting description, rules, world_schema (JSON Schema for state), plot_rails
definition: Mapped[Dict[str, Any]] = mapped_column(JSONB, nullable=False, default=dict)
# Current live state of the world (player character, NPC, inventory, time, etc.)
@@ -95,7 +95,7 @@ class Session(Base):
id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
world_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("worlds.id"), nullable=False, index=True)
title: Mapped[str] = mapped_column(String(255), default="Новая сессия", nullable=False)
title: Mapped[str] = mapped_column(String(255), default="New session", nullable=False)
# Snapshot of world state at session start (we mutate world.state during play; session stores narrative history)
is_active: Mapped[bool] = mapped_column(Boolean, default=True, nullable=False)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=_utcnow, nullable=False)