feat: Introduce MediaAssetVariant for better asset management

- Added MediaAssetVariant enum with values 'main' and 'preview'.
- Updated media asset service logic to utilize MediaAssetVariant for variant handling.
- Refactored database models and queries to include variant and source_asset_id fields.
- Enhanced validation for asset variants in upload and processing functions.
- Updated Swagger documentation to reflect new variant structure and descriptions.
- Implemented necessary database migrations to support the new variant constraints.
This commit is contained in:
2025-12-22 19:27:31 +08:00
parent d04e2ee693
commit 2cc823d3a8
14 changed files with 439 additions and 171 deletions

View File

@@ -2793,6 +2793,17 @@ const docTemplate = `{
"MediaAssetTypeImage"
]
},
"consts.MediaAssetVariant": {
"type": "string",
"enum": [
"main",
"preview"
],
"x-enum-varnames": [
"MediaAssetVariantMain",
"MediaAssetVariantPreview"
]
},
"consts.OrderStatus": {
"type": "string",
"enum": [
@@ -3056,7 +3067,11 @@ const docTemplate = `{
},
"variant": {
"description": "Variant indicates whether this asset is a main or preview product.\nAllowed: main/preview; default is main.",
"type": "string"
"allOf": [
{
"$ref": "#/definitions/consts.MediaAssetVariant"
}
]
}
}
},
@@ -4061,6 +4076,10 @@ const docTemplate = `{
"description": "存储提供方:例如 s3/minio/oss便于多存储扩展",
"type": "string"
},
"source_asset_id": {
"description": "派生来源资源IDpreview 产物可指向对应 main 资源;用于建立 preview/main 的 1:1 追溯关系",
"type": "integer"
},
"status": {
"description": "处理状态uploaded/processing/ready/failed/deletedready 才可被内容引用对外提供",
"allOf": [
@@ -4088,6 +4107,14 @@ const docTemplate = `{
"user_id": {
"description": "用户ID资源上传者用于审计与权限控制",
"type": "integer"
},
"variant": {
"description": "产物类型main/preview用于强制试看资源必须绑定独立产物避免用正片绕过",
"allOf": [
{
"$ref": "#/definitions/consts.MediaAssetVariant"
}
]
}
}
},