38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
|
from datetime import datetime
|
|||
|
from pydantic import BaseModel, Field
|
|||
|
from typing import List, Optional
|
|||
|
|
|||
|
|
|||
|
# 请求模型
|
|||
|
class ModelCreateRequest(BaseModel):
|
|||
|
name: str = Field(..., max_length=255, description="模型名称(必填,如:yolo-v8s-car)")
|
|||
|
description: Optional[str] = Field(None, description="模型描述(可选)")
|
|||
|
is_default: Optional[bool] = Field(False, description="是否设为默认模型")
|
|||
|
|
|||
|
|
|||
|
class ModelUpdateRequest(BaseModel):
|
|||
|
name: Optional[str] = Field(None, max_length=255, description="模型名称(可选修改)")
|
|||
|
description: Optional[str] = Field(None, description="模型描述(可选修改)")
|
|||
|
is_default: Optional[bool] = Field(None, description="是否设为默认模型(可选切换)")
|
|||
|
|
|||
|
|
|||
|
# 响应模型
|
|||
|
class ModelResponse(BaseModel):
|
|||
|
id: int = Field(..., description="模型ID")
|
|||
|
name: str = Field(..., description="模型名称")
|
|||
|
path: str = Field(..., description="模型文件相对路径")
|
|||
|
is_default: bool = Field(..., description="是否默认模型")
|
|||
|
description: Optional[str] = Field(None, description="模型描述")
|
|||
|
file_size: Optional[int] = Field(None, description="文件大小(字节)")
|
|||
|
created_at: datetime = Field(..., description="创建时间")
|
|||
|
updated_at: datetime = Field(..., description="更新时间")
|
|||
|
|
|||
|
model_config = {"from_attributes": True}
|
|||
|
|
|||
|
|
|||
|
class ModelListResponse(BaseModel):
|
|||
|
total: int = Field(..., description="总记录数")
|
|||
|
models: List[ModelResponse] = Field(..., description="当前页模型列表")
|
|||
|
|
|||
|
model_config = {"from_attributes": True}
|