Files
MuMuAINovel/backend/app/schemas/chapter.py
T
xiamuceer 1cde345ed9 1.优化AI请求替换OpenAI SDK调用,使用httpx和自定义头请求,避免触发部分公益站的cloudflare
2.修复deepseek模型调用问题,舍弃思考过程AI响应内容,只获取结果内容
3.新增会话过期机制,更新后添加到.env中
4.支持用户在生成章节内容时设置字数
2025-11-03 15:28:51 +08:00

68 lines
2.2 KiB
Python

"""章节相关的Pydantic模型"""
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
class ChapterBase(BaseModel):
"""章节基础模型"""
title: str = Field(..., description="章节标题")
chapter_number: int = Field(..., description="章节序号")
content: Optional[str] = Field(None, description="章节内容")
summary: Optional[str] = Field(None, description="章节摘要")
word_count: Optional[int] = Field(0, description="字数")
status: Optional[str] = Field("draft", description="章节状态")
class ChapterCreate(BaseModel):
"""创建章节的请求模型"""
project_id: str = Field(..., description="所属项目ID")
title: str = Field(..., description="章节标题")
chapter_number: int = Field(..., description="章节序号")
content: Optional[str] = Field(None, description="章节内容")
summary: Optional[str] = Field(None, description="章节摘要")
status: Optional[str] = Field("draft", description="章节状态")
class ChapterUpdate(BaseModel):
"""更新章节的请求模型"""
title: Optional[str] = None
content: Optional[str] = None
# chapter_number 不允许修改,只能通过大纲的重排序来调整
summary: Optional[str] = None
# word_count 自动计算,不允许手动修改
status: Optional[str] = None
class ChapterResponse(BaseModel):
"""章节响应模型"""
id: str
project_id: str
title: str
chapter_number: int
content: Optional[str] = None
summary: Optional[str] = None
word_count: int = 0
status: str
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class ChapterListResponse(BaseModel):
"""章节列表响应模型"""
total: int
items: list[ChapterResponse]
class ChapterGenerateRequest(BaseModel):
"""AI生成章节内容的请求模型"""
style_id: Optional[int] = Field(None, description="写作风格ID,不提供则不使用任何风格")
target_word_count: Optional[int] = Field(
3000,
description="目标字数,默认3000字",
ge=500, # 最小500字
le=10000 # 最大10000字
)