66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
"""章节重新生成相关的Schema定义"""
|
|
from pydantic import BaseModel, Field
|
|
from typing import Optional, List, Dict, Any
|
|
from datetime import datetime
|
|
|
|
|
|
class PreserveElementsConfig(BaseModel):
|
|
"""保留元素配置"""
|
|
preserve_structure: bool = Field(False, description="是否保留整体结构")
|
|
preserve_dialogues: List[str] = Field(default_factory=list, description="需要保留的对话片段关键词")
|
|
preserve_plot_points: List[str] = Field(default_factory=list, description="需要保留的情节点关键词")
|
|
preserve_character_traits: bool = Field(True, description="保持角色性格一致")
|
|
|
|
|
|
class ChapterRegenerateRequest(BaseModel):
|
|
"""章节重新生成请求"""
|
|
|
|
# 修改来源
|
|
modification_source: str = Field("custom", description="修改来源: custom/analysis_suggestions/mixed")
|
|
|
|
# 基于分析建议
|
|
selected_suggestion_indices: Optional[List[int]] = Field(None, description="选中的建议索引列表")
|
|
|
|
# 自定义修改指令
|
|
custom_instructions: Optional[str] = Field(None, description="用户自定义的修改要求")
|
|
|
|
# 保留配置
|
|
preserve_elements: Optional[PreserveElementsConfig] = Field(None, description="保留元素配置")
|
|
|
|
# 生成参数
|
|
style_id: Optional[int] = Field(None, description="写作风格ID")
|
|
target_word_count: int = Field(3000, description="目标字数", ge=500, le=10000)
|
|
focus_areas: List[str] = Field(default_factory=list, description="重点优化方向")
|
|
|
|
# 版本管理
|
|
save_as_version: bool = Field(True, description="是否保存为新版本")
|
|
version_note: Optional[str] = Field(None, description="版本说明", max_length=500)
|
|
auto_apply: bool = Field(False, description="是否自动应用(替换当前内容)")
|
|
|
|
|
|
class RegenerationTaskResponse(BaseModel):
|
|
"""重新生成任务响应"""
|
|
task_id: str
|
|
chapter_id: str
|
|
status: str
|
|
message: str
|
|
estimated_time_seconds: int = 120
|
|
|
|
|
|
class RegenerationTaskStatus(BaseModel):
|
|
"""重新生成任务状态"""
|
|
task_id: str
|
|
chapter_id: str
|
|
status: str
|
|
progress: int
|
|
error_message: Optional[str] = None
|
|
created_at: Optional[datetime] = None
|
|
started_at: Optional[datetime] = None
|
|
completed_at: Optional[datetime] = None
|
|
|
|
# 结果信息
|
|
original_word_count: Optional[int] = None
|
|
regenerated_word_count: Optional[int] = None
|
|
version_number: Optional[int] = None
|
|
|