| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- """数据模型定义"""
- from enum import Enum
- from typing import Any, Dict, List, Optional
- from pydantic import BaseModel, Field
- class ConfigRequest(BaseModel):
- """OpenAI配置请求"""
- model_config = {"protected_namespaces": ()}
- api_key: str = Field(..., description="OpenAI API密钥")
- base_url: Optional[str] = Field(None, description="Base URL")
- model_name: str = Field("gpt-3.5-turbo", description="模型名称")
- class ConfigResponse(BaseModel):
- """配置响应"""
- success: bool
- message: str
- class ModelListResponse(BaseModel):
- """模型列表响应"""
- models: List[str]
- success: bool
- message: str = ""
- class FileUploadResponse(BaseModel):
- """文件上传响应"""
- success: bool
- message: str
- file_content: Optional[str] = None
- old_outline: Optional[str] = None
- class AnalysisType(str, Enum):
- """分析类型"""
- OVERVIEW = "overview"
- REQUIREMENTS = "requirements"
- class OutlineMode(str, Enum):
- """目录生成模式。"""
- FREE = "free"
- ALIGNED = "aligned"
- class AnalysisRequest(BaseModel):
- """文档分析请求"""
- file_content: str = Field(..., description="文档内容")
- analysis_type: AnalysisType = Field(..., description="分析类型")
- class OutlineItem(BaseModel):
- """目录项"""
- id: str
- title: str
- description: str
- source_requirement_id: Optional[str] = None
- source_requirement_title: Optional[str] = None
- children: Optional[List["OutlineItem"]] = None
- content: Optional[str] = None
- # 解决循环引用
- OutlineItem.model_rebuild()
- class OutlineResponse(BaseModel):
- """目录响应"""
- outline: List[OutlineItem]
- class OutlineChildrenResponse(BaseModel):
- """指定一级目录下的子目录响应。"""
- children: List[OutlineItem]
- class OutlineReviewResponse(BaseModel):
- """目录审核响应。"""
- passed: bool
- suggestions: List[str] = Field(default_factory=list)
- class TechnicalRequirementGroup(BaseModel):
- """技术评分大类。"""
- requirement_id: str
- title: str
- description: str
- detail_points: List[str] = Field(default_factory=list)
- class TechnicalRequirementGroupResponse(BaseModel):
- """技术评分大类提取响应。"""
- groups: List[TechnicalRequirementGroup]
- class OutlineRequest(BaseModel):
- """目录生成请求"""
- overview: str = Field(..., description="项目概述")
- requirements: str = Field(..., description="技术评分要求")
- mode: OutlineMode = Field(OutlineMode.FREE, description="目录生成模式")
- uploaded_expand: Optional[bool] = Field(False, description="是否已上传方案扩写文件")
- old_outline: Optional[str] = Field(
- None, description="上传的方案扩写文件解析出的旧目录JSON"
- )
- old_document: Optional[str] = Field(
- None, description="上传的方案扩写文件解析出的旧文档"
- )
- class ContentGenerationRequest(BaseModel):
- """内容生成请求"""
- outline: Dict[str, Any] = Field(..., description="目录结构")
- project_overview: str = Field("", description="项目概述")
- class ChapterContentRequest(BaseModel):
- """单章节内容生成请求"""
- chapter: Dict[str, Any] = Field(..., description="章节信息")
- parent_chapters: Optional[List[Dict[str, Any]]] = Field(
- None, description="上级章节列表"
- )
- sibling_chapters: Optional[List[Dict[str, Any]]] = Field(
- None, description="同级章节列表"
- )
- project_overview: str = Field("", description="项目概述")
- class ErrorResponse(BaseModel):
- """错误响应"""
- error: str
- detail: Optional[str] = None
- class WordExportOutlineItem(BaseModel):
- """Word 导出用目录项。"""
- id: str
- title: str
- description: Optional[str] = None
- children: Optional[List["WordExportOutlineItem"]] = None
- content: Optional[str] = None
- WordExportOutlineItem.model_rebuild()
- class WordExportRequest(BaseModel):
- """Word导出请求"""
- project_name: Optional[str] = Field(None, description="项目名称")
- outline: List[WordExportOutlineItem] = Field(..., description="目录结构,包含内容")
|