Files
Genarrative/backend-rewrite-tasklist/05_M6_ASSETS_OSS_EDITOR.md
2026-04-21 19:17:31 +08:00

4.7 KiB
Raw Blame History

M6assets / 阿里云 OSS 任务清单

说明:

  1. editor 已于 2026-04-21 被确认为遗留无用模块,不再纳入本轮 Rust 后端重写范围。
  2. 本文件保留原文件名仅用于延续既有任务编号与链接,不再继续安排 editor 迁移项。

1. OSS 基础设施

  • 创建 OSS bucket 方案
  • 设计对象键前缀
  • 设计 object_key -> cdn_url 解析策略
  • 设计 public / private 对象访问策略
  • 设计签名 URL 输出策略
  • 设计 x-oss-meta-* 元数据规范
  • 设计内容 hash / 版本字段规范

2. 上传与对象确认

  • 实现浏览器 PostObject 直传签名接口
  • 实现 STS 临时授权接口
  • 实现服务端上传 helper
  • 实现上传完成后的对象确认接口
  • 实现对象绑定业务实体 reducer

补充说明:

  1. 2026-04-21 起,当前重写节奏允许在 M3/M4/M5 之前先前置落地 M6 的 OSS 基础设施。
  2. 当前已在 server-rs/crates/platform-ossserver-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
  • 设计 asset_object
  • 设计 asset_manifest
  • 设计 character_visual_asset
  • 设计 character_animation_asset
  • 设计 scene_image_asset
  • 设计 sprite_sheet_asset

补充说明:

  1. asset_object 当前已冻结核心存储口径为:
    • bucket
    • object_key
  2. 详细设计见:
  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. 阶段验收

  • OSS 直传对象可被服务端确认并写入 asset_object
  • 所有新生成资产都写入 OSS
  • 前端仍能通过旧路径习惯访问资源
  • 资产任务状态可查询
  • 已确认对象可绑定到业务实体槽位