50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional, List, Dict, Any
|
|
from datetime import datetime
|
|
|
|
class AlgorithmBase(BaseModel):
|
|
name: str = Field(..., description="算法名称")
|
|
description: Optional[str] = Field(None, description="算法描述")
|
|
version: str = Field(..., description="算法版本")
|
|
model_path: Optional[str] = Field(None, description="模型文件路径")
|
|
config_path: Optional[str] = Field(None, description="配置文件路径")
|
|
status: str = Field("inactive", description="算法状态")
|
|
accuracy: Optional[float] = Field(None, description="算法准确率")
|
|
detection_classes: Optional[str] = Field(None, description="检测类别")
|
|
input_size: Optional[str] = Field(None, description="输入尺寸")
|
|
inference_time: Optional[float] = Field(None, description="推理时间")
|
|
is_enabled: bool = Field(True, description="是否启用")
|
|
creator: Optional[str] = Field(None, description="创建者")
|
|
tags: Optional[str] = Field(None, description="标签")
|
|
|
|
class AlgorithmCreate(AlgorithmBase):
|
|
pass
|
|
|
|
class AlgorithmUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
version: Optional[str] = None
|
|
model_path: Optional[str] = None
|
|
config_path: Optional[str] = None
|
|
status: Optional[str] = None
|
|
accuracy: Optional[float] = None
|
|
detection_classes: Optional[str] = None
|
|
input_size: Optional[str] = None
|
|
inference_time: Optional[float] = None
|
|
is_enabled: Optional[bool] = None
|
|
creator: Optional[str] = None
|
|
tags: Optional[str] = None
|
|
|
|
class AlgorithmResponse(AlgorithmBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class AlgorithmListResponse(BaseModel):
|
|
algorithms: List[AlgorithmResponse]
|
|
total: int
|
|
page: int
|
|
size: int |