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} |