Add sample management and upload flows to Assets module.
Extend media library for sample kind with project selection, wire home routing for sample entries, and expand Assets tests. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
|
||||
## 模块职责
|
||||
|
||||
Assets 模块负责首页中的相册、相册云盘和素材管理入口。
|
||||
Assets 模块负责首页中的相册、相册云盘、素材管理和样片管理入口。
|
||||
|
||||
- `album_list` 进入 `AlbumListView`。
|
||||
- `album_trailer` 进入 `AlbumTrailerEntryView`。
|
||||
@ -10,8 +10,10 @@ Assets 模块负责首页中的相册、相册云盘和素材管理入口。
|
||||
- `cloud_storage_transit` 进入 `CloudStorageTransitView`。
|
||||
- `asset_management` 进入 `MediaLibraryView(kind: .material)`。
|
||||
- `material_upload` 进入 `MediaLibraryUploadView`。
|
||||
- `sample_management` 进入 `MediaLibraryView(kind: .sample)`。
|
||||
- `sample_upload` 进入 `MediaLibraryUploadView(kind: .sample)`。
|
||||
|
||||
`sample_management`、`sample_upload` 本轮仍保持占位,后续按样片管理独立迁移。
|
||||
样片复用媒体库列表、详情、上下架、删除和 OSS 上传链路;上传样片额外要求选择关联项目。
|
||||
|
||||
## 相册管理逻辑
|
||||
|
||||
@ -56,32 +58,33 @@ Assets 模块负责首页中的相册、相册云盘和素材管理入口。
|
||||
|
||||
下载文件只保存到 App 沙盒 `Documents/CloudDownloads`,不自动写入系统相册。上传/下载记录由 `CloudTransferStore` 保存,生命周期仅限本次 App 会话,不落盘。
|
||||
|
||||
## 素材管理逻辑
|
||||
## 素材/样片管理逻辑
|
||||
|
||||
`MediaLibraryViewModel` 管理素材列表、关键词、审核状态、分页、详情、删除和上下架。
|
||||
`MediaLibraryViewModel` 按 `MediaLibraryKind` 管理素材或样片列表、关键词、审核状态、分页、详情、删除和上下架。素材接口使用 `type = 1`,样片接口使用 `type = 2`。
|
||||
|
||||
素材上下架规则:
|
||||
媒体库上下架规则:
|
||||
|
||||
- 审核通过的素材可以上下架。
|
||||
- 审核未通过或待审核素材禁止上下架。
|
||||
- 操作成功后刷新素材列表。
|
||||
- 审核通过的素材或样片可以上下架。
|
||||
- 审核未通过或待审核的素材或样片禁止上下架。
|
||||
- 操作成功后刷新当前媒体库列表。
|
||||
|
||||
`MediaLibraryEditorViewModel` 管理上传和编辑表单。提交前会校验素材名称、当前景区、打卡点、封面、媒体文件和标签长度。
|
||||
`MediaLibraryEditorViewModel` 管理上传和编辑表单。提交前会校验名称、当前景区、打卡点、封面、媒体文件和标签长度。样片上传还会加载当前景区下的项目列表,并强制选择关联项目。
|
||||
|
||||
素材上传流程:
|
||||
素材/样片上传流程:
|
||||
|
||||
1. 页面通过 `PhotosPicker` 选择封面和媒体文件。
|
||||
2. 打卡点来源于 `ScenicSpotContext.spots`。
|
||||
3. 提交时先把封面和媒体文件上传 OSS。
|
||||
4. 再把最终 OSS URL、文件尺寸、文件大小、打卡点 ID 和标签提交给素材接口。
|
||||
5. 上传失败时不提交素材接口。
|
||||
3. 样片上传从 `projectList` 获取可关联项目,提交时携带 `project_id`。
|
||||
4. 提交时先把封面和媒体文件上传 OSS。
|
||||
5. 再把最终 OSS URL、文件尺寸、文件大小、打卡点 ID、标签和项目 ID 提交给媒体库接口。
|
||||
6. 上传失败时不提交媒体库接口。
|
||||
|
||||
## 缓存边界
|
||||
|
||||
相册列表、相册文件列表、云盘文件列表、素材列表、上传进度、下载记录、OSS STS、本地文件数据和素材表单都不进入 `AppSession`、`AccountContext` 或 TabBar 状态。
|
||||
相册列表、相册文件列表、云盘文件列表、素材列表、样片列表、项目选择、上传进度、下载记录、OSS STS、本地文件数据和媒体库表单都不进入 `AppSession`、`AccountContext` 或 TabBar 状态。
|
||||
|
||||
图片缓存继续交给 Kingfisher 的 `RemoteImage`。业务模块不自行缓存远程图片文件或 `Data`。
|
||||
|
||||
## 测试要求
|
||||
|
||||
新增相册、云盘或素材逻辑时,需要同步补充 API、ViewModel 和路由测试。测试不通过时先修复问题,再继续迁移后续功能。
|
||||
新增相册、云盘、素材或样片逻辑时,需要同步补充 API、ViewModel 和路由测试。测试不通过时先修复问题,再继续迁移后续功能。
|
||||
|
||||
Reference in New Issue
Block a user