3.0 KiB
3.0 KiB
RPG 创作编辑器历史素材复用设计
日期:2026-04-26
1. 本次目标
编辑场景角色与编辑场景图片时,玩家可以复用历史生成素材:
- 场景角色形象区删除
基于预设素材修改入口,以及它打开的预设拼装编辑下游。 - 场景角色形象区新增
使用历史素材,打开独立素材面板。 - 场景图片的幕背景配置新增
使用历史素材,打开独立素材面板。 - 历史素材面板需要展示所有账号过去生成过的对应类型素材,并明确标注素材归属账号。
- 选择素材后直接应用到当前角色或当前幕背景,不触发新一轮生成。
2. 数据真相
历史素材不从前端草稿 profile 扫描,也不从预设素材目录扫描。
历史素材统一来自 SpacetimeDB 的 asset_object 表:
| 使用位置 | asset_kind |
应用字段 |
|---|---|---|
| 场景角色形象 | character_visual |
imageSrc、generatedVisualAssetId |
| 场景幕背景 | scene_image |
backgroundImageSrc、backgroundAssetId |
asset_object.owner_user_id 是归属账号标注主源。为空时 UI 标注为 未记录账号,不能隐藏归属栏。
3. 后端接口
新增只读接口:
GET /api/assets/history?kind=character_visual
GET /api/assets/history?kind=scene_image
返回字段只包含前端选择所需脱敏信息:
assetObjectIdassetKindimageSrcownerUserIdownerLabelprofileIdentityIdcreatedAtupdatedAt
asset_object 仍保持 private table。读取历史列表必须通过 SpacetimeDB procedure + Axum facade,不能让前端直接订阅整表。
4. SpacetimeDB 设计
module-assets 新增:
AssetHistoryListInputAssetHistoryEntrySnapshotAssetHistoryListResult
spacetime-module 新增 procedure:
list_asset_history_and_return(input: AssetHistoryListInput) -> AssetHistoryListResult
实现规则:
- 只允许
character_visual、scene_image。 - 按
asset_kind过滤。 - 按
created_at倒序返回。 - 默认最多返回 120 条,允许调用方传更小 limit。
image_src由object_key转为兼容代理路径:/{object_key}。
5. 前端交互
历史素材面板为独立弹层,不在当前面板下方展开。
角色历史素材卡片:
- 展示素材图。
- 展示归属账号。
- 展示创建时间。
- 点击
使用后写入当前草稿角色:imageSrc = imageSrcgeneratedVisualAssetId = assetObjectIdgeneratedAnimationSetId = undefinedanimationMap = undefined
场景历史素材卡片:
- 展示 16:9 预览。
- 展示归属账号。
- 展示创建时间。
- 点击
使用后写入当前幕:backgroundImageSrc = imageSrcbackgroundAssetId = assetObjectId
6. 非目标
- 不新增图片生成模型能力。
- 不把历史素材复制成新 OSS 对象。
- 不修改旧预设素材目录。
- 不恢复 server-node 或 PostgreSQL 链路。