init: 初始化项目

This commit is contained in:
zwt13703
2026-07-08 20:02:29 +08:00
parent 22590ae7b8
commit 1bb84df4ca
98 changed files with 8535 additions and 2 deletions
View File
+46
View File
@@ -0,0 +1,46 @@
import uuid
from datetime import datetime
from pydantic import BaseModel, Field, field_serializer
class AIModelCreate(BaseModel):
name: str = Field(..., max_length=100)
provider: str = Field(..., max_length=50)
endpoint: str = Field(..., max_length=255)
api_key: str
extra_params: dict = Field(default_factory=dict)
is_enabled: bool = True
remark: str | None = None
class AIModelUpdate(BaseModel):
name: str | None = Field(None, max_length=100)
provider: str | None = Field(None, max_length=50)
endpoint: str | None = Field(None, max_length=255)
api_key: str | None = None
extra_params: dict | None = None
is_enabled: bool | None = None
remark: str | None = None
class AIModelToggle(BaseModel):
is_enabled: bool
class AIModelResponse(BaseModel):
id: uuid.UUID
name: str
provider: str
endpoint: str
api_key: str
extra_params: dict
is_enabled: bool
remark: str | None = None
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
@field_serializer("api_key")
def mask_api_key(self, value: str) -> str:
return "***"
+45
View File
@@ -0,0 +1,45 @@
import uuid
from datetime import datetime
from pydantic import BaseModel, Field
class GenerationPointCreate(BaseModel):
template_id: uuid.UUID
position: dict = Field(..., description="选区位置信息")
prompt: str
model_id: uuid.UUID | None = None
order: int = 0
selected_text: str | None = None
need_ref_file: bool = False
remark: str | None = None
class GenerationPointUpdate(BaseModel):
position: dict | None = None
prompt: str | None = None
model_id: uuid.UUID | None = None
order: int | None = None
selected_text: str | None = None
need_ref_file: bool | None = None
remark: str | None = None
class GenerationPointResponse(BaseModel):
id: uuid.UUID
template_id: uuid.UUID
position: dict
prompt: str
model_id: uuid.UUID | None = None
ref_file_path: str | None = None
need_ref_file: bool = False
remark: str | None = None
order: int
selected_text: str | None = None
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class BatchOrderUpdate(BaseModel):
points: list[dict] = Field(..., description="[{id: uuid, order: int}, ...]")
+44
View File
@@ -0,0 +1,44 @@
import uuid
from datetime import datetime
from pydantic import BaseModel
class TaskResponse(BaseModel):
id: uuid.UUID
template_id: uuid.UUID
status: str
result_file_path: str | None = None
error_msg: str | None = None
created_at: datetime
finished_at: datetime | None = None
model_config = {"from_attributes": True}
class TaskDetailResponse(BaseModel):
id: uuid.UUID
template_id: uuid.UUID
template_name: str = ""
status: str
result_file_path: str | None = None
error_msg: str | None = None
created_at: datetime
finished_at: datetime | None = None
points: list[dict] = []
model_config = {"from_attributes": True}
class GenerateResponse(BaseModel):
task_id: uuid.UUID
status: str
class SingleTestRequest(BaseModel):
prompt: str
model_id: uuid.UUID | None = None
ref_file_path: str | None = None
class SingleTestResponse(BaseModel):
result: str
+31
View File
@@ -0,0 +1,31 @@
import uuid
from datetime import datetime
from pydantic import BaseModel
class TemplateResponse(BaseModel):
id: uuid.UUID
name: str
file_path: str
html_content: str | None = None
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class TemplateListItem(BaseModel):
id: uuid.UUID
name: str
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class HTMLContentResponse(BaseModel):
html_content: str
class HTMLUpdateRequest(BaseModel):
html_content: str