新增角色管理、世界观设定、章节管理和AI工具调用功能
- 角色管理:CRUD API + 卡片网格UI,每个角色约200字描述 - 世界观设定:单篇长文编辑器,建议500字以上 - 章节管理:CRUD + 排序 API,左右分栏编辑器,单章5000字上限 - AI工具调用:支持工具审批流程和结构化工具调用 - 小说详情页新增章节、角色、世界观入口按钮 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -60,6 +60,82 @@ class OutlineReorder(BaseModel):
|
||||
ordered_ids: list[int]
|
||||
|
||||
|
||||
# ── 角色 ──
|
||||
|
||||
|
||||
class CharacterCreate(BaseModel):
|
||||
name: str = Field(min_length=1, max_length=100)
|
||||
description: str = Field(default="", max_length=1000)
|
||||
|
||||
|
||||
class CharacterUpdate(BaseModel):
|
||||
name: str | None = Field(default=None, min_length=1, max_length=100)
|
||||
description: str | None = Field(default=None, max_length=1000)
|
||||
|
||||
|
||||
class CharacterRead(BaseModel):
|
||||
id: int
|
||||
novel_id: int
|
||||
name: str
|
||||
description: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class CharacterList(BaseModel):
|
||||
items: list[CharacterRead]
|
||||
total: int
|
||||
|
||||
|
||||
# ── 章节 ──
|
||||
|
||||
|
||||
class ChapterCreate(BaseModel):
|
||||
title: str = Field(min_length=1, max_length=200)
|
||||
content: str = Field(default="", max_length=5000)
|
||||
|
||||
|
||||
class ChapterUpdate(BaseModel):
|
||||
title: str | None = Field(default=None, min_length=1, max_length=200)
|
||||
content: str | None = Field(default=None, max_length=5000)
|
||||
sort_order: int | None = None
|
||||
|
||||
|
||||
class ChapterRead(BaseModel):
|
||||
id: int
|
||||
novel_id: int
|
||||
sort_order: int
|
||||
title: str
|
||||
content: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
class ChapterList(BaseModel):
|
||||
items: list[ChapterRead]
|
||||
total: int
|
||||
|
||||
|
||||
class ChapterReorder(BaseModel):
|
||||
"""排序请求:按顺序传入章节id列表"""
|
||||
ordered_ids: list[int]
|
||||
|
||||
|
||||
# ── 世界观 ──
|
||||
|
||||
|
||||
class WorldSettingUpdate(BaseModel):
|
||||
content: str = Field(default="", max_length=5000)
|
||||
|
||||
|
||||
class WorldSettingRead(BaseModel):
|
||||
id: int
|
||||
novel_id: int
|
||||
content: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
|
||||
# ── AI配置 ──
|
||||
|
||||
|
||||
@@ -87,9 +163,21 @@ class ChatMessageInput(BaseModel):
|
||||
content: str
|
||||
|
||||
|
||||
class PendingToolCall(BaseModel):
|
||||
"""待审批的工具调用"""
|
||||
id: str
|
||||
name: str
|
||||
arguments: dict
|
||||
|
||||
|
||||
class ChatRequest(BaseModel):
|
||||
messages: list[ChatMessageInput]
|
||||
novel_id: int | None = None
|
||||
page_context: str | None = None # 用户当前所在页面,如 "大纲页" "世界观页"
|
||||
tools_enabled: bool = True # 是否启用工具调用
|
||||
# 工具审批续传
|
||||
pending_tool_calls: list[PendingToolCall] | None = None
|
||||
assistant_text: str | None = None # LLM 在工具调用前输出的文本
|
||||
|
||||
|
||||
class ChatMessageRead(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user