媒体资产中心
当前版本: v5 单页双栏(2026-09-08 蒸馏) · SSOT media-asset-and-workshop.md (SSOT)
用途
媒体资产中心(/workspace/asset-hub)是工作区媒体文件层的一站式入口,覆盖 4 类媒体的查看、引用、批量操作、跨项目复用:
- 4 类媒体:
kind∈ {IMAGE(图片),VIDEO(视频),AUDIO(音频),DOCUMENT(文档)} - 主体聚合:在 4 chip 之外展开「主体」filter chip,可进一步按
subject∈ {character(角色),location(场景),prop(道具),voice(音色)} 过滤 - 三层归属:无归属(全局) /
sourceProjectId关联(项目级) /canvasFolderId + canvasEpisodeId关联(画布级) - 正交关系:
kind(媒体种类)与subject(主体种类)正交不冲突——同一张图既是IMAGE也是character主体图
上游的「主体级配置 + AI 设计 + 历史版本」操作走 /workspace/asset-workshop(Finder 风格独立页),与本页面职责分离。
使用前准备
- 登录工作区账号:未登录会被中间件重定向到
/auth/login。 - 可选:登录后切到右上角「设置 → 模型配置」确认已有可用画风模型(供 AI 设计 / 一致性压力测试使用)。
- 可选:对项目级 / 画布级过滤,需先选中左侧对应 scope / 文件夹,再观察右侧网格。
配图占位
- 页面:
/workspace/asset-hubv5 单页双栏- 状态:顶部双按钮(批量操作 / 同步剪辑)+ 左 scope 段([全部] / [项目] / [画布])+ 左文件目录树 + 右 [全局] [主体] [画布] tab + 4 kind chip + 「主体」sub-chip + TimelineGroup 时间线分组
- 重点区域:scope 切换 / 文件目录树(真实递归计数)/ kind chip 切换 / 主体 sub-chip / 时间线分组 / 批量操作 / 同步剪辑
- 脱敏要求:隐藏人物真实信息、未授权媒体、音频样本、项目名、账号信息和任务 ID
操作步骤
1. 顶部 56px Topbar(与其他页统一)
Dramagon Studio 8 页一致的 56px 顶部 Topbar:左侧 logo + brand,中部 breadcrumb(工作区 / 资产中心 / [项目名 / 文件夹名]),右侧 + 新对话 / 搜索(跳转 /skills)/ 消息(/notifications)/ 头像 dropdown(个人主页 / 设置 / 退出)。
2. 顶部双按钮(页面级 CTA)
- 批量操作(左):选中网格后启用,支持批量删除 / 批量移动到文件夹 / 批量导出。
- + 同步剪辑(右):把当前页资产推送到剪映(JianYing)继续编辑。
3. 左栏 scope 段 + 文件目录树
Scope 段(左上,3 段切换)
- [全部]:用户账号下所有媒体(全局 + 项目级 + 画布级汇总,默认 tab)。
- [项目]:按
sourceProjectId分组,只展示项目级媒体。 - [画布]:按画布
folderId展开,显示真实目录树(目录行显示递归资产计数)。
文件目录树(左下半)
- 真实递归计数,避免「项目伪装成空文件夹行显示 0 资产」反模式。
- 选中文件夹后右侧网格按需加载(避免一次拉全表)。
- 选中文件夹节点高亮 + 右侧网格标题显示「
[文件夹名]内 N 个媒体」。
4. 右栏主区(占据主要 viewport)
4a. TabBar(右栏顶部,3 个 tab)
- [全局]:不过滤,显示当前 scope 内的全部媒体(默认 tab)。
- [主体]:仅显示有
subject字段的资产,即主体级图片 / 视频 / 音频。 - [画布]:按画布维度的目录树展示,文件按
canvasEpisodeId分组。
4b. 4 kind chip(TabBar 下方)
- 图片 / 视频 / 音频 / 文档(单选 pill bar,默认图片 =
IMAGE)。 - 选中 kind 后右侧网格只显示该 kind 媒体。
4c. 「主体」sub-chip(仅当 4b = 图片 / 音频时展开)
- 选中「图片」kind 后,4 chip 下方进一步出现 角色 / 场景 / 道具 / 音色 4 sub-chip。
- 选中「音频」kind 时,sub-chip 简化为 音色 单 chip。
- 选中「视频」/「文档」kind 时,不显示 sub-chip。
4d. TimelineGroup 时间线分组(右栏主区)
- 按
updatedAt desc分组,每个日期 group 显示日期 header(24px / 700)。 - 1:1 缩略图(
167×167),5 列 × 2px gap,圆角 12px(横向 masonry)。 - hover 缩略图浮出 hover overlay(标题 + 元数据 + 选择框)。
- 「8月20日」之类长尾日期可能 12+ 张缩略图;短日期可能 0-3 张;目录行不会伪造空计数。
5. 缩略图卡片交互
- 单击 → 进入详情页
/workspace/asset-hub/[id](左 60% 主预览 + 右 40% 元数据 + 版本历史)。 - 双击 → 选中模式(批量操作启用)。
- 右键 → 上下文菜单(重命名 / 移动 / 删除 / 复制 publicId)。
- hover → 显示元信息 overlay(标题 + 上传时间 + kind + size)。
结果与状态
- 「全局」tab 默认 = 展示 scope 内的全部媒体,不区分归属。
- 切换 scope / kind / sub-chip 后,网格立即按新条件过滤,保留上一个 tab 的 staleTime(5s)避免闪烁。
- 时间线分组按
updatedAt真分组,目录行显示真实递归计数,避免「项目伪装成空文件夹行显示 0 资产」反模式。 - 批量操作可撤销(
Ctrl/Cmd + Z5s 内恢复)。 - 详情页(
/workspace/asset-hub/[id])字段已统一展平到顶层(previewUrl、mimeType、width、height、durationMs、fileName),避免「AssetSelected?.media.url嵌套访问 = 前端预览空白」根因。 - API 4 表 union(
globalCreativeAsset+globalCharacterAppearance+globalLocationImage+globalPropImage)确保主体资产不丢失。
权限和限制
- 个人资产:只对所属账号和有权项目可见;管理员代管仍受项目作用域限制。
- 删除文件夹 / 资产:删除前必须解除有效引用,优先归档有历史用途的内容。
- 声音样本:必须获得授权,不要上传含多人对白、背景音乐或敏感信息的音频。
- 生成和重新生成:可能产生模型费用。
- 一致性压力测试(每个主体测试结果都是一次独立图片生成):提交前请核对 3 / 5 / 10 次的选择,无效索引 / 空图片槽 / 不匹配的资产类型 / 无权访问的目标会在提交前被拒绝,不会产生模型费用。
常见问题
「全局」tab 看到空列表怎么办?
「全局」语义 = 账号下所有媒体(全局 + 项目级 + 画布级汇总)。如果你只创建过项目级 / 画布级媒体,需要切换 scope 到 [项目] 或 [画布] 才能看到。
「主体」sub-chip 和 kind chip 关系?
subject(主体种类)与 kind(媒体种类)正交。同一张 IMAGE 媒体可以同时是 character 主体图;选了「图片 + 角色 sub-chip」表示只看 kind=IMAGE AND subject=character 的媒体。
时间线分组怎么定义的?
按 updatedAt desc 真实时间分组,目录行不会伪造空计数(避免「项目伪装成空文件夹行显示 0 资产」反模式)。如果某日期只有 1 张图,只有 1 张图,不会拉补。
详情页(/workspace/asset-hub/[id])布局?
左 60% 主预览(图片 / 视频 / 文档 / 音频 waveform)+ 右 40% 元数据(标题 / 类型 / 标签 / 上传时间 / 大小 / 引用次数)+ 历史版本时间线。详细见资产详情文档(导航见左侧目录)。
怎么新建主体?
主体级配置 + AI 设计 + 历史版本操作走资产工作坊(/workspace/asset-workshop),不是本页面。本页面只展示 / 引用衍生的媒体文件。
相关文档
- SSOT: media-asset-and-workshop.md (SSOT) · 决策 ADR-0002 v5 D1-D6
- 上游:
资产工作坊(Finder 风格独立页,导航见左侧目录) · 配置主体 + AI 设计 + 历史版本 - 详情页:
资产详情(导航见左侧目录) - 画布抽屉: 画布资产抽屉
- 节点产物: 画布资产与版本