update:1.更新大纲细化功能

This commit is contained in:
xiamuceer
2025-11-18 22:14:55 +08:00
parent a2229f7780
commit 9b17774e13
14 changed files with 3285 additions and 370 deletions
+11
View File
@@ -12,6 +12,9 @@ class ChapterBase(BaseModel):
summary: Optional[str] = Field(None, description="章节摘要")
word_count: Optional[int] = Field(0, description="字数")
status: Optional[str] = Field("draft", description="章节状态")
outline_id: Optional[str] = Field(None, description="关联的大纲ID")
sub_index: Optional[int] = Field(1, description="大纲下的子章节序号")
expansion_plan: Optional[str] = Field(None, description="展开规划详情(JSON)")
class ChapterCreate(BaseModel):
@@ -22,6 +25,9 @@ class ChapterCreate(BaseModel):
content: Optional[str] = Field(None, description="章节内容")
summary: Optional[str] = Field(None, description="章节摘要")
status: Optional[str] = Field("draft", description="章节状态")
outline_id: Optional[str] = Field(None, description="关联的大纲ID")
sub_index: Optional[int] = Field(1, description="大纲下的子章节序号")
expansion_plan: Optional[str] = Field(None, description="展开规划详情(JSON)")
class ChapterUpdate(BaseModel):
@@ -44,6 +50,11 @@ class ChapterResponse(BaseModel):
summary: Optional[str] = None
word_count: int = 0
status: str
outline_id: Optional[str] = None
sub_index: Optional[int] = 1
expansion_plan: Optional[str] = None
outline_title: Optional[str] = None # 大纲标题(从Outline表联查)
outline_order: Optional[int] = None # 大纲排序序号(从Outline表联查)
created_at: datetime
updated_at: datetime
+65 -7
View File
@@ -78,12 +78,70 @@ class OutlineListResponse(BaseModel):
items: list[OutlineResponse]
class OutlineReorderItem(BaseModel):
"""单个大纲重排序"""
id: str = Field(..., description="大纲ID")
order_index: int = Field(..., description="新的序号", ge=1)
class ChapterPlanItem(BaseModel):
"""单个章节规划"""
sub_index: int = Field(..., description="子章节序号", ge=1)
title: str = Field(..., description="章节标题")
plot_summary: str = Field(..., description="剧情摘要(200-300字)")
key_events: list[str] = Field(..., description="关键事件列表")
character_focus: list[str] = Field(..., description="主要涉及的角色")
emotional_tone: str = Field(..., description="情感基调")
narrative_goal: str = Field(..., description="叙事目标")
conflict_type: str = Field(..., description="冲突类型")
estimated_words: int = Field(3000, description="预计字数", ge=1000)
scenes: Optional[list[str]] = Field(None, description="场景列表(可选)")
class OutlineReorderRequest(BaseModel):
"""大纲批量重排序请求"""
orders: list[OutlineReorderItem] = Field(..., description="排序列表")
class OutlineExpansionRequest(BaseModel):
"""大纲展开为多章节的请求模型(outline_id从路径参数获取)"""
target_chapter_count: int = Field(3, description="目标章节数", ge=1, le=10)
expansion_strategy: str = Field("balanced", description="展开策略: balanced(均衡), climax(高潮重点), detail(细节丰富)")
enable_scene_analysis: bool = Field(False, description="是否包含场景规划")
auto_create_chapters: bool = Field(True, description="是否自动创建章节记录")
provider: Optional[str] = Field(None, description="AI提供商")
model: Optional[str] = Field(None, description="AI模型")
class OutlineExpansionResponse(BaseModel):
"""大纲展开响应模型"""
outline_id: str = Field(..., description="大纲ID")
outline_title: str = Field(..., description="大纲标题")
target_chapter_count: int = Field(..., description="目标章节数")
actual_chapter_count: int = Field(..., description="实际生成的章节数")
expansion_strategy: str = Field(..., description="使用的展开策略")
chapter_plans: list[ChapterPlanItem] = Field(..., description="章节规划列表")
created_chapters: Optional[list] = Field(None, description="已创建的章节列表")
class BatchOutlineExpansionRequest(BaseModel):
"""批量大纲展开请求模型"""
project_id: str = Field(..., description="项目ID")
outline_ids: Optional[list[str]] = Field(None, description="要展开的大纲ID列表(为空则展开所有)")
chapters_per_outline: int = Field(3, description="每个大纲的目标章节数", ge=1, le=10)
expansion_strategy: str = Field("balanced", description="展开策略")
enable_scene_analysis: bool = Field(False, description="是否包含场景规划")
auto_create_chapters: bool = Field(True, description="是否自动创建章节记录")
provider: Optional[str] = Field(None, description="AI提供商")
model: Optional[str] = Field(None, description="AI模型")
class BatchOutlineExpansionResponse(BaseModel):
"""批量大纲展开响应模型"""
project_id: str = Field(..., description="项目ID")
total_outlines_expanded: int = Field(..., description="总共展开的大纲数")
total_chapters_created: int = Field(..., description="总共创建的章节数")
expansion_results: list[OutlineExpansionResponse] = Field(..., description="展开结果列表")
skipped_outlines: Optional[list[dict]] = Field(None, description="跳过的大纲列表(已展开)")
class CreateChaptersFromPlansRequest(BaseModel):
"""根据已有规划创建章节的请求模型"""
chapter_plans: list[ChapterPlanItem] = Field(..., description="章节规划列表(来自之前的AI生成结果)")
class CreateChaptersFromPlansResponse(BaseModel):
"""根据已有规划创建章节的响应模型"""
outline_id: str = Field(..., description="大纲ID")
outline_title: str = Field(..., description="大纲标题")
chapters_created: int = Field(..., description="创建的章节数")
created_chapters: list = Field(..., description="创建的章节列表")