# M6:assets / 阿里云 OSS 任务清单 说明: 1. `editor` 已于 `2026-04-21` 被确认为遗留无用模块,不再纳入本轮 Rust 后端重写范围。 2. 本文件保留原文件名仅用于延续既有任务编号与链接,不再继续安排 editor 迁移项。 ## 1. OSS 基础设施 - [x] 创建 OSS bucket 方案 - [x] 设计对象键前缀 - [x] 设计 `object_key -> cdn_url` 解析策略 - [x] 设计 public / private 对象访问策略 - [x] 设计签名 URL 输出策略 - [x] 设计 `x-oss-meta-*` 元数据规范 - [ ] 设计内容 hash / 版本字段规范 ## 2. 上传与对象确认 - [x] 实现浏览器 `PostObject` 直传签名接口 - [x] 实现 STS 临时授权接口 - [x] 实现服务端上传 helper - [x] 实现上传完成后的对象确认接口 - [x] 实现对象绑定业务实体 reducer 补充说明: 1. 自 `2026-04-21` 起,当前重写节奏允许在 `M3/M4/M5` 之前先前置落地 `M6` 的 OSS 基础设施。 2. 当前已在 `server-rs/crates/platform-oss` 与 `server-rs/crates/api-server` 落下最小可用链路: - `PostObject` 直传签名能力 - `/api/assets/direct-upload-tickets` - `/api/assets/objects/confirm` - 兼容旧 `/generated-*` 前缀的对象键规划 - `.env/.env.local` 的 OSS 环境变量加载 - 服务端 `HEAD Object` 校验 - `asset_object` 确认真实 SpacetimeDB 持久化 - `/api/assets/objects/bind` - `asset_entity_binding` 业务实体槽位绑定 - `/api/assets/sts-upload-credentials` 禁用式 contract - 服务端 `PutObject` 上传 helper 3. 当前 bucket 已明确为私有读写;后续正式存储口径改为 `bucket + object_key` 双列,不再把匿名公开 URL 当成真相。 4. 当前 STS 接口按“服务器上传、Web 只下载”的需求固定为 `403` 禁用式 contract,不向浏览器下发 OSS 写权限。 5. `2026-04-21` 已通过 live test 验证:真实 OSS 上传后,`/api/assets/objects/confirm` 能把 `xushi-dev + object_key` 写入本地 `genarrative-dev.asset_object`,并可继续通过 `/api/assets/objects/bind` 绑定到业务实体槽位。 ## 3. 资产任务系统 - [ ] 设计 `asset_job` - [x] 设计 `asset_object` - [ ] 设计 `asset_manifest` - [ ] 设计 `character_visual_asset` - [ ] 设计 `character_animation_asset` - [ ] 设计 `scene_image_asset` - [ ] 设计 `sprite_sheet_asset` 补充说明: 1. `asset_object` 当前已冻结核心存储口径为: - `bucket` - `object_key` 2. 详细设计见: - [../docs/technical/SPACETIMEDB_ASSET_OBJECT_STORAGE_DESIGN_2026-04-21.md](../docs/technical/SPACETIMEDB_ASSET_OBJECT_STORAGE_DESIGN_2026-04-21.md) - [../docs/technical/SPACETIMEDB_ASSET_OBJECT_TABLE_DESIGN_2026-04-21.md](../docs/technical/SPACETIMEDB_ASSET_OBJECT_TABLE_DESIGN_2026-04-21.md) - [../docs/technical/ASSET_OBJECT_CONFIRM_FLOW_DESIGN_2026-04-21.md](../docs/technical/ASSET_OBJECT_CONFIRM_FLOW_DESIGN_2026-04-21.md) - [../docs/technical/M6_OSS_SERVER_UPLOAD_AND_STS_POLICY_2026-04-21.md](../docs/technical/M6_OSS_SERVER_UPLOAD_AND_STS_POLICY_2026-04-21.md) 3. 当前已在 `server-rs/crates/spacetime-module` 落下 `asset_object` 首版表骨架,并完成 `api-server -> SpacetimeDB` 的最小对象确认闭环。 ## 4. 资产生成链路 - [ ] 迁移角色主形象生成 - [ ] 迁移角色动作生成 - [ ] 迁移动作模板查询 - [ ] 迁移视频导入 - [ ] 迁移工作流缓存 - [ ] 迁移 Qwen 主图生成 - [ ] 迁移 Qwen 整表生成 - [ ] 迁移 Qwen 修帧 - [ ] 迁移 Qwen 保存 - [ ] 迁移场景图生成 - [ ] 迁移封面图上传 ## 5. 路径兼容 - [ ] 兼容 `/generated-character-drafts/*` - [ ] 兼容 `/generated-characters/*` - [ ] 兼容 `/generated-custom-world-scenes/*` - [ ] 兼容 `/generated-qwen-sprites/*` ## 6. 兼容接口 - [ ] 兼容 `/api/assets/character-visual/generate` - [ ] 兼容 `/api/assets/character-visual/jobs/:taskId` - [ ] 兼容 `/api/assets/character-visual/publish` - [ ] 兼容 `/api/assets/character-animation/generate` - [ ] 兼容 `/api/assets/character-animation/jobs/:taskId` - [ ] 兼容 `/api/assets/character-animation/publish` - [ ] 兼容 `/api/assets/character-animation/import-video` - [ ] 兼容 `/api/assets/character-animation/templates` - [ ] 兼容 `/api/assets/character-workflow-cache` - [ ] 兼容 `/api/assets/character-workflow-cache/:characterId` - [ ] 兼容 `/api/assets/qwen-sprite/master` - [ ] 兼容 `/api/assets/qwen-sprite/sheet` - [ ] 兼容 `/api/assets/qwen-sprite/frame-repair` - [ ] 兼容 `/api/assets/qwen-sprite/save` ## 7. 阶段验收 - [x] OSS 直传对象可被服务端确认并写入 `asset_object` - [ ] 所有新生成资产都写入 OSS - [ ] 前端仍能通过旧路径习惯访问资源 - [ ] 资产任务状态可查询 - [x] 已确认对象可绑定到业务实体槽位