31 lines
1.7 KiB
Python
31 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.enums.admin_upload import AdminUploadResourceTypeEnum, AdminUploadSceneEnum
|
|
|
|
|
|
class AdminUploadMediaReferenceOut(BaseModel):
|
|
url: str = Field(..., description="附件URL。")
|
|
type: str = Field(..., description="附件类型:image/video/audio/pdf/file。")
|
|
name: str | None = Field(None, description="附件名称。")
|
|
duration: float | None = Field(None, description="音视频时长,单位秒。")
|
|
source: str = Field("admin_upload", description="来源标识。")
|
|
upload_resource_id: str | None = Field(None, description="UploadResource资源ID。")
|
|
display_url: str | None = Field(None, description="展示URL。")
|
|
preview_url: str | None = Field(None, description="预览URL。")
|
|
role: str | None = Field(None, description="参考素材角色。")
|
|
|
|
|
|
class AdminUploadFileOut(BaseModel):
|
|
resource_id: str = Field(..., description="UploadResource资源ID。")
|
|
scene: AdminUploadSceneEnum = Field(..., description="上传场景。")
|
|
module: str = Field(..., description="上传资源模块。")
|
|
resource_type: AdminUploadResourceTypeEnum = Field(..., description="资源类型。")
|
|
url: str = Field(..., description="文件URL。")
|
|
file_name: str = Field(..., description="保存后的文件名。")
|
|
original_file_name: str | None = Field(None, description="原始文件名。")
|
|
file_size_bytes: int = Field(0, description="文件大小,单位字节。")
|
|
duration_seconds: float | None = Field(None, description="音视频时长,单位秒。")
|
|
media_reference: AdminUploadMediaReferenceOut | None = Field(None, description="兼容生成任务 media_references 的附件引用对象。")
|