资产工作坊
用途
资产工作坊是「主体聚合层」编辑视图,从主「资产中心」的媒体文件层抽离出来,专门完成 主体级 的”配置 + AI 设计 + 生成图”流程。一个主体(subject)即一个跨集复用的角色 / 场景 / 道具 / 音色,下方聚合它的画风、描述、参考图与历史版本;资产中心负责展示其衍生的 IMAGE / VIDEO / AUDIO / DOCUMENT 媒体文件,工作坊负责聚合二者上游的 subject。
使用前准备
- 已登录工作区账号,且至少有 1 个画风模型可用(用于 AI 设计 / 生成图像)。
- 全局主体库(subject)至少存在 1 条记录:可以从工作坊顶部「新建角色 / 新建场景」创建,或在项目生产阶段由系统初始化生成。
- 进入前先确认当前操作的主体类型(角色 / 场景 / 道具 / 音色),避免在错误 tab 内做错配。
配图占位
- 页面:资产工作坊
- 状态:左 320px 列表 + 右 flex-1 详情面板,顶部 4 个 tab(角色 / 场景 / 道具 / 音色)
- 重点区域:tab 切换、列表搜索、主体头部 167×167 缩略图、操作按钮组、AI 设计主 CTA
- 脱敏要求:隐藏人物真实信息、未授权媒体、音频样本、项目名和账号信息
操作步骤
- 进入工作坊:从顶部导航的「资产中心」旁切换到「资产工作坊」tab,或直接访问
/workspace/asset-workshop。面包屑会显示工作区 / 资产工作坊。 - 切换主体类型:顶部 4 个 tab 分别为 角色 / 场景 / 道具 / 音色。当前版本只启用「角色」与「场景」,道具与音色为 Phase 10 占位,列表会显示「暂无数据,点击『新建』开始」。
- 在左侧列表定位主体:左 320px Finder 风格列表,自带搜索框(按名称模糊匹配)与滚动区;单击一行即在右侧载入详情。
- 查看 / 编辑右侧详情面板:右 flex-1 面板自上而下包含三块:
- 主体头部:167×167 缩略图 + 名称(默认展示 subjectId 前 8 位)+ 类型 chip(如
CHARACTER/LOCATION),右侧三按钮✦ AI 设计/编辑/删除。描述区提示「点击 AI 设计让 AI 生成描述,或『编辑』手动输入」。 - 图像操作:2×4 grid 的 4 个占位按钮
生成图像/修改/选中/撤回,后端 hook(useGenerateCharacterImage/useModifyCharacterImage/useSelectCharacterImage/useUndoCharacterImage)已就绪,待 Phase 7 接入。 - 上传区:左右两个 dashed 拖放区,左「上传图片(JPG / PNG)」右「上传音色(MP3 / WAV)」。
- 主体头部:167×167 缩略图 + 名称(默认展示 subjectId 前 8 位)+ 类型 chip(如
- 新建主体:点击左侧顶部
新建角色/新建场景按钮(按钮文案随当前 tab 切换),触发CreateSubjectModal,按表单提交即可;创建成功后在列表中可见(当前版本不自动选中)。 - 删除主体:点击头部
删除按钮触发useDeleteCharactermutation;删除前会先解除项目级引用,避免孤立引用阻塞生成。
结果与状态
- 选中主体后,操作会生成图片任务并在 task overlay 中显示进度;历史版本以追加方式记录,不会覆盖既有版本(保留版本切换能力)。
- AI 设计 / 生成图像成功后会更新主体的画风、描述或参考图,下游项目引用同步可见。
- 删除会先解除项目引用再落库;解除失败时主体不会被删除,避免产生孤儿主体。
- tab 切换会清空当前选中并重新触发对应 query,列表加载期间保留旧数据(
staleTime: 5000)。
权限和限制
- 道具 / 音色 tab 为 Phase 10 占位:UI 已渲染入口,但列表与详情面板暂未接入 subject 数据。
- 4 个图像操作按钮(
生成图像/修改/选中/撤回)为 占位 UI:后端 hook 已就绪,待 Phase 7 接入 mutation。 - 删除不可前向回滚:执行
useDeleteCharacter后无 undo 入口;如需保留历史,请在删除前先备份主体或迁移到项目内复用。 - 单次操作仅作用于当前选中 subject,跨主体批量动作未启用。
常见问题
为什么「生成图像 / 修改 / 选中 / 撤回」按钮点了没反应?
当前为占位 UI,对应的 React Query mutation(useGenerateCharacterImage / useModifyCharacterImage / useSelectCharacterImage / useUndoCharacterImage)已在 lib/query/hooks 就绪。Phase 7 接入后会调用对应后端 endpoint,生成的任务会出现在 task overlay 并以追加方式写入历史版本。
道具 / 音色 tab 为什么是空的?
道具与音色 tab 是 Phase 10 预留入口。当前版本仅完成 character / location 两条数据流的接入;切换到「道具」或「音色」时会显示「暂无数据,点击『新建』开始」。Phase 10 完成后,列表与详情面板会与角色 / 场景一致。
「上传图片 / 上传音色」可以拖放吗?
可以,两个上传区都是 dashed 边框 + 拖放命中区域,支持 JPG / PNG(图片)与 MP3 / WAV(音色)。上传后会自动追加到当前主体的历史版本,并通过 apiFetch 走 /api/assets/creative/[id] PATCH 接口更新 selectedVersionId。
与 /workspace/asset-hub 有什么区别?
asset-hub(资产中心)是 媒体文件层,以 kind=IMAGE / VIDEO / AUDIO / DOCUMENT 维度组织条目,定位是「跨集可复用素材的总目录」;asset-workshop(资产工作坊)是 主体聚合层,以 subject=character / location / prop / voice 维度组织,定位是「围绕一个主体的配置 + 设计 + 历史版本操作视图」。两者通过 subjectId ↔ subject 字段互相关联,工作坊是上游、资产中心是下游。