87 lines
1.9 KiB
Python
87 lines
1.9 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional, Any
|
|
from datetime import datetime
|
|
|
|
class Response(BaseModel):
|
|
code: int = 0
|
|
data: Any = None
|
|
message: str = "ok"
|
|
|
|
class PageData(BaseModel):
|
|
items: list = []
|
|
total: int = 0
|
|
page: int = 1
|
|
page_size: int = 20
|
|
|
|
# 模板
|
|
class TemplateCreate(BaseModel):
|
|
name: str
|
|
description: str = ""
|
|
|
|
class TemplateOut(BaseModel):
|
|
id: int
|
|
name: str
|
|
description: str = ""
|
|
file_path: str = ""
|
|
paragraph_count: int = 0
|
|
status: str = "draft"
|
|
created_at: Optional[datetime] = None
|
|
updated_at: Optional[datetime] = None
|
|
|
|
class ParagraphConfig(BaseModel):
|
|
id: int = 0
|
|
sort_index: int = 0
|
|
title: str = ""
|
|
edit_mode: str = "ai"
|
|
model_id: Optional[int] = None
|
|
need_prompt: bool = True
|
|
prompt_text: str = ""
|
|
need_file: bool = False
|
|
file_note: str = ""
|
|
output_format: str = "text"
|
|
|
|
class TemplateSave(BaseModel):
|
|
paragraphs: list[ParagraphConfig] = []
|
|
|
|
# 模型
|
|
class AiModelCreate(BaseModel):
|
|
name: str
|
|
provider: str = ""
|
|
api_format: str = "openai"
|
|
api_endpoint: str = ""
|
|
api_key: str = ""
|
|
status: str = "enabled"
|
|
|
|
class AiModelOut(BaseModel):
|
|
id: int
|
|
name: str
|
|
provider: str = ""
|
|
api_format: str = "openai"
|
|
api_endpoint: str = ""
|
|
api_key_preview: str = ""
|
|
status: str = "enabled"
|
|
created_at: Optional[datetime] = None
|
|
|
|
# 生成
|
|
class GenerateTestRequest(BaseModel):
|
|
paragraph_id: int
|
|
template_id: int
|
|
prompt_text: str = ""
|
|
model_id: int = 0
|
|
file_paths: list[str] = []
|
|
|
|
class GenerateFullRequest(BaseModel):
|
|
template_id: int
|
|
file_map: dict[str, str] = {} # paragraph_id -> file_path
|
|
|
|
class DocumentOut(BaseModel):
|
|
id: int
|
|
template_id: int
|
|
name: str
|
|
para_count_done: int = 0
|
|
para_count_total: int = 0
|
|
status: str = "pending"
|
|
file_path: str = ""
|
|
error: str = ""
|
|
created_at: Optional[datetime] = None
|