feat: restore source parity and harden agent runtime
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
大屏素材 Schema 定义
|
||||
"""
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
|
||||
# ============ 素材分类 Schema ============
|
||||
|
||||
class MaterialCategoryCreateIn(BaseModel):
|
||||
"""创建素材分类请求"""
|
||||
name: str = Field(..., description="分类名称")
|
||||
code: str = Field(..., description="分类编码")
|
||||
icon: str = Field(default='Image', description="图标名称")
|
||||
sort: int = Field(default=0, description="排序")
|
||||
|
||||
|
||||
class MaterialCategoryUpdateIn(BaseModel):
|
||||
"""更新素材分类请求"""
|
||||
name: Optional[str] = Field(default=None, description="分类名称")
|
||||
icon: Optional[str] = Field(default=None, description="图标名称")
|
||||
sort: Optional[int] = Field(default=None, description="排序")
|
||||
|
||||
|
||||
class MaterialCategoryOut(BaseModel):
|
||||
"""素材分类输出"""
|
||||
id: str
|
||||
name: str
|
||||
code: str
|
||||
icon: str
|
||||
sort: int
|
||||
material_count: int = Field(default=0, description="素材数量")
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
@classmethod
|
||||
def from_orm_model(cls, obj, material_count: int = 0):
|
||||
"""从ORM模型转换"""
|
||||
return cls(
|
||||
id=str(obj.id),
|
||||
name=obj.name,
|
||||
code=obj.code,
|
||||
icon=obj.icon or 'Image',
|
||||
sort=obj.sort or 0,
|
||||
material_count=material_count,
|
||||
)
|
||||
|
||||
|
||||
# ============ 素材 Schema ============
|
||||
|
||||
class MaterialCreateIn(BaseModel):
|
||||
"""创建素材请求"""
|
||||
category_id: Optional[str] = Field(default=None, description="分类ID(为空表示无分类)")
|
||||
name: str = Field(..., description="素材名称")
|
||||
file_id: str = Field(..., description="文件ID(来自文件管理器)")
|
||||
|
||||
|
||||
class MaterialUpdateIn(BaseModel):
|
||||
"""更新素材请求"""
|
||||
name: Optional[str] = Field(default=None, description="素材名称")
|
||||
category_id: Optional[str] = Field(default=None, description="分类ID")
|
||||
sort: Optional[int] = Field(default=None, description="排序")
|
||||
|
||||
|
||||
class MaterialOut(BaseModel):
|
||||
"""素材输出"""
|
||||
id: str
|
||||
name: str
|
||||
category_id: str
|
||||
category_name: str = Field(default='', description="分类名称")
|
||||
file_id: Optional[str] = Field(default=None, description="文件ID")
|
||||
file_url: str = Field(default='', description="文件URL")
|
||||
file_type: str = Field(default='image', description="文件类型")
|
||||
file_size: int = Field(default=0, description="文件大小")
|
||||
sort: int = 0
|
||||
sys_create_datetime: str
|
||||
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
@classmethod
|
||||
def from_orm_model(
|
||||
cls,
|
||||
obj,
|
||||
category_name: str = '',
|
||||
file_url: str = '',
|
||||
file_type: str = 'image',
|
||||
file_size: int = 0,
|
||||
):
|
||||
"""从ORM模型转换"""
|
||||
return cls(
|
||||
id=str(obj.id),
|
||||
name=obj.name,
|
||||
category_id=str(obj.category_id) if obj.category_id else '',
|
||||
category_name=category_name,
|
||||
file_id=str(obj.file_id) if obj.file_id else None,
|
||||
file_url=file_url,
|
||||
file_type=file_type,
|
||||
file_size=file_size,
|
||||
sort=obj.sort or 0,
|
||||
sys_create_datetime=obj.sys_create_datetime.strftime('%Y-%m-%d %H:%M:%S') if obj.sys_create_datetime else '',
|
||||
)
|
||||
Reference in New Issue
Block a user