ai-chatbot/docs/video-canvas-competitor-audit.md

142 KiB
Raw Permalink Blame History

视频画布竞品对比记录

当前测试环境

  • 本地服务: http://127.0.0.1:3003(3000 被旧进程占用;使用 127.0.0.1 避免旧 localhost Cookie 干扰)
  • 本地测试画布: /canvas/bc8dcef2-b2b4-4a00-8712-52888158b934?mode=video&workspaceType=video
  • 本地测试账号: codex-video-test@example.com
  • 测试数据源: 服务器生产库复制到隔离 schema codex_video_canvas_local
  • 已复制数据: AiProvider 34 条、AiModel 23 条、SystemSettings 60 条、SiteSettings 1 条、存储/导航/教程/Agent preset 配置、测试用户 1 个
  • 本地调整: 仅测试 schema 中开启 points_system_config.enabled,用于显示/验证积分余额
  • 本地调试开关: CANVAS_E2E_LOCAL=true 时仅对 loopback 的 /api/auth/session 与 /api/auth/validate-session 跳过会话限流,避免本地高频浏览器验证触发登录失效
  • 本地模型回退: 测试 schema 中 Moonshot kimi-k2.5 返回 401 Invalid Authentication,已在隔离 schema 标记为 auto_disabled;代码已修复自动代理模型选择,避免继续选中 auto_disabled 的默认模型,当前本地脚本生成实际走 qwen3-vl-plus

已操作的竞品功能

  • 初始视频画布布局: 暗色点阵无限画布、四个启动卡、底部工具栏、缩放/吸附/小地图等控制
  • 底部主工具栏布局: 竞品在 1512 × 805 视口下主入口为底部居中横排 32px 图标按钮,坐标依次为 添加节点 x=616 y=753、打开工具箱 x=656、素材库 x=696、角色库 x=736、历史记录 x=776、快捷键 x=825、教程 x=865;历史记录 与 快捷键 之间有额外约 17px 间隔,其余相邻间隔约 8px
  • 故事脚本生成: 默认提示词、GVLM 3.1、消耗 6 点、脚本工作流创建、18 镜头表格
  • 剧本三步工作流: 确认镜头、准备资产、合成提示词
  • 剧本三步工作流入口: 从脚本节点点击 打开脚本节点 → 后进入全屏深色工作流,顶部三步为 确认镜头 / 准备资产 / 合成提示词,分别显示 18个镜头已就绪、7/7 已生成、18/18 已合成,右上显示 3/3 完成后可批量生视频 和关闭按钮
  • 确认镜头表格: Step 1 使用全屏表格,列顺序为 镜号 / 时长 / 画面描述 / 景别 / 光影氛围 / 对白·旁白 / 音效 / 运镜 / 最终提示词 / 操作;可见 18 镜,时长以 5s/6s 为主,内容通过 @现代沈昭昭、@金銮殿、@沈昭昭、@侍卫长刀 等资产引用串联剧情;底部左侧为 添加镜头,右侧为 → 下一步:准备资产
  • 最终提示词弹窗: 点击单行 查看提示词 后打开居中弹窗 第 1 镜:最终提示词,分为 分镜提示词 和 视频运动提示词 两块,状态均为绿色 已生成;分镜提示词为中文长句并追加 [视觉风格:盛唐·国风二次元],视频运动提示词按 起始状态 / 动作过程 / 结束状态 / 音效 组织,底部显示 GVLM 3.1 Flash、消耗 2、重新合成提示词
  • 准备资产页: Step 2 为资产网格,顶部显示 全局风格 盛唐·国风二次元;分组为 角色、场景、道具,资产卡包含 现代沈昭昭 / 沈昭昭 / 皇帝、金銮殿 / 长安城白昼 / 长安城夜景、侍卫长刀,每组末尾有虚线 新增 卡;hover 卡片右上出现菜单和放大镜,菜单项为 替换图片、AI 生角色、清除图片、红色 删除
  • 合成提示词页: Step 3 回到 18 镜表格并高亮最终提示词链路,底部主按钮为 一键合成全部提示词;本轮只确认入口、状态和表格呈现,未重复点击生成以避免再次扣点或改写竞品项目
  • 一键准备资产: 角色/场景/道具模板、Lib Image、标准画质、2K、2:1、7 个资产、实际扣 126 点
  • 一键合成提示词: GVLM 3.1 Flash、18 镜头、图像提示词和视频运动提示词拆分、实际扣 22 点
  • 批量生成分镜: 创建 18 个图片生成器组、Lib Image、2K、自适应
  • 批量生视频: Seedance 2.0 VIP、16:9、720P、5s、18 个视频生成器组、整组执行成本 2316 点
  • 单个视频生成结果: 结果卡显示 1280x720、播放进度、剪辑/裁剪/高清/解析/字幕/音频分离等工具
  • 视频结果卡 hover 控件: hover 分镜视频-#1 后底部出现播放圆钮、时间 0:00 / 0:05、进度条、右下帧截取圆钮;帧截取菜单为 截取首帧、截取尾帧、截取当前帧
  • 视频帧截取复查: 竞品菜单项可命中;本轮点击 截取首帧 后节点数仍为 33、图片节点数仍为 7,未出现成功 toast,页面已有多条历史 失败 文案,推测当前素材/状态下帧截取未落新节点
  • 视频结果工具条二级功能: 选中生成结果 分镜视频-#1 后顶部工具条顺序为 剪辑、裁剪、高清、解析、智能去字幕、音频分离
  • 视频结果裁剪: 点击 裁剪 后不打开 modal,而是在视频卡内出现裁剪框,裁剪框和视频卡下方内联编辑条均显示 1024 x 576;底部条左侧按钮为 退出裁剪,右侧圆形上箭头按钮为 生成裁剪
  • 视频裁剪生成: 点击 生成裁剪 后页面提示 正在裁剪视频,请稍候…,按钮进入 生成中 37% 等进度态;竞品前端成功路径文案为 已创建裁剪视频节点并开始上传,对应行为是创建下游裁剪视频节点并上传裁剪后的 blob;本次实测页面最终未出现可见新节点且余额仍为 531,疑似当前跟随/任务状态下裁剪任务未完成落点
  • 视频结果高清: 点击 高清 打开小型参数面板,包含 Topazlabs、1080P、2K、4K、不补帧、1x,点击选项前不会直接生成
  • 视频高清落节点: 复查画布当前状态时,分镜视频-#1 已连出一个 高清(1080P) 节点,节点 class 为 react-flow__node-video,文本为 配置参数生成高清视频;边为 Edge from v-kfwaCZvhsJ to v-2BDan8Sb2j,说明高清不是 toast/浮层结果,而是下游视频工具节点
  • 视频结果智能去字幕: 点击 智能去字幕 后出现说明 AI一键去除视频字幕,仅支持中英文字幕,下拉项为 智能擦除、框选擦除;点击 智能擦除 后进入视频卡下方内联生成器,原工具条收起,含 关闭去字幕生成器、标签 智能擦除、消耗 0、右侧图标生成按钮
  • 视频智能擦除生成: 点击生成按钮后余额仍为 531,节点数从 30 增至 31,连线数从 45 增至 46;新增下游视频任务节点 视频一键去字幕-分镜视频-#1,边为 Edge from v-kfwaCZvhsJ to v-khP9pMw41s,节点文本先为 生成中... 取消,约 12s 后为 生成中 2%... 取消,约 42s 后为 生成中 5%... 取消
  • 视频智能擦除取消: 复制 分镜视频-#1_无声 得到干净副本后触发 智能擦除,余额仍为 531,新增边 M3662,-632 ... 4463,-1237 指向视口外 pending 节点;沿边定位到 视频一键去字幕-分镜视频-#1_无声 - 副本,节点文案为 生成中... / 取消,随后进度到 1%/2%/3%/7%/11%;点击节点内 取消 不直接删除,而是弹出确认框 取消生成 / 正在生成中,即将完成!/ 停止将不退还已消耗算力。/ 取消 / 确定;点击 确定 后弹窗关闭,但至少 35s 内任务节点和连线仍保留、继续显示 生成中 ... / 取消,无 toast、无失败态、无乐观删除
  • 生成失败态排查: 当前竞品项目未找到真实失败任务样本;历史记录面板的 图片历史(8)、视频历史(10)、音频历史(6) 中均未出现 失败 或 重试;资产管理侧栏 画布元素 点击 搜索节点 后输入 失败,搜索框 placeholder 为 搜索节点,结果区显示 当前画布没有相关搜索结果,同时侧栏底部仍显示 共 96 节点;可见节点、React Flow 节点文本、localStorage/sessionStorage 中也未命中 失败/重试/failed/error,本轮未获得竞品真实 failed 节点视觉
  • 视频框选擦除入口: 点击 智能去字幕 -> 框选擦除 后,竞品自动放大/聚焦当前视频卡,原顶部视频工具条收起,视频卡下方出现 49px 高悬浮操作条;操作条包含 关闭去字幕生成器、标签 框选擦除、帮助问号、框选区域、撤销、重做、重置、费用和右侧生成按钮;未框选时费用显示 -,撤销/重做/重置和生成按钮为禁用态
  • 视频框选擦除帮助: hover 问号显示 tooltip,文案为 使用方法 / 在画面上拖拽鼠标,框选要擦除的区域 / 支持框选多个区域,所有框内文字将被擦除 / 擦除作用于整段视频,不仅是当前帧
  • 视频框选擦除选区: 在视频画面内拖拽后出现青色半透明矩形,样式为 rgba(7, 184, 221, 0.15) 填充、rgb(6, 144, 174) 边框、四角 rgb(9, 202, 245) 拖拽点;支持多个区域,本次实测两个区域同时存在
  • 视频框选擦除编辑历史: 有区域后费用变为 0,生成按钮启用;撤销 会移除最后一个区域并启用 重做,重做 恢复后再次禁用;重置 清空所有区域,费用回到 -,生成按钮禁用,同时 撤销 仍启用,说明重置也进入历史栈
  • 视频框选擦除生成: 生成前余额为 531、节点数 9、边数 27;点击生成后余额仍为 531,边数增至 28,新增边 Edge from v-kfwaCZvhsJ to v-Ajx1SDnP6W;当前视口未渲染目标节点,疑似目标节点位于 React Flow 虚拟化视口外或生成后归入视频组,已确认至少创建了从源视频到新任务/结果节点的下游边;竞品前端 chunk 显示框选模式后端参数为 model: volcano-subtitle-eraser、mode: Text、erase_ratio_location 归一化区域数组
  • 视频结果音频分离: 点击 音频分离 后出现 人声分离、音视频分离;hover 人声分离 后右侧二级菜单为 仅保留人声、仅保留背景音;音视频分离 的说明为 分离内嵌音轨为独立音频节点
  • 音视频分离落节点: 点击 音视频分离 后节点数从 34 增至 36、音频节点数从 1 增至 2;先出现 音频上传中(100%)...,约 3.5s 后落为新音频节点 分镜视频-#1_音轨,时长显示 00:00 / 00:05,并同时连出 分镜视频-#1_无声 视频节点
  • 人声分离仅保留人声: 点击 人声分离 -> 仅保留人声 后,源视频工具条按钮变为 分离中,页面提示 人声分离处理中,请稍候…,余额保持 531;约 6.5s 后节点数从 11 增至 13、边数从 28 增至 30,新增音频节点 分镜视频-#1_人声 和视频节点 分镜视频-#1_无声,两条边均从源视频 分镜视频-#1 连出
  • 人声分离仅保留背景音: 在已执行过人声/音视频分离的 分镜视频-#1 上点击该项后,同样出现 分离中 和 人声分离处理中,请稍候…;约 20s 后节点数仍为 13、未出现 分镜视频-#1_背景音,边数从 30 增至 32,疑似复用已有分离结果或需干净源视频复测
  • 人声分离仅保留背景音(干净副本): 将可见视频结果 视频一键去字幕-分镜视频-#1 复制为 视频一键去字幕-分镜视频-#1 - 副本 后,点击 人声分离 -> 仅保留背景音,源视频工具条立即变为 分离中,页面提示 人声分离处理中,请稍候…,余额保持 531;约 8s 后边数从 6 增至 8,向右平移画布后发现两个结果节点同坐标 translate(5286px, -962px),先渲染 350x350 视频节点 视频一键去字幕-分镜视频-#1 - 副本_无声,再渲染 350x148 音频节点 视频一键去字幕-分镜视频-#1 - 副本_背景音
  • 视频结果解析: 点击 分镜视频-#1 的 解析 后余额从 533 变为 531,按钮文案变为 解析中,页面出现 正在解析视频...
  • 视频解析落节点: 约 2.5s 后出现 解析完成,已创建视频故事节点;新增边 e-Mjyng4PRdE,aria-label 为 Edge from v-kfwaCZvhsJ to b-YCox1NJ2cN,源节点为 分镜视频-#1,目标节点为 视频故事
  • 视频故事节点: 节点 class 为 react-flow__node-video-story,标题 视频故事,表头顺序为 镜号 / 开始时间 / 结束时间 / 时长 / 画面描述 / 叙事内容 / 景别 / 摄影机角度 / 摄影机运动 / 焦距与景深 / 光线 / 背景音乐 / 人声/音效 / 图像生成提示词 / 视频运动提示词 / 关键帧
  • 视频故事内容: 当前 5s 视频生成 1 行,时间 0 / 5 / 5;画面描述为深夜办公室加班女性,叙事内容强调职场压抑和文件压迫感,镜头为 中景至近景 / 平视 / 缓慢推镜头 (Slow Zoom In) / 浅景深,图像和视频运动提示词使用英文
  • 添加节点菜单: 文本、图片、视频、视频合成 Beta、导演台 NEW、音频、脚本子菜单、素材库子菜单、上传、从生成历史选择
  • 添加资源入口: 上传 打开文件选择器;从生成历史选择 打开历史资产选择面板
  • 上传入口文件选择器: 点击 添加节点 -> 上传 可打开 file chooser,chooser 支持 multiple;使用无敏感测试图片 /tmp/codex-video-canvas-upload.png 执行 setFiles 时,Chrome 扩展返回 Not allowed / fileChooser.setFiles failed,节点数保持 13,未出现测试文件名或新节点;按 Chrome 插件说明需在 chrome://extensions 为 Codex 扩展开启 Allow access to file URLs 后才能继续真实上传复测
  • 图片节点: 图生图、图片高清、参考/标记/风格、Lib Image、标准画质、2K、1 张、18 点
  • 视频节点: 首尾帧/首帧模式、参考/标记/特效/角色库/运镜、Seedance 2.0、文生视频、16:9/720P/5s/1 个
  • 视频模型菜单: Seedance 2.0 VIP/Fast/Mini、Happy Horse 1.1/1.0、Kling O3/3.0/O1/2.6、Wan 2.7、动作迁移、MJ Video
  • 视频参数菜单: Auto/16:9/4:3/1:1/3:4/9:16/21:9、480P/720P/1080P/4K、时长、音频开关、数量 1/2/4
  • Prompt 辅助: 8 个运镜卡、特效库九宫格、角色库选择器
  • 音频生视频预设: 自动创建音频/图片/视频节点组并连接
  • 视频合成 Beta: 空态提示“空空如也,请连接视频节点后操作”
  • 导演台 NEW: 3D 导演台全屏编辑器、导演/机位视角、场景树、属性、FOV、坐标、截图工具
  • 素材库入口: 左侧小弹层,包含 风格库 新增风格节点 NEW 和 特效库 新增特效节点 NEW
  • 特效库广场: tabs 为 特效广场 / 我的收藏 / 最近使用,搜索框 placeholder 搜索特效名称、作者,分类 推荐 / 全部,卡片显示名称、商用、作者、使用数
  • 风格库广场: tabs 为 风格广场 / 我的收藏 / 最近使用,搜索框 placeholder 搜索风格名称、作者,分类包含 推荐、Midjourney、摄影写真、电商营销、动漫游戏、风格插画、平面设计、建筑及室内设计、创意玩法、文创周边、小说推文,带 仅看可商用 checkbox
  • 历史记录面板: 标题 历史资产,顶部显示 100%,tabs 为 图片历史(8)、视频历史(1)、音频历史(0),排序按钮 时间降序,操作入口 批量操作
  • 历史资产时间排序: 点击 时间降序 不打开菜单,而是按钮文案立即切为 时间升序;再次点击 时间升序 立即切回 时间降序;本次竞品临时页历史面板以居中大浮层展示,内容框约 x=76 y=80 w=1361 h=645、外层 z-index 601
  • 历史资产面板布局: 本轮临时页为居中大浮层,不是左侧抽屉;外层 pointer-events: none、内容框 pointer-events: auto、背景 rgb(38,38,38)、圆角 16px;标题位于 x=92 y=99,右上含 100% 缩放组和 28px 无文字关闭图标,点击关闭图标后 历史资产 消失;tabs 行位于 y=159,右侧 时间降序 与 批量操作 均为 86 × 32;素材区按 144 × 144 方形卡片横向网格排列,首行 x 约 96/252/408/564/720/876...,卡片 hover 层含 查看/使用/下载
  • 历史资产缩放组: 顶部 100% 左右两个无文字 28px 按钮为离散缩放控件;从 100% 点左侧按钮变为 75%,首卡从 144 × 144 变为 130 × 130,前三卡 x 为 96/238/380;点右侧按钮依次回到 100%、再到 125%(卡片 182 × 182,x 为 96/290/484)、150%(卡片 248 × 248,x 为 96/356/616)
  • 历史资产项: 按日期分组,如 2026-07-09,每项有 查看、使用、下载
  • 历史资产批量操作: 点击 批量操作 后顶部切换为 已选择 0 项,操作按钮为 删除、下载、使用、取消选择;未选中素材时前三项禁用、取消选择 可用;视频历史(1) 下日期组和素材项均出现 checkbox;选中 1 条素材后变为 已选择 1 项,删除/下载/使用 全部启用
  • 历史资产批量布局: 大浮层批量模式下顶部操作区位于 tabs 行右侧,已选择 0 项 在 x=1048 y=164 w=67 h=20,删除/下载/使用/取消选择 分别为 x=1123/1200/1277/1352 y=161,尺寸为 69×28 / 69×28 / 50×28 / 68×28;日期组 checkbox 为 x=96 y=209 16×16,素材 checkbox 在卡片左上,首行 x 为 102/258/414/570/726/882/1038/1194、y=245
  • 历史资产批量下载: 当前视频历史为 视频历史(5);批量模式选中 1 条视频素材后 删除/下载/使用/取消选择 均启用;点击 下载 后未触发浏览器 download 事件,四个按钮立即全部进入禁用态,至少 8s 内未恢复,页面无额外成功/失败 toast
  • 历史资产批量使用: 在临时竞品页打开 历史资产,进入批量模式并选中 1 条默认图片历史素材后点击顶部 使用;面板关闭,页面出现 toast 已应用到画布,画布新增并选中图片节点 图片28,节点 class 为 react-flow__node-image,可见参数区含 Lib Image / 自适应 · 标准画质 · 2K · 1张 / 18
  • 历史资产列表单项下载: 点击默认图片历史第一项列表内 下载 后,6s 内未触发浏览器 download 事件;历史面板保留,未打开预览层,被点击的 下载 按钮保持文案 下载 但进入 disabled;同时弹出 AI 生成内容水印管理规则 modal,modal 外层 z-index 801、内容框 740 × 404、位置约 x=386 y=201,含 去 AI 水印 和 保存设置
  • 历史资产水印规则弹窗关闭: 弹窗打开后页面没有可见关闭 X;按 Escape 不关闭水印规则 modal,而是继续传到底层并关闭历史资产面板,modal 仍以 z-index 801 保留;点击弹窗外遮罩也不关闭 modal;未点击 保存设置,避免修改竞品账号水印配置
  • 历史资产水印规则开关: 去 AI 水印 行为左侧 Mantine switch,input role="switch"、type="checkbox"、checked=false,轨道约 38 × 20、位置约 x=410 y=445、灰色 rgba(255,255,255,0.25),圆点在左侧且为深色;点击轨道、文字、外层行和精确 input 均未改变 checked 状态,弹窗保持打开;正文滚动区约 160px 高,提示文案在 switch 下方,保存按钮位于 x=972 y=537
  • 历史资产单项查看: 点击默认图片历史素材的 查看 后,不关闭历史面板、不选中画布节点,而是在其上打开全屏黑色预览层;遮罩为 bg-black/80、z-index 700,中心图片 object-contain,底部显示 1 / 8 和 下载,右侧有下一张箭头,右上角有关闭按钮
  • 历史资产预览关闭: 预览打开后,点击黑色遮罩空白处、点击右上角关闭按钮、按 Escape 都只关闭预览层;历史面板继续保留在底层,画布节点仍不选中
  • 历史资产预览切换: 第一张只显示右侧下一张箭头,点击后计数从 1 / 8 变为 2 / 8,左右箭头同时出现并贴近视口边缘(左 x=16、右 x=1456);按 ArrowRight 继续到 3 / 8,按 ArrowLeft 回到 2 / 8
  • 历史资产预览下载: 点击预览层底部 下载 后,6s 内未触发浏览器 download 事件;预览层和历史面板都保留,底部按钮变为禁用态 下载中...,约 13s 后仍保持 pending,按钮宽约 118px
  • 音频历史空态: 显示 暂无历史记录
  • 快捷键面板: 非 modal 浮层,有关闭按钮 关闭快捷键面板
  • 快捷键面板布局: 点击底部 快捷键 后打开 z-index 300 的居中大浮层,外壳约 x=180 y=300 w=1152 h=436、背景约 #444/95、圆角 16px;没有可见标题,右上 28px 关闭按钮位于 x=1292 y=313;内容四列,列标题 创作/缩放/移动画布/其他 分别位于 x=205/493/781/1069 y=325,列宽约 239,行高 28、行距 12;按 Escape 和点击面板外均不关闭,只能点右上关闭按钮
  • 快捷键分组:
    • 创作: 成组 G、合并分镜组 Option+G、解组 Shift+G、连线 L、复制节点和连线 D、生成 Enter、新建节点 Tab、节点复制 Option+拖动节点
    • 缩放: 放大、缩小、适应画布 0
    • 移动画布: Space、触控板、鼠标
    • 其他: 整理画布 Option+Shift+F、撤销 Z、重做 Shift+Z、删除
  • 教程菜单: 点击 教程 后显示小菜单 使用教程、联系客服、联系销售、关注公众号
  • 教程菜单布局: 点击底部 教程 后在图标上方弹出 z-index 300 小菜单,外壳约 x=865 y=582 w=104 h=154、背景 rgb(38,38,38)、圆角 12px;四个纯文字按钮均为 95 × 36,使用教程/联系客服/联系销售/关注公众号 y 坐标分别为 587/623/659/695;本轮自动化点击 使用教程 未捕获到新 tab,但历史手动/前轮记录显示该项会打开飞书 LibTV使用指南
  • 使用教程: 点击 使用教程 会打开飞书 LibTV使用指南 标签页
  • 资产管理入口: 闭合态左下按钮为带文字的 资产管理,1512 × 805 视口下约 x=22 y=759 w=94 h=28;打开后左下 dock 仍贴视口底部,面板内右上 资产管理 图标按钮位于 x=200 y=101 w=32 h=32
  • 资产管理面板布局: 打开后是 Mantine Drawer 式左侧全高侧栏,外壳 x=0 y=0 w=240 h=805、背景 rgb(23,23,23)、圆角 0、drawer inner z-index 30;顶部工作区输入约 x=12 y=56 w=78 h=20,项目按钮 画布 1 约 x=99 y=52 w=68 h=28;tabs 行 画布 / 资产 位于 x=8/60 y=102 w=44 h=30,active tab 背景 rgba(255,255,255,0.15)
  • 资产管理画布 tab 控件: 标题区 x=0 y=142 h=52,行内 画布元素 在 x=16 y=158,收起全部分组 x=70 y=154 w=28 h=28,类型筛选 x=148 y=154 w=54 h=28,搜索按钮 x=204 y=154 w=28 h=28
  • 资产管理宽度拖拽复测: Drawer 右侧有 role=separator、aria 调整工作区面板宽度 的 12px 热区,class 含 workspace-panel-drawer-resize-handle、cursor 为 col-resize;从默认 240px 沿 x=233 -> 360 拖拽后侧栏宽变 360,separator 到 x=347.5 w=12,关闭按钮/筛选/搜索分别到 x=319.5/267.5/323.5,列表主定位按钮宽约 335.5,更多/定位按钮到 x=293.5/319.5,底部统计宽约 359.5;左下 dock 随侧栏宽度移动到 整理/小地图/隐藏连线/吸附/缩放 x=382/414/446/478/510,画布 viewport transform 不变。本轮从 360 回拖未稳定复现缩窄,不把最大/回缩边界作为已确认事实
  • 资产管理收起全部分组复测: 点击 收起全部分组 x=70 y=154 w=28 h=28 后按钮 aria 变为 展开全部分组,但当前可见的普通节点行仍保留,列表可见定位行数量保持 28;滚动内容总高度从约 4130 缩到 2072,说明只收起分组内部内容,不会把非分组节点隐藏成空态,底部统计仍为 共 98 节点
  • 资产管理搜索: 点击 搜索节点 后标题行原地切换为输入框,placeholder 搜索节点,输入框约 x=29 y=158 w=101 h=20,右侧按钮变为 关闭搜索 并保持 x=204 y=154 w=28 h=28;输入 镜头 1 后列表即时过滤为 镜头 1/10/11/...
  • 资产管理类型筛选: 全部、文本、图片、视频、视频合成、导演台、音频、脚本、脚本(旧版);下拉菜单 role=menu,约 x=148 y=186 w=180 h=333、背景 rgb(23,23,23)、圆角 12px、z-index 410,每项 171 × 32
  • 资产管理音频类型筛选复测: 在类型菜单中点击 音频 x=152 y=410.5 w=171 h=32 后,筛选按钮 aria/text 变为 筛选类型:音频 / 音频,菜单关闭;列表只保留音频类主行,本轮可见 分镜视频-#1_背景音、分镜视频-#1_人声、分镜视频-#1_音轨、视频一键去字幕-分镜视频-#1 - 副本_背景音、音频节点 10/13/5/4 共 8 条,其中 预设 - 音频生视频 组内子项缩进到 x=24;底部统计仍显示整张画布 共 98 节点,不改为筛选结果数量,也无空态
  • 资产管理内容: 按节点和分组列出当前画布,如 导演台 6、脚本生成器、剧本、分镜图 · 我在盛唐写天下、视频组 · 我在盛唐写天下、我在盛唐写天下资产组 等;普通行外壳 x=8 y=202 w=224 h=40,主定位按钮 x=8 y=206 w=216 h=32,更多按钮 x=174 y=210,定位图标 x=200 y=210;底部统计区 x=0 y=753 w=240 h=53,本轮竞品账号为 共 76 节点
  • 资产管理定位行为复测: 在资产 Drawer 打开且当前 viewport 为 matrix(0.1,0,0,0.1,269.1,107.6) 时,点击列表行 导演台 12 机位2-shot-01 后不增删节点/边,目标节点立即选中,viewport 变为 matrix(1,0,0,1,-6201,199.5);选中节点屏幕框为 x=701 y=91.5 w=350 h=622,节点中心 x=876 y=402.5,即对齐到左侧 240px Drawer 右侧主画布区域中心;本轮顶部黄色 正在跟随 条在点击前已由此前教程残留存在,点击 取消ESC 仍未清除,因此不作为本轮定位新增证据
  • 资产管理更多操作: 单项 更多操作 弹出菜单为 重命名、复制,菜单约 x=174 y=240 w=180 h=81、背景 rgb(23,23,23)、圆角 12px、z-index 410,两项分别约 x=178 y=249 和 x=178 y=285
  • 资产管理复制行为复测: 本轮在竞品资产管理第一行 导演台 12 点击 更多操作 -> 复制,菜单项 复制 坐标约 x=178 y=284.5 w=171 h=32;复制后 .react-flow__node 从 94 增至 95,.react-flow__edge 保持 106,新节点立即选中,标题为 导演台 12 - 副本,在列表中插入到原节点下一行 y=248,画布世界坐标为原节点同 x=6192、y=-108 -> 302(即 height 350 + 60 的纵向偏移),没有成功 toast
  • 资产管理资产 tab: 点击 资产 后 active 背景移到资产 tab;内容区变为素材搜索/筛选而非画布大纲,搜索输入 placeholder 请输入搜索内容,约 x=8 y=154 w=192 h=30,搜索按钮 x=172 y=158 w=22 h=22,筛选素材类型 按钮 x=204 y=155 w=28 h=28;当前显示 暂无资产 空态,空态容器约 x=8 y=196 w=224 h=188
  • 资产管理资产 tab 标签筛选: 点击 筛选素材类型 后弹出标签筛选浮层,约 x=204 y=193 w=322 h=189、背景 rgb(33,33,33)、圆角 12px、z-index 410;标题 标签,可选标签 其它/人物/场景/物品/风格/音效,底部按钮 清空/应用
  • 视图跟随态: 通过资产管理/节点定位后顶部显示 正在跟随,按钮文案 取消ESC,下方提示 按 ESC 退出;复查 DOM 后未发现该状态生成临时连接路径,应与节点定位跟随相关,不能等同于连线模式
  • 端点拖拽建连: 竞品节点使用 React Flow 透明 handle,DOM 为 .react-flow__handle、data-handleid="target/source"、data-handlepos="left/right"、connectablestart/connectableend;实测从 分镜视频-#3 source handle 拖到 分镜视频-#9 target handle 后,.react-flow__edge 数量从 73 增至 74,新增边 e-SYnsgmeqw7,没有弹出菜单或成功 toast
  • 连线选择/删除: 竞品点击新增边 e-SYnsgmeqw7 后,该边 DOM class 变为 react-flow__edge react-flow__edge-default nopan selected selectable,selected nodes 为空;按 Delete 后该边消失,.react-flow__edge 数量从 74 回到 73,没有弹窗或 toast
  • 选中线中点剪刀删除: 另测临时边 e-al9CYM8T8M,创建后 .react-flow__edge 数量从 73 增至 74;点击选中后边 class 为 react-flow__edge react-flow__edge-default nopan selected selectable,中点出现 .scissors-enter 深色圆形剪刀按钮;点击剪刀后边数从 74 回到 73,未出现弹窗或 toast
  • 连线重连/目标高亮复查: 选中线后 DOM 未发现 .edgeupdater 或可拖拽重连手柄;静态 hover 目标 handle 仍只是普通 .react-flow__handle ... connectionindicator,未发现稳定额外高亮 class
  • 端点拖拽目标瞬时高亮: 竞品从 source handle x=1017.6 y=536.9 拖到目标节点/handle x=759 y=536.9 时,目标节点内容上方瞬时出现无类名黑色透明遮罩,采样为 rgba(0,0,0,0.35),矩形约 x=759 y=407.6 w=258.6 h=258.6;目标节点本身未新增 valid/connecting class、outline 或 shadow
  • 左下工具条闭合态: 竞品 1512 × 805 视口下左下 dock 坐标为 资产管理 x=22 y=759 w=94 h=28、整理画布,Option+Shift+F x=120、切换小地图 x=152、隐藏节点连线 x=184、网格吸附 x=216、缩放选项 x=248 w=42,缩放按钮文字为 100%;默认不显示 - / + 独立缩放按钮
  • 左下工具条资产面板打开态: 资产管理 Drawer 打开后,左下 dock 去掉 资产管理 文字入口并整体右移 240px,首个按钮 整理画布 位于 x=262,随后 切换小地图/隐藏节点连线/网格吸附/缩放选项 分别位于 x=294/326/358/390
  • 小地图打开态复测: 点击 切换小地图 后按钮背景变为 rgba(255,255,255,0.15);弹出的 .react-flow__panel.react-flow__minimap 为原生 SVG 小地图,资产面板打开态坐标 x=295 y=642 w=150 h=110,computed 样式为背景透明、无边框、圆角 12px、无阴影、overflow: visible、cursor: auto;内部 .react-flow__minimap-svg 同为 150 × 110,viewBox 使用画布世界坐标,节点为 .react-flow__minimap-node,遮罩为 .react-flow__minimap-mask,fill rgba(255,255,255,0.04)
  • 小地图交互复测: 在小地图内部点击会立即改变 .react-flow__viewport transform,本轮从 matrix(0.743079,0,0,0.743079,-3842.91,487.096) 跳到 matrix(0.743079,0,0,0.743079,-2122.7,-2015.25);在小地图内拖拽继续平移到 matrix(0.743079,0,0,0.743079,-6570.03,-4683.64),小地图保持打开
  • 小地图关闭态: 再次点击 切换小地图 后 .react-flow__minimap 从 DOM 消失,按钮恢复普通 hover 类,实测背景读数为 rgba(255,255,255,0.1)(鼠标仍悬停时)
  • 隐藏节点连线复测: 资产面板打开态按钮 隐藏节点连线 x=326 y=759 w=28 h=28;点击后按钮 aria 变为 显示节点连线,已有 .react-flow__edge 不从 DOM 移除,仍保留 1 个 edge group 和 5 条 path,主线 stroke rgb(192,200,208) / 2px、流动高亮 path 仍可见;变化发生在节点连接端点,.react-flow__handle 仍保留但多数 connectable handle 从 opacity=1 / pointer-events=auto 变为 opacity=0 / pointer-events=none;再次点击恢复为 隐藏节点连线,handle 恢复可交互,viewport 不变、无 toast

本地已验证

  • 本地测试账号可登录,余额显示 200,000
  • 本地视频画布可创建并加载 UUID 画布
  • 本地服务器配置已生效,/api/models 和 /api/video-canvas/config 可正常返回
  • 本地添加节点菜单可打开
  • 本地添加节点菜单已补齐竞品结构: 脚本 NEW、脚本(旧版) Beta、素材库 NEW、风格库/特效库、从生成历史选择
  • 本地添加节点菜单层级已修正: 画布内容层固定为低层级,添加面板可在其上命中;添加面板允许右侧子菜单溢出显示,避免 脚本/素材库 子菜单被滚动容器裁掉
  • 本地添加资源入口已修正: 素材库 继续打开风格/特效库;从生成历史选择 改为打开 历史资产 面板
  • 本地主工具栏布局已对齐: 原先主入口为左侧竖排工具栏;现改为竞品式底部居中横排 32px 图标按钮,并使用 fixed 定位避免页面滚动状态改变坐标。Chrome 复测 1512 × 805 视口下坐标为 添加节点 x=616 y=753、打开工具箱 x=656、素材库 x=696、角色库 x=736、历史记录 x=776、快捷键 x=825、教程 x=865,与竞品一致;底部仍保留 资产管理/缩放/吸附控制区
  • 本地素材库入口已验证: 风格库 NEW 新增风格节点、特效库 NEW 新增特效节点
  • 本地特效库/风格库广场已验证: tabs、搜索 placeholder、分类、商用标签、作者和使用数均按竞品结构呈现
  • 本地角色库已验证: 展示 角色库、角色详情、角色标签、应用至画布、角色筛选、最近使用、横向角色卡片;点击 应用至画布 会新增 甜妹/清新少女 角色资源节点并选中
  • 本地工具箱已验证: 展示 我的工具箱、分类 周星驰经典名场面 / 电商展示 / 镜头运动 / 人物动画 / 全部、横向模板卡、卡片 使用 按钮、模板详情和 模板工作流 预览;点击 【预设】左弧滑行 的 使用 后关闭面板并新增 参考图 -> 【预设】左弧滑行 工具箱工作流
  • 本地快捷键面板布局已对齐: 原先为左侧 300px 小浮层;现改为竞品式居中四列大浮层,外壳 x=180 y=300 w=1152 h=436、z-index 300、圆角 16px;无可见标题,右上关闭按钮 x=1292 y=313;四列标题 创作/缩放/移动画布/其他 位于 x=205/493/781/1068 y=325,主要行距和分组内容与竞品一致;Escape 和点外面不关闭,只能点击关闭按钮
  • 本地教程菜单布局已对齐: 原先为带标题和关闭按钮的 220px 小面板;现改为竞品式图标上方小菜单,外壳 x=865 y=582 w=104 h=154、背景 rgb(38,38,38)、圆角 12px、z-index 300;四项按钮 使用教程/联系客服/联系销售/关注公众号 均为 95 × 36,坐标 y 为 587/623/659/695;使用教程 继续打开指南页,其余保留待接入提示
  • 本地故事脚本工作流已验证: 点击 故事脚本生成 创建 剧本 和 脚本生成器 两个节点;选中脚本生成器后顶部浮动工具已改为竞品同款 重新生成 / 批量生成分镜 / 批量生视频
  • 本地脚本顶部工具栏已对齐: 竞品复测 1512 × 805 视口下脚本选中浮层为 x=411 y=60 w=393 h=41,按钮为 重新生成 x=415 w=96、批量生成分镜 x=515 w=122、批量生视频 x=641 w=109;本地复测为浮层 w=393 h=41,按钮 w=96/122/109 h=32,文本不再带多余首字图标
  • 本地故事脚本表格已对齐: 生成完整脚本 后脚本生成器节点显示竞品式 9 列表格,列名为 镜号 / 时长 / 画面描述 / 景别 / 光影氛围 / 对白·旁白 / 音效 / 运镜 / 最终提示词;Chrome DOM 复测确认列名全部存在,镜头编号 01 到 18 全部生成,节点状态为 故事脚本已生成
  • 本地脚本全屏三步工作流已对齐: 脚本生成器节点生成完成后出现 打开脚本节点 →,点击后打开 fixed 全屏深色工作流;Chrome 复测顶栏为 脚本生成器 / 确认镜头 18个镜头已就绪 / 准备资产 7/7 已生成 / 合成提示词 18/18 已合成 / 3/3 完成后可批量生视频,外壳为 1512 × 805,表格区域 x=25 y=180 w=1464,行高固定 60px
  • 本地脚本准备资产页已对齐: 点击 准备资产 后显示 全局风格 盛唐·国风二次元,并按 角色 / 场景 / 道具 分组展示 7 个资产 现代沈昭昭 / 沈昭昭 / 皇帝 / 金銮殿 / 长安城白昼 / 长安城夜景 / 侍卫长刀;资产图实测 w≈275 h=156,每组保留虚线 新增 卡和 hover 菜单结构
  • 本地脚本提示词弹窗已对齐: 在 合成提示词 页点击首行 查看提示词 后打开居中弹窗,Chrome 复测 modal x=376 y=109 w=760 h=587,含 第 01 镜:最终提示词、分镜提示词 / 分镜图提示词·已生成、视频运动提示词 / 视频运动提示词·已生成、GVLM 3.1 Flash / 消耗 2 / 重新合成提示词
  • 本地脚本批量分镜已对齐: 在干净画布按 故事脚本生成 -> 生成完整脚本 -> 批量生成分镜 顺序复测,toast 为 已批量生成 18 个分镜图片节点,画布生成 分镜 01 到 分镜 18 共 18 个图片生成器节点
  • 本地脚本批量生视频已对齐前端编排: 先批量生成分镜后重新选中脚本节点点击 批量生视频,toast 为 已创建 18 个视频生成器组,生成 分镜视频-#1 到 分镜视频-#18 共 18 个视频任务节点;所有节点显示 720P · 5s,无 720P · 6s 漏出,任务参数写入 Seedance 2.0 VIP / 16:9 / 720p / 5s、分镜图引用、图像提示词、视频运动提示词和原始镜头时长 sourceShotDuration
  • 本地连线快捷键已验证: 按 L 进入连线跟随态,顶部浮层对齐竞品 正在跟随 / 取消ESC / 按 ESC 退出;选择起点和目标节点后会新增连线并退出跟随态
  • 本地连线视觉预览已验证: 选择 剧本 为起点后,画布 SVG 出现 #a7afff 虚线预览路径和末端光圈;移动鼠标时路径终点变化;按 ESC 后预览路径和光圈移除
  • 本地透明端点单击已验证: 节点左右 handle 已改为透明 hot zone,带 data-handleid="target/source"、data-handlepos="left/right"、data-nodeid;单击 脚本生成器 右侧 source handle 后只显示顶部 正在跟随 / 取消ESC / 按 ESC 退出,没有连接菜单,handle 文本为空
  • 本地透明端点拖拽建连已验证: 从 脚本生成器 source handle 拖到 图片节点 3 后静默新增连线,.edge-flow-segments path 从 3 增至 6,未出现 已连接 toast、未出现连接菜单,预览线和光圈释放后清理为 0
  • 本地端点拖拽目标瞬时高亮已对齐: 新增 lineConnectState.hoverNodeId 并在 CanvasNodeShell 内渲染 data-connection-target-overlay 黑色透明遮罩;Chrome 复测从首帧节点 source x=890.1 y=421.1 拖到视频节点 target x=974.8 y=421.1 时,目标节点出现 bg-black/35、pointer-events-none 遮罩,矩形 x=974.8 y=255.5 w=431.2 h=331.1,顶部跟随提示和紫色预览线仍存在;松手后遮罩和预览线均清理为 0
  • 本地连线选择/删除已验证: 每条线现在带 .react-flow__edge 与 data-id,透明粗 hit path 可点击;点击 脚本生成器 -> 图片节点 3 的测试线后 class 增加 selected,selectedNodes 为空;按 Delete 后 edge 数量从 2 回到 1,节点数量保持 3,没有弹窗或 toast
  • 本地选中线中点剪刀删除已验证: 点击测试线后 .react-flow__edge class 增加 selected,中点显示 .scissors-enter 深色圆形剪刀按钮;按钮位于节点层之上且可命中,点击后 edge 数量从 2 回到 1,节点数量保持 3,剪刀按钮清理为 0
  • 本地视频结果卡 hover 控件已验证: 通过 脚本 -> 视频参考生成分镜脚本 创建视频参考资源节点,卡片内出现竞品式播放圆钮、0:00 / 0:05 时间、进度条、右下 截取视频帧 圆钮和 截取首帧/截取尾帧/截取当前帧 菜单
  • 本地视频帧截取已验证: 打开右下帧菜单后点击 截取首帧,节点数从 2 增至 3、edge 数从 1 增至 2,新增 视频-首帧 图片节点,显示 1280 × 720,并保留与原视频节点的连线
  • 本地视频结果工具条二级功能已验证: 选中带真实 mp4 地址的视频资源节点后,顶部工具条按竞品顺序显示 剪辑、裁剪、高清、解析、智能去字幕、音频分离;高清 按钮已修正为只显示 高清,不再露出额外 HD 文本
  • 本地视频裁剪态已验证: 点击 裁剪 后,视频卡上出现 80% 裁剪框和 1024 x 576 标签,视频卡下方出现 退出裁剪、1024 x 576、生成裁剪 的内联操作条,形态对齐竞品
  • 本地视频裁剪生成已验证: 点击 生成裁剪 后出现 正在裁剪视频,请稍候…,按钮进入 生成中 68% 禁用态;随后新增下游 视频_裁剪 视频节点,标题旁显示 1024 × 576,保留从原视频到裁剪结果的连线,并继续显示视频结果卡 hover/工具条能力
  • 本地视频高清面板已验证: 点击 高清 后出现 Topazlabs、1080P、2K、4K、不补帧、1x
  • 本地视频高清落节点已验证: 点击视频工具条 高清 -> 1080P 后新增下游 高清(1080P) 节点,文本为 配置参数 / 生成高清视频,并保留从源视频到高清节点的连线;点击 生成高清视频 后节点进入 生成中,约 2s 后变为 生成结果 1920 × 1080,节点内显示视频预览和 1080P
  • 本地智能去字幕已验证: 点击 智能去字幕 后下拉项为 智能擦除;点击后下方出现 关闭去字幕生成器、标签 智能擦除、消耗 0、右侧 生成擦除 按钮
  • 本地智能擦除生成已验证: 点击 生成擦除 后新增下游 视频一键去字幕-视频 任务节点,显示 生成中 4%... / 取消,并保留从源视频到任务节点的连线;本地模拟完成延迟已从约 3.6s 拉长到约 42s,以贴近竞品长 pending 节奏;完成后转为普通视频结果卡,标题旁显示 1280 × 720,保留 hover 播放、帧截取和二级工具条
  • 本地智能擦除取消已对齐: 修复 VIDEO_SUBTITLE_ERASE pending 节点取消按钮的 pointer 事件,点击 取消 后弹出确认框 取消生成 / 正在生成中,即将完成!/ 停止将不退还已消耗算力。/ 取消 / 确定;点击 确定 后弹窗关闭,任务节点继续保持 生成中 ... / 取消,不 toast、不立即删除、不转失败态,和本轮竞品实测一致
  • 本地生成失败态已验证: 在本地 localhost:3003 选中首帧图生视频的右侧视频目标节点后点击生成,因当前本地浏览器会话未登录,接口返回 未登录 并进入 failed;视频节点保留首帧模糊背景,中间黑色胶囊显示 未登录 / 移除,同时出现 toast 未登录;点击 移除 后失败视频节点和连线立即清理,只保留首帧节点。未接入首帧时则只 toast 首帧图生视频需要先接入首帧图片,不会创建 failed 节点
  • 本地框选擦除已实现: 智能去字幕 下拉补齐说明 AI一键去除视频字幕,仅支持中英文字幕 和两项 智能擦除/框选擦除;框选擦除 进入视频卡区域编辑态,支持在视频画面拖拽多个青色半透明矩形,底部操作条含关闭、帮助、框选、撤销、重做、重置、费用和生成按钮
  • 本地框选擦除参数已实现: 未框选时费用 -、生成按钮禁用;有区域后费用 0、生成按钮启用;撤销/重做/重置按竞品历史栈语义工作;点击生成会创建下游 VIDEO_SUBTITLE_ERASE 任务节点,draft 写入 model: volcano-subtitle-eraser、智能模式 mode: Subtitle、框选模式 mode: Text,并同时写入 erase_ratio_location / eraseRatioLocation 归一化区域数组
  • 本地音频分离已验证: 点击 音频分离 后下拉项为 人声分离、音视频分离,人声分离 hover 右侧子菜单为 仅保留人声、仅保留背景音,音视频分离 带说明 分离内嵌音轨为独立音频节点
  • 本地人声分离已对齐: 点击 人声分离 -> 仅保留人声 后立即显示 toast 人声分离处理中,请稍候…,源视频工具条按钮变为 分离中,期间不新增节点;约 6.4s 后新增 分镜视频-#1_人声 音频节点和 分镜视频-#1_无声 视频节点,.react-flow__edge 数为 2,两个节点均由源视频连出
  • 本地背景音分离已对齐: 点击 人声分离 -> 仅保留背景音 后按钮同样变为 分离中,toast 使用竞品父级文案 人声分离处理中,请稍候…;约 6.4s 后生成 分镜视频-#1_无声 350x350 视频节点和 分镜视频-#1_背景音 350x148 音频节点,两个结果同坐标落在源视频右侧,正文/DOM 顺序为 _无声 在前、_背景音 在后,.react-flow__edge 数为 2
  • 本地视频解析已验证: 选中带真实 mp4 地址的视频节点后,点击 解析,按钮变为 解析中,没有出现旧的浮动解析面板;后端返回后新增 视频故事 节点并选中,节点含竞品同款 16 列表头,镜号/开始时间/结束时间/时长/画面描述/叙事内容/景别/摄影机角度/摄影机运动/焦距与景深/光线/背景音乐/人声/音效/图像生成提示词/视频运动提示词/关键帧 均可见
  • 本地视频故事落节点已验证: 通过 定位选中 可将生成的 video-story 节点居中,表格节点使用暗色卡片、横向滚动长提示词;本次本地 demo 视频返回 3 行镜头,首行时间为 0 / 5 / 5,并保留从原视频节点到故事节点的画布连线
  • 本地视频解析后端 schema 复测: 更新 /api/canvas/workflow/analyze 后,新建第二个视频参考节点再点 解析,按钮同样变 解析中;返回新 视频故事 节点 1 行,字段包含非默认摄影机/光线内容,如 全景、静态固定镜头 (Static Fixed Shot)、无限景深、极低照度,确认后端已按竞品 16 列 JSON 契约输出
  • 本地视频首屏项目加载已修复: 本地 AUTH_URL/NEXTAUTH_URL 调整为 http://127.0.0.1:3003 后,使用 codex-video-test@example.com 登录可直接打开测试视频画布;视频画布组件现在优先水合服务端 initialProject,即使 Chrome 当前拦截直开 /api/*,也不会再落到空画布
  • 本地框选擦除浏览器复测已完成: 在 Chrome 中选中 分镜视频-#1 后,顶部工具条显示 剪辑/裁剪/高清/解析/智能去字幕/音频分离;智能去字幕 下拉显示说明 AI一键去除视频字幕,仅支持中英文字幕 和 智能擦除/框选擦除
  • 本地框选擦除初始态已验证: 点击 框选擦除 后,视频卡下方出现操作条,含 关闭去字幕生成器、框选擦除、帮助问号、框选区域、撤销、重做、重置、费用和 生成擦除;未框选时费用为 -,撤销/重做/重置/生成禁用
  • 本地框选擦除帮助已验证: hover 问号显示 使用方法 / 在画面上拖拽鼠标,框选要擦除的区域 / 支持框选多个区域,所有框内文字将被擦除 / 擦除作用于整段视频,不仅是当前帧,与竞品一致
  • 本地框选擦除选区与历史已验证: 拖拽可创建青色半透明矩形,实测样式为半透明青色填充、rgb(6, 144, 174) 边框、rgb(9, 202, 245) 四角点;支持多个区域;有区域后费用为 0 且生成启用;撤销移除最新区域并启用重做,重做恢复区域后禁用,重置清空区域、费用回 -、生成禁用且撤销仍可用
  • 本地框选擦除生成已验证: 重置后重新框选并点击 生成擦除,创建下游 视频一键去字幕-分镜视频-#1 节点,先显示 生成中 6%... / 取消,并保留从源视频到任务节点的连线;约 5s 后切为普通视频结果卡,标题旁显示 1280 × 720,保留播放、帧截取和二级工具条能力
  • 本地添加节点二级菜单复测修正: 脚本/素材库 hover 子菜单和主菜单之间的间隙已收窄,避免鼠标从主菜单移到子项时丢失 hover 导致子项无法点击
  • 竞品添加节点菜单最终复测: 底部 添加节点 按钮为 x=616 y=753 w=32 h=32;主菜单为 x=533 y=291 w=196 h=445,背景 rgb(38,38,38),边框 0.5px solid rgb(54,54,54),圆角 16px,padding 8px,gap 4px;主行 x=542 w=179 h=32,y 依次为 添加节点 300、文本 336、图片 372、视频 408、视频合成 444、导演台 480、音频 516、脚本 552、素材库 588、添加资源 624、上传 660、从生成历史选择 696;Beta x=630 y=452 w=34 h=16,NEW x=617 y=488/596 w=36 h=16
  • 本地添加节点菜单最终对齐: Chrome 复测本地主菜单同为 x=533 y=291 w=196 h=445,背景、边框、圆角、padding、gap、行坐标与竞品一致;文本起点 x=572,Beta x=630 y=452 w=34 h=16,导演台 NEW x=617 y=488 w=36 h=16,素材库 NEW x=617 y=596 w=36 h=16,主菜单 DOM 文本为 添加节点文本图片视频视频合成Beta导演台NEW音频脚本素材库NEW添加资源上传从生成历史选择
  • 本地添加节点子菜单最终对齐: 脚本 hover 时外层 x=721 y=552 w=204 h=85、内层 x=729 y=552 w=196 h=85,文本 脚本NEW / 脚本(旧版)Beta;素材库 hover 时外层 x=721 y=588 w=204 h=85、内层 x=729 y=588 w=196 h=85,文本 风格库 / 特效库,不再带多余 NEW 徽标
  • 本地故事脚本生成已验证: 后端 story-script 模式已改为直接要求模型输出 18 镜头 JSON,schema 补齐 duration、shotSize、lighting、dialogue、voiceAndSfx、cameraMovement、imagePrompt、motionPrompt 等字段,并要求 motion prompt 采用 起始状态 / 动作过程 / 结束状态 / 音效 结构;本地 CANVAS_E2E_LOCAL=true 时对 loopback 提供确定性的 18 镜测试数据,Chrome 复测节点展示 01 到 18
  • 本地生成分镜已验证: 点击 生成分镜 后创建 18 个 分镜 01 到 分镜 18 图片节点,当前画布共 20 节点
  • 本地资产管理入口已对齐: 原先左下入口是 26 × 26 小图标且随页面滚动偏移;现改为 fixed 视口定位的竞品式文字按钮,Chrome 复测 1512 × 805 下为 资产管理 x=22 y=759 w=94 h=26,并保留 aria/title 资产管理
  • 本地资产管理面板布局已对齐: 原先是左下 340px 浮层;现改为左侧全高 Drawer,外壳 x=0 y=0 w=240 h=805、背景 rgb(23,23,23)、圆角 0、z-index 30;顶部工作区输入 x=12 y=56 w=78,画布 1 按钮 x=99 y=52 w=68,tabs 画布/资产 在 x=8/60 y=102,面板内 资产管理 关闭按钮 x=199 y=101 w=32
  • 本地资产管理画布 tab 已对齐: 控制行 画布元素/收起全部分组/全部/搜索节点 坐标分别为 x=16/70/147/203 y=154,行列表起点 x=8 y=202,主定位按钮 x=8 y=206 w=216 h=32,更多按钮 x=174 y=210,定位图标 x=200 y=210,底部统计区 x=0 y=752 w=239 h=53
  • 本地资产管理定位最终对齐: 原先点击资产行只选中节点,viewport 保持 matrix(1,0,0,1,0,0),离屏副本仍在视口下方;现改为竞品式定位。Chrome 复测本地 文本节点 1 - 副本 行: 点击前副本世界位置 left=756 top=813 w=350 h=350,点击后 viewport 为 matrix(1,0,0,1,-55,-585),副本屏幕框 x=701 y=228 w=350 h=350,中心 x=876 y=403,正对齐资产 Drawer 右侧主画布中心,无 toast、不增删节点/边
  • 本地资产管理收起全部分组最终对齐: 原先点击 收起全部分组 会把所有普通节点隐藏,并显示 分组已收起,与竞品普通节点仍保留不一致;现改为只切换按钮状态。Chrome 复测本地两条普通文本节点时,点击后按钮 aria 变 展开全部分组,定位行数量保持 4(两条主定位 + 两个定位图标),文本节点 1 / 文本节点 1 - 副本 仍位于 y=206/248,不出现 分组已收起,底部仍为 共 2 节点
  • 本地资产管理搜索已对齐: 点击 搜索节点 后标题行原地切换为输入框并聚焦,placeholder 搜索节点,Chrome 复测输入框 x=29 y=158 w=101 h=20、关闭按钮 x=203 y=154 w=28 h=28;输入 分镜 后即时过滤并保留同款行布局
  • 本地资产管理类型筛选已对齐: 菜单项为 全部/文本/图片/视频/视频合成/导演台/音频/脚本/脚本(旧版),Chrome 复测菜单 x=147 y=186 w=180 h=333、背景 rgb(23,23,23)、圆角 12px、z-index 410,item 坐标从 x=152 y=195 开始,接近竞品 x=148 y=186 w=180 h=333
  • 本地资产管理音频类型筛选最终对齐: 通过底部 添加节点 -> 音频 创建 音频节点 3 后重新打开资产管理;选择类型菜单 音频 x=152 y=411 w=170 h=32 后,筛选按钮 aria/text 变为 筛选类型:音频 / 音频,列表只剩 音频节点 3,行坐标 x=8 y=206 w=216 h=32,定位图标 x=200 y=210;底部仍显示总节点数 共 3 节点 而不是筛选结果 1,无空态,行为与竞品一致
  • 本地资产管理更多操作已对齐: 单项菜单显示 重命名、复制,Chrome 复测菜单 x=174 y=240 w=180 h=82、背景 rgb(23,23,23)、圆角 12px、z-index 410,两项从 x=179 y=249/285 附近开始;复制行为已改为竞品式无 toast,标题追加 - 副本,列表副本紧跟原节点下一行,本地复测 文本节点 1 -> 文本节点 1 - 副本、底部 共 1 节点 -> 共 2 节点,画布位置从 left=756 top=403 size=350 复制到 left=756 top=813,即 height + 60 纵向偏移
  • 本地资产管理资产 tab 已实现: 点击 资产 后 active 背景切换到资产 tab,内容显示素材搜索输入 请输入搜索内容,输入框 x=8 y=154 w=191 h=30,搜索按钮 x=173 y=158 w=22 h=22,筛选素材类型 x=203 y=155 w=28 h=28,空态 暂无资产 容器 x=8 y=196 w=223 h=188
  • 本地资产管理资产 tab 标签筛选已对齐: 点击 筛选素材类型 后弹出标签筛选浮层,Chrome 复测 x=203 y=193 w=322 h=190、背景 rgb(33,33,33)、圆角 12px、z-index 410;含 标签、其它/人物/场景/物品/风格/音效、清空/应用
  • 本地历史资产已验证: 基于画布图片/视频/音频节点聚合,列表含缩略图、类型状态、查看、使用、下载;点击历史素材的 使用 后关闭面板并复制一份历史素材回画布,toast 已统一为竞品式 已应用到画布
  • 本地历史资产时间排序已对齐: 原先 时间降序 是静态按钮;现改为竞品式即时两态切换,点击 时间降序 后变为 时间升序,再次点击回到 时间降序,素材数组按状态正序/倒序显示,不打开额外菜单
  • 本地历史资产面板布局已对齐: 原先为左侧 420px 小列表抽屉;现改为竞品式居中大浮层,外层 z-index 601、内容框 h=calc(100vh-160px)、w=min(90vw,1600px)、背景 #262626、圆角 16px;顶部保留标题、100% 缩放组和无文字关闭按钮,tabs/排序/批量操作行改为 32px 高透明按钮,素材列表改为 144 × 144 方形卡片网格,卡片 hover 层仅显示 查看/使用/下载;Chrome 复测本地 视频历史(1) 外壳为 x=76 y=80 w=1361 h=645,日期 x=96 y=207,首卡 x=96 y=239 w=144 h=144,三按钮分别为 x=107/149/191 y=297
  • 本地历史资产缩放组已对齐: 原先顶部 - / + 为 no-op;现改为竞品式离散档位 75% / 100% / 125% / 150%。Chrome 复测本地从 100% 点左侧按钮变 75% 且前三卡为 130 × 130、x 96/238/380;连续点右侧按钮回到 100% 后到 125%(182 × 182,x 96/290/484)和 150%(248 × 248,x 96/356/616)
  • 本地历史资产默认图片历史已对齐: 原先默认 图片历史(8) 只有计数、内容区为空;现真实图片少于 8 条时用本地示例图片补足 8 张,真实图片仍排在前面;Chrome 复测默认图片页 cardCount=8,首行卡片 x 为 96/252/408/564/720/876/1032/1188、均为 144 × 144,暂无历史记录 不再出现,前三个按钮坐标为 查看 x=107、使用 x=149、下载 x=191
  • 本地历史资产默认图片操作已验证: 默认补位图片点击 查看 后打开 z-index 700 全屏预览层,底部显示 1 / 8 和 下载,历史面板保留在底层;关闭预览后点击第一张 使用,历史面板关闭并出现 toast 已应用到画布,画布出现 角色图 资源及图片节点工具条
  • 本地素材引用已验证: 先从 角色库 应用 甜妹/清新少女 到画布,再从 添加节点 -> 从生成历史选择 打开历史资产,点击该角色素材的 使用 后关闭面板并复制回画布,toast 使用 已应用到画布
  • 本地历史资产批量操作已验证: 创建本地 首帧图生视频 工作流后,视频历史(1) 正常列出视频素材;点击 批量操作 后显示 已选择 0 项,删除/下载/使用 禁用、取消选择 可用,日期组和素材项出现 checkbox;勾选素材后显示 已选择 1 项,日期组和素材 checkbox 同步选中,删除/下载/使用 全部启用;点击 取消选择 后回到普通列表并恢复 时间降序/批量操作
  • 本地历史资产批量布局已对齐: 大浮层网格化后复测 图片历史(8) -> 批量操作,顶部 删除/下载/使用/取消选择 坐标与竞品一致为 x=1123/1200/1277/1352 y=161,尺寸为 69×28 / 69×28 / 50×28 / 68×28;日期组 checkbox 为 x=96 y=209 16×16,素材 checkbox 首行 x 为 102/258/414/570/726/882/1038/1194、y=245;选中第一张后 已选择 1 项 出现,四个顶部按钮均启用
  • 本地历史资产批量下载已对齐: 当前本地视频历史为 视频历史(3);选中 1 条视频素材后 删除/下载/使用/取消选择 全部启用;点击 下载 后不再逐个触发浏览器 download 事件,而是进入竞品式批量下载 pending 态,四个按钮立即全部禁用,8s 后仍保持禁用
  • 本地历史资产批量使用已对齐: 视频历史(1) 进入批量模式后,选中 1 条素材显示 已选择 1 项 且顶部 删除/下载/使用/取消选择 启用;点击 使用 后历史面板关闭,新增并选中一份历史素材节点,toast 为 已应用到画布
  • 竞品历史资产批量删除确认复测: 在 图片历史(8) 进入批量模式并选中第一张后,顶部显示 已选择 1 项,删除/下载/使用/取消选择 全部启用;点击 删除 x=1122.9 y=160.5 w=69 h=28 后不会立即删除,而是打开居中确认弹窗。弹窗外壳 x=584 y=335.4 w=344 h=134.1、背景 rgb(38,38,38)、圆角 12px、边框 white/10,标题 批量删除 x=601 y=352.4,正文 确认批量删除 1 项 x=601 y=384.4,按钮 取消 x=799 y=420.6 w=50 h=32、删除 x=861 y=420.6 w=50 h=32;为避免破坏竞品账号历史资产,本轮只点击 取消,取消后弹窗关闭并保留批量模式和 已选择 1 项
  • 本地历史资产批量删除最终对齐: 原先本地点击批量 删除 只弹 toast 批量删除会从历史资产中移除记录,后端接口待接入。,没有确认弹窗;现补齐竞品式确认 modal。Chrome 复测本地 图片历史(8) -> 批量操作 -> 选中第一张 -> 删除: 弹窗 x=584 y=335.8 w=344 h=133.5,标题/正文/按钮为 批量删除 / 确认批量删除 1 项 / 取消 / 删除,按钮坐标 x=799/861 y=420.3 w=50 h=32;点击 取消 后保留 已选择 1 项,再次确认删除后本地显示 toast 删除成功,图片历史(8) 变 图片历史(7),顶部回到 已选择 0 项 且 删除/下载/使用 禁用
  • 本地历史资产列表单项下载已对齐: 原先列表内 下载 会触发浏览器 download 并显示 已开始下载当前资产;现改为竞品式水印规则流程,点击后不触发浏览器 download,历史面板保留,被点击按钮 disabled 且文案仍为 下载,弹出 AI 生成内容水印管理规则 modal,内容框为 740 × 404,含 去 AI 水印 和 保存设置
  • 本地历史资产水印规则关闭已对齐: 原先水印 modal 挂在 HistoryAssetsPanel 内,按 Escape 会随着历史面板一起卸载;现将 modal 状态提升到画布层,Chrome 复测 视频历史(1) -> 下载 -> Escape 后历史面板关闭但 AI 生成内容水印管理规则 仍保留,遮罩点击也不关闭 modal,和竞品一致
  • 本地历史资产水印规则开关已对齐: 原先 去 AI 水印 是右侧蓝色开启态静态开关,且被底部 保存设置 区域覆盖,点击右侧开关会误触保存并关闭弹窗;现改为竞品式左侧灰色关闭态 switch,input role="switch"、checked=false,正文滚动区固定 160px,switch、提示文案和保存按钮分离;Chrome 复测点击 switch 和文字后状态仍为 false、弹窗保持打开
  • 本地历史资产单项查看已对齐: Chrome 实测 历史记录 -> 视频历史(1) -> 查看 后,历史面板保留在底层、不选中画布节点,打开 1512 × 805 全视口黑色预览层;底部显示 1 / 1 和 下载,右上角关闭按钮位置贴近竞品,视频以 object-contain 方式居中展示并保留播放器 controls
  • 本地历史资产预览关闭已对齐: 遮罩空白点击、右上角 关闭预览、Escape 均只关闭预览层并保留历史面板;本轮修复了 Escape 同时触发主画布全局关闭导致历史面板一起关闭的问题
  • 本地历史资产预览切换已对齐: 为测试切换先用本地 使用 复制出第二条视频历史素材;视频历史(2) 打开预览后显示 1 / 2,右箭头贴视口 x=1456,点击后变为 2 / 2 且左箭头贴视口 x=16;ArrowLeft 可回到 1 / 2,历史面板保留、画布节点不选中
  • 本地历史资产预览下载已对齐: 原先预览层底部 下载 会立即触发浏览器 download 事件;现改为竞品式 pending,点击后不触发浏览器 download,预览层和历史面板保留,按钮禁用并显示 下载中...,pending 宽度固定为 118px
  • 本地上传复测状态: 上传 按钮已触发 Chrome 文件选择器,但当前 Chrome 扩展未允许文件 URL 访问,setFiles 返回 Not allowed;需开启扩展文件访问后复测实际文件选择
  • 本地上传入口复测补充: 本地 添加节点 -> 上传 也可打开 file chooser,chooser 支持 multiple;用同一测试图片执行 setFiles 同样返回 Not allowed / fileChooser.setFiles failed,节点数保持不变且无测试文件名,因此当前真实上传验证被 Chrome 扩展文件访问权限统一阻塞,不属于本地 UI 路径缺失
  • 本地左下工具条已对齐: 原先左下 dock 为 资产管理 / 画布总览 / 定位选中 / 吸附 / - / 100% / +;现改为竞品式 资产管理 / 整理画布,Option+Shift+F / 切换小地图 / 隐藏节点连线 / 网格吸附 / 缩放选项,Chrome 复测闭合态坐标为 x=22/120/152/184/216/248,按钮尺寸 资产管理 94×28、普通按钮 28×28、缩放 42×28
  • 本地资产面板打开态 dock 已对齐: assetManagerOpen 时左下 dock 隐藏 资产管理 文字入口并 translateX(240px),使按钮坐标对齐竞品打开态 整理画布 x=262、切换小地图 x=294、隐藏节点连线 x=326、网格吸附 x=358、缩放选项 x=390
  • 本地资产管理宽度拖拽已对齐: 原先只有 12px 透明热区但无 role=separator、无 col-resize、拖拽无响应;现补齐 workspace-panel-drawer-resize-handle、role=separator 和 pointer 拖拽,默认宽 240px,宽度按指针 x 坐标更新并钳制在 240..520。Chrome 复测 x=234 -> 360 后侧栏 w=360、separator x=347 w=12、关闭/筛选/搜索为 x=319/267/323,dock 为 x=382/414/446/478/510,与竞品 360px 态一致;再从 x=353 -> 190 回拖会钳制回 w=240,dock 回到 x=262/294/326/358/390
  • 本地小地图最终对齐: 原先是 232px 宽、带 画布总览 / N 个节点 标题的深色自绘弹窗;现改为竞品式透明 SVG 小地图,外壳 .react-flow__panel.react-flow__minimap bottom right,150 × 110、圆角 12px、背景透明、无边框、无阴影、overflow: visible、cursor: auto,无可见标题;资产面板打开态复测按钮 x=294 y=759 w=28 h=28,小地图 x=294 y=641 w=150 h=110,与竞品 x=295 y=642 仅 1px 取整差异
  • 本地小地图交互已对齐: 小地图内部改为 .react-flow__minimap-svg、.react-flow__minimap-node 和 .react-flow__minimap-mask,mask fill rgba(255,255,255,0.04);点击后按钮进入 bg-white/15 选中态,再次点击关闭并移除 .react-flow__minimap;本地复测点击 x=370 y=700 后世界 transform 从 translate(144px,100px) scale(0.77) 变为 translate(-17px,51px) scale(0.77),拖拽 345,685 -> 420,730 后变为 translate(-399px,-178px) scale(0.77),小地图保持打开
  • 本地隐藏节点连线最终对齐: 原先 edgesHidden 会把已有边和剪刀按钮整体过滤掉,与竞品“只隐藏连接端点、不隐藏已有边线”不一致;现改为已有边始终渲染,隐藏态只让 [data-handleid][data-handlepos] 端点 opacity=0 / pointer-events=none / tabIndex=-1。Chrome 复测本地闭合态按钮 x=184 y=759 w=28 h=28,先通过文本 source 1106,578 拖到音频 target 1208,575 创建 1 条 edge;点击隐藏后按钮 aria/title 变 显示节点连线,edge 仍为 1 组 5 path 且主线/流动高亮可见,4 个 handle 全部不可见不可命中;再次点击恢复为 隐藏节点连线,edge 保留,handle 恢复 opacity=1 / pointer-events=auto
  • 本地项目加载遮罩已改为非阻塞: 本地未登录或接口失败时不再出现 z=120 全屏遮罩阻挡工具条;改为顶部 pointer-events-none 小提示,便于继续测试画布功能。复测时 Chrome 当前会因未授权显示该提示,但左下工具条命中层已恢复为按钮本身
  • 竞品缩放选项已实测: 资产面板打开态左下缩放按钮为 x=390 y=759 w=42 h=28、文本 100%;点击后菜单为 x=318 y=474 w=187 h=277,背景 rgb(38,38,38)、边框 0.5px solid rgb(54,54,54)、圆角 12px、padding 6px、z-index 300;顶部输入框 aria 缩放比例,菜单项依次为 放大⌘+ / 缩小⌘- / 适合屏幕⌘0 / 缩放至50% / 缩放至100% / 缩放至800%
  • 竞品缩放行为已实测: 点击 缩放至50%/100%/800% 后菜单保持打开,按钮和输入分别变为 50/100/800,画布 transform scale 分别为 0.5/1/8;放大 从 100% 到 120%,缩小 从 120% 回 100%;输入 135 未回车时只改输入框,按钮和画布保持 100%,回车后按钮变 135%、scale 1.35
  • 本地缩放选项已对齐: 闭合态菜单为 x=176 y=473 w=187 h=278;资产面板打开态复测按钮坐标 整理画布/小地图/隐藏连线/吸附/缩放 为 x=262/294/326/358/390,菜单为 x=318 y=473 w=187 h=278,菜单项尺寸 174 × 36、圆角 8px,颜色、边框、padding、z-index 与竞品一致
  • 本地缩放交互已验证: 菜单点击后保持打开;缩放至50% 后按钮 50%、输入 50、transform matrix(0.5,...);缩放至800% 后按钮宽 44px、输入 800、transform matrix(8,...);放大/缩小 使用 20% 步进;自定义输入 135 未回车不改变按钮和 transform,回车后按钮 135%、transform matrix(1.35,...);点画布外部关闭菜单
  • 竞品整理画布已实测: 资产面板打开态按钮 整理画布,Option+Shift+F 位于 x=262 y=759 w=28 h=28;点击后 viewport 从 matrix(1,0,0,1,-2236.5,-2546.5) 变为 matrix(0.1,0,0,0.1,64.8,192),缩放按钮变 10%,可见节点从 DOM 0 个变为 33 个,说明该功能会把全画布整理/适配到视口,最小缩放为 10%;再按 Option+Shift+F 结果保持一致
  • 竞品整理确认条已实测: 点击整理后出现 是否保留此次整理结果? / 还原 / 保留;闭合态截图下按钮坐标 还原 x=98 y=706 w=50 h=32、保留 x=156 y=706 w=50 h=32,资产面板打开态按钮坐标 x=240/298 y=706;还原 移除确认条并恢复节点布局,但 viewport 保持整理后的 10% 视图
  • 本地整理画布已对齐: 原先 整理画布 只是定位/fit 选中节点;现改为保存原节点和原 viewport、生成整理预览、fit 全画布并弹出确认条。Chrome 复测 starter 工作流 2 节点: 点击后出现 是否保留此次整理结果?,确认条闭合态 x=50 y=662 w=168 h=88,按钮 还原/保留 为 x=98/156 y=706 w=50 h=32;资产面板打开态确认条 x=192 y=662 w=168 h=88,按钮 x=240/298 y=706;点击 还原 后回到原 matrix(0.77,0,0,0.77,144,100) 和 77%
  • 竞品网格吸附已实测: 按钮位于 x=358 y=759 w=28 h=28;点击前背景透明,点击后因 hover 读到 rgba(255,255,255,0.1),aria/class 未变化、无确认弹窗、viewport 不变。当前仅能确认它是无文字即时开关/按钮,不暴露可读的 pressed 状态;本地保持同样的无文字按钮和拖拽网格吸附逻辑
  • 竞品工具箱面板复测: 点击底部 打开工具箱 后,面板为 x=516 y=276 w=480 h=460,背景 rgb(38,38,38),边框 0.5px solid rgb(54,54,54),圆角 12px;顶部按钮为 我的工具箱 x=532.5 y=288.5 w=78 h=28、说明问号 x=608.5 y=294.5 w=16 h=16、周星驰经典名场面 x=632.5 y=288.5 w=128 h=28、关闭按钮 x=955.5 y=290.5 w=24 h=24;卡片为 3 列 141px 方图,首行 x=532.5/685.5/838.5 y=345.5 h=178,二行 y=535.5 h=161.5,三行 y=709 h=161.5;hover 后 使用 按钮为 50 × 24,首行坐标 x=578/731/884 y=404
  • 竞品工具箱使用复测: 直接点击隐藏态按钮不触发;真实用户路径为 hover 卡片后点击 使用。点击第一张 【预设】左弧滑行 后面板关闭、无 toast,视口变为 translate(137.4px, 529px) scale(0.1);新增并选中一个 分组 3 个节点 group,屏幕坐标 x=738.5 y=385 w=149.3 h=65.8,子节点为 参考图 x=742.5 y=389 w=35 h=52.5、提示词 x=791 y=389.5 w=35 h=20、成品 x=848.8 y=394.3 w=35 h=52.5,并新增三条边 参考图 -> 提示词、提示词 -> 成品、参考图 -> 成品
  • 本地工具箱面板最终对齐: Chrome 复测本地 打开工具箱 面板同为 x=516 y=276 w=480 h=460,背景、边框、圆角、头部按钮坐标与竞品一致;卡片首行 x=532.5/685.5/838.5 y=345.5 h=178,二行 y=535.5 h=161.5,三行 y=709 h=161.5,hover 使用 按钮首行 x=578/731/884 y=404、二行 y=594、三行 y=767.5,DOM 文本顺序为 我的工具箱 / 周星驰经典名场面 / 使用 / 【预设】左弧滑行 / 使用 / 【预设】电商手机弹出效果 / 使用 / 【预设】咖啡杯出场 ...
  • 本地工具箱使用最终对齐: 本地 hover 第一张模板后点击 使用,面板关闭且不 toast;画布 transform 为 translate(137.4px, 529px) scale(0.1),新增 4 个 DOM 节点(group + 3 子节点)和 3 条 .react-flow__edge;group 分组 3 个节点 坐标 x=738.4 y=385 w=149.3 h=65.8,子节点 参考图 x=742.4 y=389 w=35 h=52.5、提示词 x=790.9 y=389.5 w=35 h=20、成品 x=848.8 y=394.3 w=35 h=52.5,与竞品落点结构一致
  • 竞品角色库面板复测: 点击底部 角色库 后打开居中大模态,外壳 x=68 y=60 w=1376 h=685、背景 rgb(34,34,34)、圆角 16px;头部 角色库 x=85 y=76.6,右上关闭按钮;上方预览区 x=85 y=117 w=1342 h=375,4 张预览图居中,坐标为 角色立绘 x=230.5 y=173 w=191.3 h=255、脸部近景 x=429.7 y=173 w=191.3 h=255、表情参考 x=629 y=173 w=191.3 h=255、三视图 x=828.2 y=173 w=453.3 h=255;下方说明和 应用至画布 按钮位于 y=444
  • 竞品角色列表复测: 下方列表区 x=69 y=508 h=236;角色筛选 x=85 y=525 w=89 h=28、最近使用 x=1339 y=525 w=88 h=28;卡片从 x=125 y=569 h=159 开始横向滚动,缩略图约 99 × 133,默认展示 甜妹/清新少女、霸总/精英大佬、温柔熟男/理想男友、清冷千金/白切黑女主、古风男主、古风女主 等
  • 竞品角色筛选复测: 点击 角色筛选 后弹出固定筛选菜单 x=85 y=97 w=328 h=420、背景 rgb(38,38,38)、圆角 16px、z-index 61;包含 性别/年龄段/种族/时代/文化区域/体型/发色,每项为 57 × 28 胶囊按钮;点击 时代 -> 古代 后按钮变 rgb(105,105,105),角色列表即时过滤为 古风男主/古风女主
  • 竞品最近使用复测: 最近使用 是 role=checkbox;点击后 aria-checked=true,列表区显示空态 无最近使用的角色,不关闭筛选菜单、不弹 toast;再次点击恢复筛选后的角色列表
  • 竞品角色应用复测: 选中 古风男主 点击 应用至画布 后模态关闭,出现 已应用到画布 成功提示并进入跟随定位;视口变为 matrix(0.743079,0,0,0.743079,-3842.91,487.096);新增 4 个图片节点,无新增边,节点可见框为 角色立绘 x=428.3 y=68 w=209.5 h=260.1、脸部近景 x=651.2 y=68 w=209.5 h=260.1、表情参考 x=874.1 y=68 w=209.5 h=260.1、三视图 x=428.3 y=371.2 w=652.4 h=367.8
  • 本地角色库面板最终对齐: 本地 角色库 模态复测为 x=68 y=60 w=1376 h=685,上方预览区 x=85 y=117 w=1342 h=375,下方列表区 x=69 y=508 h=236;应用至画布 x=1302 y=444 w=109 h=32、角色筛选 x=85 y=526 w=87 h=28、最近使用 x=1339 y=526 w=88 h=28,与竞品坐标仅有 1-2px 差异
  • 本地角色筛选和最近使用最终对齐: 本地筛选菜单同为 w=328 h=420 固定浮层,点击 古代 后按钮背景变 rgb(105,105,105),列表只剩 古风男主/古风女主;勾选 最近使用 后 aria-checked=true,显示 无最近使用的角色,取消后恢复古代筛选列表
  • 本地角色应用最终对齐: 本地选择 古代 -> 古风男主 后点击 应用至画布,模态关闭并显示 已应用到画布 toast;画布新增 4 个角色图片节点,父层 transform 对齐竞品落点,可见节点框为 角色立绘 x=428.3 y=68 w=209.5 h=260.1、脸部近景 x=651.2 y=68 w=209.5 h=260.1、表情参考 x=874.2 y=68 w=209.5 h=260.1、三视图 x=428.3 y=371.2 w=652.4 h=367.8;本地使用项目 demo 角色图和三视图素材,避免直接复制竞品资源
  • 竞品素材库入口复测: 点击底部 素材库 x=695.5 y=752.5 w=32 h=32 后,在图标上方打开小弹层;外壳 x=636 y=569.3 w=240 h=162.7、背景 rgb(38,38,38)、边框 0.5px solid rgb(54,54,54)、圆角 12px、z-index 20;标题 素材库,两行入口均为 223 × 52,风格库 x=644.5 y=615.5、特效库 x=644.5 y=671.5,正文包含 新增风格节点/新增特效节点 和 NEW
  • 竞品风格库广场复测: 点击 风格库 后打开居中大浮层,外壳 x=100 y=79.5 w=1312 h=646、背景 rgb(38,38,38)、边框 0.5px solid rgb(54,54,54)、圆角 12px;tabs 风格广场/我的收藏/最近使用 均为 92 × 32,坐标 x=121/217/313 y=96;关闭按钮 x=1355.5 y=92 w=40 h=40;搜索输入 placeholder 搜索风格名称、作者,input x=442 y=101.9 w=279 h=20.1;分类行 y=157,含 推荐/Midjourney/摄影写真/电商营销/动漫游戏/风格插画/平面设计/建筑及室内设计/创意玩法/文创周边/小说推文,右侧 仅看可商用 checkbox 默认未勾选,全部 x=1341.5 y=157 w=54 h=28
  • 竞品风格库列表和搜索复测: 默认风格卡为 6 列,单卡 x=116.5 y=197 w=203.2 h=318.1,首行 复古马卡龙/新中式/岁月港风/新国韵/清风竹林/小岛微风;点击 我的收藏 后列表清空但不显示空态文案,最近使用 列表清空并出现 暂无素材;输入 新中式 不即时过滤,按 Enter 后才刷新为搜索结果,首行出现 Qwen Image新中式宋式美学支持输入中文室内家居空间 等后端结果;点击 Midjourney 仅切换按钮选中态,不清空已提交搜索词
  • 竞品风格卡应用复测: 在风格搜索结果里点击第一张卡后市场关闭、无 toast、无新增边,新增 react-flow__node-material-style 节点;当前竞品视口 matrix(0.743079,0,0,0.743079,-3842.91,487.096) 下,节点 transform matrix(1,0,0,1,6068,389),可见框 x=666.1 y=776.2 w=179.8 h=179.8,文本为 素材-风格-新中式宋式美学支持输入中文室内家居空间
  • 竞品特效库广场复测: 点击 特效库 后同样打开 x=100 y=79.5 w=1312 h=646 大浮层;tabs 特效广场/我的收藏/最近使用 坐标仍为 x=121/217/313 y=96;搜索 placeholder 为 搜索特效名称、作者;分类只有左侧 推荐 x=116.5 y=157 w=50 h=28 和右侧 全部 x=1341.5 y=157 w=54 h=28;特效卡为 6 列,单卡 x=116.5 y=197 w=203.2 h=252.4,首行 小蜜蜂运镜/穿云而入/飞跃地平线/逆转引力/地球缩放/环球缩放
  • 竞品特效库交互复测: 我的收藏 列表清空无空态文案,最近使用 显示 暂无素材;输入 产品 不即时过滤,按 Enter 后首卡变为 产品扫光,后续含 微距推镜/赛博化妆师/水下慢镜头;hover 第一张特效卡只出现两个 24px 图标,左上无文字图标 x=129.5 y=210、右上 收藏 x=282.7 y=210;直接点击特效卡会关闭市场,但节点数、边数不变,无 toast
  • 本地素材库入口最终对齐: 本地 素材库 入口复测外壳为 x=636 y=569 w=240 h=163、背景 rgb(38,38,38)、边框 0.5px solid rgb(54,54,54)、圆角 12px、z-index 20;两行入口均为 223 × 52,风格库 x=644.5 y=615.5、特效库 x=644.5 y=671.5,已补齐 新增风格节点/新增特效节点 描述和 NEW
  • 本地风格库广场最终对齐: 本地风格市场复测为 x=100 y=79.5 w=1312 h=646,tab、关闭按钮、搜索输入、分类行、仅看可商用 默认未勾选、全部 右侧按钮与竞品坐标一致;风格卡首行坐标 x=116.5/331.7/546.8/762/977.2/1192.3 y=197 w=203.2 h=318,输入 新中式 后不即时过滤,按 Enter 后刷新为 Qwen Image... 搜索结果
  • 本地风格卡应用最终对齐: 本地点击风格搜索结果第一张卡后市场关闭、无 toast、无新增边,新增 1 个 .react-flow__node-material-style 风格节点;在本地 100% 视口下节点可见框为 x=666 y=776 w=242 h=242,若使用竞品同款 0.743079 缩放则屏幕尺寸约为 179.8 × 179.8;节点文本收敛为 素材-风格-...
  • 本地特效库广场最终对齐: 本地特效市场复测外壳为 x=100 y=79.5 w=1312 h=646;tabs、搜索输入、推荐/全部 坐标对齐;特效卡首行 x=116.5/331.7/546.8/762/977.2/1192.3 y=197 w=203.2 h=251.2,接近竞品 252.4;输入 产品 不即时过滤,Enter 后首卡变为 产品扫光
  • 本地特效卡点击最终对齐: 本地在特效搜索结果第一张卡点击后市场关闭,无 toast,节点数保持不变、边数保持 0,已有风格节点仍为 1 个;与竞品本次实测“直接点击特效卡关闭但不落节点”一致
  • 竞品快捷键 D/d 复测: 快捷键面板标注 复制节点和连线 D,但在当前画布实测并未触发复制;未选中/选中 古风男主 角色立绘、尝试大写 D 和小写 d 后,节点数均保持 11、边数保持 10、无 toast、选中节点不变。本地同场景按 D/d 也保持 no-op,不额外实现复制
  • 竞品键盘删除复测: 选中 古风男主 角色立绘 后按 Delete,节点数 11 -> 10、边数保持 10、选中态清空、无 toast;再选中 古风男主 脸部近景 后按 Backspace,节点数 10 -> 9、边数保持 10、选中态清空、无 toast
  • 本地键盘删除最终对齐: 原先键盘 Backspace/Delete 删除节点会弹 节点已删除;现键盘删除走静默路径,保留右键菜单删除的提示。Chrome 复测选中 甜妹/清新少女 表情参考 后按 Backspace,节点数 2 -> 1、选中态清空、toast 为空,行为与竞品一致
  • 竞品教程菜单点击复测: 点击 联系客服、联系销售、关注公众号 后菜单保持打开,不新开标签、不弹 toast、不出现额外弹窗,仅对应菜单项 class 切为 bg-canvas-controls-active;点击 使用教程 后新开 https://resonate.feishu.cn/wiki/Loxfw6XHziYRk0kKzdjcFfp9nhb 标签,原画布菜单仍保持打开,使用教程 变 active,无 toast
  • 本地教程菜单点击最终对齐: 原先 联系客服/联系销售/关注公众号 会弹 待接入 toast 且没有 active 态;现点击四项均只在菜单内切换 active,三项联系类无 toast/无新标签/无弹窗,使用教程 新开同款飞书 URL 且原菜单保留 active 状态。Chrome 复测四项坐标仍为 x=869 y=587/623/659/695 w=95 h=36
  • 竞品添加文本节点复测: 在当前画布残留 正在跟随 / 取消ESC / 按 ESC 退出 状态下,Escape、点击 取消ESC 和文本定位点击均未退出该跟随条,但不影响底部 添加节点 菜单;点击 添加节点 -> 文本 后,节点数 9 -> 10、边数保持 10、viewport 保持 matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast,新增并选中 react-flow__node-text,标题 文本节点 2,文本为 尝试: 自己编写内容 文生视频 图片反推提示词 文字生音乐,世界坐标 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1
  • 本地添加文本节点最终对齐: 原先底部菜单创建文本会弹 已添加 文本节点 1 toast、节点尺寸 436 × 470 且落到左上负坐标;现 添加节点 -> 文本 无 toast、无新增边、选中新节点、viewport 不变,节点为 350 × 350,左上角按当前 viewport 中心落点。Chrome 复测空画布 100% 下新增 文本节点 1 屏幕框 x=756 y=403 w=350 h=350,内部文案为 尝试: 自己编写内容 文生视频 图片反推提示词 文字生音乐
  • 竞品添加图片节点复测: 在同一画布上点击 添加节点 -> 图片 后,节点数 10 -> 11、边数保持 10、viewport 保持 matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast;新增并选中 react-flow__node-image,世界坐标同当前文本节点为 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1,说明基础图片节点也是 350 × 350;节点文本为 图片节点 3 / 尝试: 图生图 图片高清 参考 标记 风格 / 可直接文字生图,或上传图片输入文字指令对图片进行编辑,如:将背景改为雪夜 / Lib Image 自适应 · 标准画质 · 2K · 1张 18
  • 本地添加图片节点最终对齐: 原先底部菜单创建图片会生成 773 × 470 横向节点,落点带图片偏移,且文案只含 图生图 / HD 图片高清;现基础 图片 节点改为 350 × 350,左上角按当前 viewport 中心落点,无 toast、无新增边、选中新节点,内部文案补齐 图生图 图片高清 参考 标记 风格、说明文案和 Lib Image 自适应 · 标准画质 · 2K · 1张 18 参数行。Chrome 复测空画布 100% 下新增 图片节点 1 屏幕框 x=756 y=403 w=350 h=350
  • 竞品添加视频节点复测: 先点画布空白清掉图片节点参数层,再点击 添加节点 -> 视频;节点数 11 -> 12、边数保持 10、viewport 保持 translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中 react-flow__node-video,世界坐标仍是 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=462.2 h=260.1,反推基础尺寸约 622 × 350;节点文本为 视频节点 4 / 尝试: 首尾帧生成视频 首帧生成视频 / 参考 标记 特效 角色库 运镜 / 描述你想要生成的画面内容,@引用素材 / 2.0 文生视频 16:9 · 720P · 5s · 1个 · 高级设置 联网搜索 自动校验素材
  • 本地添加视频节点最终对齐: 原先底部菜单创建视频会生成 773 × 470 大节点,并按居中节点加偏移落到屏幕左侧;现基础 视频 节点改为 622 × 350,和文本/图片一样按当前 viewport 中心左上角落点,无 toast、无新增边,视频卡片高度压到 350 内,选中后下方参数浮层改为 660 × 191 轻量面板。Chrome 复测空画布 100% 下新增 视频节点 1 屏幕框 x=756 y=403 w=622 h=350,浮层文本为 参考 标记 特效 角色库 运镜 描述你想要生成的画面内容,@引用素材 2.0 文生视频 16:9 · 720P · 5s · 1个 · 高级设置 联网搜索 自动校验素材
  • 竞品视频节点高级设置复测: 选中 视频节点 4 后,参数栏右侧依次为 提示词优化、翻译提示词、无文字滑杆图标 高级设置、费用 135、白色生成按钮;普通 1512 × 805 视口下高级区默认折叠,DOM 中预渲染 高级设置 / 联网搜索 / 自动校验素材 但外层为 grid-rows-[0fr]、高度 0。点击滑杆图标后高级区变 grid-rows-[1fr],高度约 116.5px,标题 高级设置 下有两行 联网搜索 和 自动校验素材,两行右侧 Mantine switch 均默认 checked=true,轨道 38 × 20、白底黑色 14px 滑块;点击 联网搜索 后仅第一行变 checked=false、轨道 rgba(255,255,255,0.25)、滑块移到左侧,第二行保持开启
  • 本地视频节点高级设置最终对齐: 原先本地把 高级设置 / 联网搜索 / 自动校验素材 作为参数栏文字按钮直接排在同一行,且高阶会员下费用显示 VIP;现改为竞品式三枚图标按钮和折叠高级区,2.0 / 文生视频 / 16:9 · 720P · 5s · 1个 · / 135 位于同一参数栏,生成按钮空提示词时禁用并提示 请输入提示词或添加参考素材。Chrome 复测将节点拖入视口后,点击滑杆图标,高级区 grid-rows-[1fr]、高度 117px,两枚 [role="switch"] 均为 aria-checked=true;点击第一行后变 aria-checked=false、bg-white/25、滑块左移,第二行仍为 aria-checked=true
  • 竞品视频模型菜单复测: 选中 视频节点 4,将节点拖入视口后点击参数栏 2.0;弹层为 Mantine popover,外框约 x=614.5 y=215 w=369 h=409、role=dialog、背景约 #2d2d2d/95、圆角 16px,内部滚动区 360 × 400、列表单项 360 × 52、图标底座 34 × 34、间距 4px。完整顺序共 31 项: Seedance 2.0 VIP / Seedance 2.0 Fast VIP / Seedance 2.0 Mini / Happy Horse 1.1 / Happy Horse 1.0 / Kling O3 / Kling 3.0 Turbo / Kling 3.0 / Wan 2.7 / Kling O1 / Wan 2.6 / Hailuo 2.3 / Seedance1.5 Pro / Seedance 1.0 Pro / Seedance 1.0 Lite / Kling 2.6 / Hailuo 02 / Vidu Q2 / Vidu Q2 Pro / Vidu Q2 Turbo / Vidu Q3 Pro / OmniHuman 1.5 / Kling 2.5 / Kling 2.1 / Wan 2.2 / Wan 2.5 / Pixverse V5.5 / Pixverse V5 / Hailuo 2.3 Fast / Kling3.0 动作迁移 / MJ Video;第一项 data-selected=true、背景 rgba(255,255,255,0.15),末三项为 cursor-not-allowed opacity-50 禁用态。点击第二项后菜单关闭,参数按钮变 2.0 Fast、宽约 114.6px,文生视频 与参数摘要右移,费用仍为 135;再次打开可看到第二项高亮,点第一项恢复 2.0
  • 本地视频模型菜单最终对齐: 原先本地模型菜单只有 12 项,弹层 420 × 430、单项 402 × 69,带序号和 720P限时9折/限时4折 标签,缺少 Kling 3.0 Turbo/Wan 2.6/Hailuo/Vidu/OmniHuman/Pixverse 等模型,且 Kling3.0 动作迁移/MJ Video 可点击;现改为竞品式 369 × 410 外框、360 × 400 滚动区、360 × 52 单项、31 项完整顺序,第一项 data-selected=true、背景 bg-white/[0.15],末三项 disabled 且 cursor-not-allowed opacity-50。Chrome 复测空画布新增 视频节点 1 后拖入视口,点击 2.0 得到弹层 x=750 y=216 w=369 h=410、首项 x=755 y=221 w=360 h=52,切 Seedance 2.0 Fast VIP 后菜单关闭、按钮文本 2.0 Fast、宽 115px,再次选择首项恢复 2.0、宽 91px
  • 竞品视频参数弹层复测: 在 视频节点 4 点击摘要 16:9 · 720P · 5s · 1个 · 后,弹层左边与摘要按钮对齐、底边紧贴摘要顶部;本次外框 x=824.5 y=179 w=341 h=445,背景约 #2d2d2d/95、边框 0.5px solid rgb(54,54,54)、圆角 16px、内边距 12px,内容宽 316px。五组依次为 比例 / 清晰度 / 视频时长 / 生成音频 / 生成数量,标签均为 14px/20px rgb(145,145,145);比例按 5 列换行成 Auto/16:9/4:3/1:1/3:4 + 9:16/21:9,单项 56.8 × 62、间距 8px,图标尺寸依次为 12×9/16×9/12×9/12×12/9×12/9×16/16×7;清晰度 480P/720P/1080P/4K 单项 73 × 32,音频 开启/关闭 单项 154 × 32,数量 1个/2个/4个 单项 100 × 32。选中态统一为 rgba(255,255,255,0.1)、白色 0.5px 边框和 rgb(247,247,247),未选中为透明背景、rgb(82,82,82) 边框和 rgb(145,145,145);时长滑杆根宽约 244px、轨道 236 × 4、白色滑块 12 × 12,数值框 48 × 20、min=4 max=15 step=1。实测依次切换 1:1 -> 1080P -> 关闭音频 -> 2个,弹层均保持打开,摘要同步为 1:1 · 1080P · 5s · 2个 ·;数字框填 8 时摘要仍为 5s,按 Enter 后才变 8s,随后已逐项恢复默认值并关闭弹层
  • 本地视频参数弹层最终对齐: 原先本地弹层为 472 × 408、比例 7 项纯文字横排、标签 12px、选中态白底黑字、无时长滑杆,数值框为 80 × 36 min=1 且输入时立即提交;现重做为 341 × 445、12px 内边距、五组 8px 纵向间距,并让弹层随模型按钮宽度动态左移/右移,始终与参数摘要左边对齐。Chrome 复测本地外框 x=959 y=189 w=341 h=445、摘要 x=959 y=634 w=204 h=32;比例、清晰度、音频、数量的每项尺寸、网格换行、图标尺寸、标签字号、边框、颜色和选中态均与竞品测量值一致。补齐 4-15s 滑杆和 48 × 20 数字框;实测同序点击 1:1 -> 1080P -> 关闭 -> 2个 后菜单保持打开、摘要同步,数字框填 8 前摘要保持 5s、Enter 后变 8s,滑杆按 Home 实时变 4s、ArrowRight 变 5s;最后逐项恢复 16:9 / 720P / 开启 / 1个 / 5s
  • 竞品视频生成模式菜单复测: 无参考素材时点击参数栏 文生视频,打开外框 x=709.5 y=395 w=197 h=229 的 Mantine popover,左边与 文生视频 x=709.5 y=624 w=106 h=32 对齐、底边紧贴按钮顶部;外框背景约 #2d2d2d/95、边框 0.5px solid rgb(54,54,54)、圆角 16px、模糊 16px,内层 196 × 228、padding=8px、gap=4px。标题 视频生成模式 高 32px,顺序固定为 文生视频 / 全能参考 / 图生视频 / 首尾帧 / 图片参考,每项 180 × 32、图标 16 × 16;当前项背景 rgba(255,255,255,0.15)。无参考时仅 文生视频 可用,其余四项 disabled;点当前项关闭菜单,点禁用项菜单保持打开且模式不变
  • 竞品视频模式素材联动复测: 点击节点尝试项 首帧生成视频 后并非立即静态切换,稍后新增 预设 - 首帧生成视频 分组和一条 首帧参考 -> 视频节点 4 连线,节点总数从侧栏 98 -> 100,提示词自动填入 以当前图为首帧生成视频。,模式自动变 全能参考,无 toast。已有 1 张参考时,文生视频 disabled,而 全能参考 / 图生视频 / 首尾帧 / 图片参考 全部可用;切 图生视频 后菜单关闭,快捷动作变 参考/标记/特效/运镜,隐藏 角色库;切 首尾帧 后只保留 参考/标记/角色库,缩略图左上标 首帧;切 图片参考 或 全能参考 后恢复 参考/标记/特效/角色库/运镜 五项。各模式保留原提示词与 16:9 · 720P · 5s · 1个,费用均回显 135
  • 本地视频生成模式菜单最终对齐: 原先本地点击模式按钮不会打开菜单,而是直接在 文生视频/全能参考 间跳转;带参考素材时仍能切回竞品禁止的 文生视频,也没有 图生视频/首尾帧/图片参考 入口。现新增竞品式 197 × 229 模式弹层;Chrome 有参考复测外框 x=849 y=332 w=197 h=229、模式按钮 x=849 y=561 w=106 h=32,5 项均为 180 × 32、图标 16 × 16、选中背景 white/15,尺寸和相对锚定与竞品一致。无参考复测为 文生视频 enabled、其余四项 disabled;点击禁用项菜单不关闭。创建首帧参考后自动进入 全能参考,文生视频 disabled、其余四项 enabled;同序切换 图生视频 -> 首尾帧 -> 图片参考 -> 全能参考,菜单关闭、按钮文本/图标和快捷动作均按竞品规则变化,首尾帧 缩略图补齐 首帧/尾帧 角标,各模式费用均显示 135
  • 本地首帧快捷创建反馈最终对齐: 本地原有 首帧生成视频 已能创建首帧图片资源、连线、填入 以当前图为首帧生成视频。 并切到 全能参考,但会额外弹 已按「首帧生成视频」创建关联节点;现只对 首帧生成视频/首尾帧生成视频 移除该本地独有 toast。Chrome 清空重建 视频节点 1 后复测 首帧生成视频,参考节点和连线正常创建、模式自动变 全能参考、提示词正确、toast 为空
  • 竞品视频 参考 画布选择复测: 点击快捷动作 参考 不打开上传/历史弹层,而是进入全画布选材态;顶部出现 314 × 58 工具栏,背景 rgb(38,38,38)、边框 rgb(54,54,54)、圆角 16px、padding 12px、gap 16px,含 32 × 32 图标、从画布选择参考、返回节点 76 × 32、退出 50 × 32。返回节点 只将 viewport 定位到目标节点且选择态继续;点击可用图片节点会新增 图片源 -> 视频目标 连线、工具栏不关闭,图片中央悬浮显示 取消选择 72 × 28;再次点击会只断开该参考。退出 关闭选择态但保留当前 viewport 和已选参考,全程无 toast
  • 竞品视频参考缩略图与移除复测: 连接 2 张图片后,参数浮层由无参考时 660 × 191 扩为约 660 × 254;快捷动作保持 54/54/54/66/54 × 26,参考独占下一行,缩略图外框 48 × 48、图片 47 × 47、圆角 12px、间距 8px,左上以 1/2 编号,右上 hover 出现 15 × 15 删除按钮。删除任意一张只移除对应连线和缩略图,不删除源节点;删除最后一张后模式自动回到 文生视频,首尾帧生成视频/首帧生成视频 建议项恢复,提示词 以当前图为首帧生成视频。 保留
  • 本地视频 参考 画布选择最终对齐: 原先点击 参考 完全无响应;现补齐同款全画布选材状态、314 × 58 顶部工具栏、返回节点/退出 行为、图片节点点击增删 source -> target 连线和选中图片中央 取消选择 72 × 28。Chrome 以真实坐标重建 视频节点 1 -> 首帧 后复测,画布根滚动保持 0,工具栏为 x=599 y=80 w=314 h=58;hover 首帧时取消按钮 x=410 y=564.875 w=72 h=26.25、opacity 1,点击后工具栏仍在、参考连线消失、模式回到 文生视频、源节点和提示词均保留,退出后工具栏关闭,控制台 error 为 0
  • 本地视频参考缩略图最终对齐: 原先参考图混在快捷动作行且只有 32 × 26,参数浮层高度固定,也没有移除入口;现移到独立换行区,缩略图改为 48 × 48、图片 47 × 47、圆角 12px、间距 8px,右上 hover 删除按钮为 15 × 15,并按参考行数扩展浮层高度。Chrome 复测单参考浮层为 660 × 254,五枚快捷动作宽度为 54/54/54/66/54;缩略图删除和画布中央取消两条路径均只删除边,最后一条移除后按竞品规则回退模式并恢复建议项
  • 视频参考状态机推断: 本步骤没有触发文件上传或生成请求,竞品行为可由画布图状态直接解释:选材等价于创建/删除 image source -> video target 有向边,缩略图列表来自目标节点的入边;可用生成模式由图片入边数量派生,数量归零时强制回退 text-to-video,但 prompt 独立保存。因此本地按同一图状态机实现,没有新增硬编码素材或伪造后端提示词
  • 竞品视频 标记 选择模式复测: 点击快捷动作 标记 不直接改写提示词,而是进入全画布 元素选择模式;顶部工具栏为 336 × 58、背景 #262626、边框 #363636、圆角 16px,包含 点击图片选择局部元素 / 返回节点 76 × 32 / 退出 50 × 32。非图片节点在此模式下不可点,点击图片局部后原位显示 分析中...,首个真实结果约 7-8s 返回 人物,第二个约 20s 返回 人物面部;工具栏和选择模式在连续标记后均保持,无 toast
  • 竞品视频标记结果与层级复测: 每次结果同时落到源图片和目标提示词;源图显示 34px 高徽章、指向点击点的竖线及 hover 24 × 24 删除按钮,目标提示词插入不可编辑 .magic-chip,id 规则为 源节点ID_序号。人物 芯片带层级箭头,点击后出现 120px 宽菜单,可在 人物 / 眼睛 间切换并同步 data-magic-index;人物面部 无层级箭头。源徽章删除会联动删除对应芯片且不影响其他标记;将光标放到芯片后按 Backspace 也只删除该结构化标记。退出 保留标记,返回节点 保持选择态;本轮结束前已将竞品临时标记全部清理,提示词恢复为 以当前图为首帧生成视频。
  • 本地视频 标记 最终对齐: 原先本地点击 标记 只会在 textarea 后拼接 ,添加人物与构图标记,产生 。 后多余逗号且没有选区语义;现改为同款全画布元素选择工具栏、图片局部点击、分析中状态、源图徽章/指示线/hover 删除、源徽章当前层级菜单、提示词不可编辑芯片、层级菜单、源端联动删除和 Backspace 删除。Chrome 使用真实图片实测返回 汽车,层级为 汽车 / 车头盖 / 前大灯 / 奔驰车标;切到 车头盖 后芯片和索引同步,删除后提示词精确恢复,退出无 toast。最终优化后的真实分析耗时约 13.3s
  • 本地视频标记后端与配置: 复用现有 /api/pick-object 和 Qwen3-VL 能力,新增 video-canvas-mark 模式及后台可编辑的 element-mark 功能配置,模型默认 qwen3-vl-plus,提示词和启停状态均落在 video_canvas_function_config,未写死在前端。视频标记模式由服务端拉取源图、用 Sharp 缩放到最长边 500px 并叠加点击十字,直接以内存 data URL 调用视觉模型,避免临时上传;原有通用物体选择路径保持不变
  • 视频标记算法推断: 竞品返回的不是单一自由文本,而是由点击坐标约束的局部视觉识别结果,数据至少包含 sourceNodeId / sequence / clickX / clickY / labelOptions / selectedIndex;层级标签按“主体到局部”排序,提示词芯片只是结构化状态的编辑视图,生成时再把已选标签和对应参考图传给视频任务。本地据此保存结构化 magicMarks,生成请求附带标记图片并在后端提示中加入当前选中标签,用户可见提示词保持干净
  • 竞品添加视频合成 Beta 节点复测: 点击 添加节点 -> 视频合成 Beta 后,节点数 18 -> 19、边数保持 10、viewport 保持 matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast;新增并选中 react-flow__node-video-clip,标题 视频合成 11,世界坐标 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1,反推基础尺寸 350 × 350;节点正文为 空空如也,请连接视频节点后操作
  • 本地添加视频合成 Beta 节点最终对齐: 原先底部菜单创建 视频合成 会生成 436 × 470 节点,落点为 x=618 y=421;现改为竞品同款 350 × 350,按当前 viewport 中心左上角落点,无新增边、无 toast,正文为 空空如也,请连接视频节点后操作。Chrome 复测空画布 100% 下新增 视频合成 1,节点框 x=756 y=403 w=350 h=350
  • 竞品添加导演台 NEW 节点复测: 点击 添加节点 -> 导演台 NEW 后,节点数 19 -> 20、边数保持 10、viewport 保持 matrix(0.743079,0,0,0.743079,-3842.91,487.096)、无 toast;新增并选中 react-flow__node-director-console-3d,标题 导演台 12,世界坐标 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1,反推基础尺寸 350 × 350;节点正文为 在3D空间中搭建场景并进行多视角截图 / 打开导演台,按钮为 24px 高半透明小按钮
  • 竞品导演台全屏复测: 点击 打开导演台 后出现 fixed 全屏编辑器,外壳 x=0 y=0 w=1512 h=805、z-index 600、背景 rgba(8,8,16,0.98);顶栏 h=64 bg=rgb(33,33,33),导演视角/机位视角 位于顶栏中部,帮助/关闭 为右上 24px 按钮;左栏 x=0 y=64 w=230 h=741,含 场景 / 搜索场景对象 / 机位1 / 角色A;右栏 x=1231 y=64 w=281 h=741,标题 3D场景,含 场景缩放 / 场景平移 XYZ / 场景旋转 XYZ / 全景背景 / 已连接全景图 / 请将图片节点连接到导演台左侧输入口 / 天空颜色 # / 全景球 / 水平旋转 / 球形半径 / 角色标签 / 网格吸附 / 地面 / 透明度 / 高度;主区右上有 72 × 72 小 canvas 和 重置视角 x=1139 y=158 w=72 h=21,底部工具条含 移动 (V) / 添加角色 / 全景图 / 添加机位 / 选择画幅比例 / 截图 / AI 识图导入 / 全屏
  • 本地添加导演台 NEW 最终对齐: 原先本地创建导演台为 436 × 470 大节点、按居中偏移落点,且打开后是旧版 属性/摄像机截图 侧栏;现菜单创建 导演台 1 为 350 × 350,空画布 100% 复测节点框 x=756 y=403 w=350 h=350,按钮 x=893 y=560 w=76 h=24、半透明背景、无新增边/无 toast。打开后全屏外壳 1512 × 805、顶栏 64、左栏 230 × 741、右栏 281 × 741、右上小 canvas 72 × 72、重置视角 x=1139 y=158 w=72 h=21,右侧文案和竞品 3D场景 参数结构一致
  • 竞品导演台重置视角按钮复测: 在右侧停留 摄像机 面板、选中 机位1 时点击主区右上 重置视角 x=1139 y=158 w=72 h=21;按钮类为 mt-1.5 w-full rounded-md bg-white/10 py-0.5 text-[11px] text-white/60 ... hover:bg-white/15 hover:text-white/85,点击后仅保留 hover 样式,不弹 toast、不改 URL、不切换右侧面板、不改变选中对象
  • 本地导演台重置视角按钮最终对齐: 原先本地按钮为 top-24 text-[12px] text-white/72 且点击会弹 已重置导演视角。;现改为 top-[94px] text-[11px] text-white/60 hover:text-white/85 并移除 toast。Chrome 复测普通态按钮 x=1139 y=158 w=72 h=21,点击后无 toast、URL 不变、右侧仍为 摄像机;沉浸态复测按钮为 x=1420 y=158 w=72 h=21
  • 竞品导演台底栏全屏按钮复测: 在导演台编辑器内点击底部 全屏 x=892 y=740.5 w=36 h=36 后,不进入浏览器原生 fullscreen,document.fullscreenElement=false、viewport 仍为 1512 × 805;应用内进入沉浸态,左侧 场景 栏和右侧 3D场景 面板隐藏,顶栏仍为 x=0 y=0 w=1512 h=64 bg=rgb(33,33,33),主区变为 x=0 y=64 w=1512 h=741,重置视角 移到 x=1420 y=158 w=72 h=21;底部工具条仍为 x=575.5 y=732 w=361 h=53,按钮文案/tooltip 变为 退出全屏 x=892 y=740.5 w=36 h=36,全程无 toast
  • 本地导演台底栏全屏按钮最终对齐: 原先本地点击该按钮只弹 全屏待接入。 toast,布局不变;现补齐应用内沉浸态切换。Chrome 复测点击 全屏 后 document.fullscreenElement=false、无 toast,左/右侧栏隐藏,主区变为 x=0 y=64 w=1512 h=741,重置视角 x=1420 y=158 w=72 h=21,底部按钮变为 退出全屏;再次点击后恢复左栏 x=0 y=64 w=230 h=741、主区 x=230 y=64 w=1001 h=741、右栏 x=1231 y=64 w=281 h=741,按钮恢复 全屏
  • 竞品导演台移动工具菜单复测: 点击底部 移动 (V) x=584 y=740.5 w=36 h=36 后无 toast,打开变换模式菜单,主按钮变 bg-white/[0.14] + ring-white/30 active;菜单外壳 x=575.5 y=614 w=132 h=118、背景 rgba(31,31,31,0.72)、边框 white/12,三项均为 x=582.5 w=118 h=32,顺序和 y 坐标为 移动 V y=621 / 旋转 R y=657 / 缩放 S y=693。点击 旋转 R 或 缩放 S 后菜单关闭,底栏第一个按钮同步变为 旋转 (R) 或 缩放 (S);重开后对应项保留 active。菜单打开时按 R/S/V 会直接切换 active 且菜单保持打开,菜单关闭时按 V 只切内部模式、不主动打开菜单
  • 本地导演台移动工具菜单最终对齐: 原先本地点击 移动 (V) 会弹 移动 (V)待接入。,没有可记忆模式;现补齐竞品式三项变换菜单、动态主按钮和快捷键。Chrome 复测本地菜单外壳 x=575.5 y=614 w=132 h=118、三项坐标 x=582.5 y=621/657/693 w=118 h=32,点击子项关闭且无 toast,重开后保留 旋转/缩放/移动 active;按 S 后底栏主按钮变为 缩放 (S),点击可打开菜单并显示 缩放 S active;菜单关闭后按 V 不打开菜单,重开显示 移动 V active
  • 竞品导演台顶栏视角切换复测: 顶栏中部为 导演视角/机位视角 分段控件,外壳 x=675.7 y=11.5 w=174 h=40、背景 rgb(20,20,20)、边框 rgb(54,54,54)、圆角 16px;两个按钮均为 80 × 32,坐标 导演视角 x=680.7 y=15.5、机位视角 x=764.7 y=15.5,active 为 bg-white/10。在底部变换菜单打开时点击 导演视角 会关闭菜单、无 toast,并将主区角标切为 导演视角,底栏 transform 主按钮仍保留之前选中的 缩放 (S)
  • 本地导演台顶栏视角切换最终对齐: 原先本地顶栏只是透明 160 × 32 分段,inactive 文案偏灰,且切换时不统一收起底部菜单;现改为竞品同款 174 × 40 黑色分段控件。Chrome 复测本地外壳 x=675.7 y=11.5 w=174 h=40,按钮坐标 x=680.7/764.7 y=15.5 w=80 h=32,切换 机位视角 后底部菜单关闭、无 toast,主区角标变为 导演台 1 · 机位视角 · 16:9,transform 主按钮保持 缩放 (S)
  • 竞品导演台帮助菜单复测: 右上 帮助 x=1432 y=19.5 w=24 h=24、关闭 x=1464 y=19.5 w=24 h=24;点击帮助不新开标签、不弹 toast,帮助按钮 active 为 bg-white/10,下方菜单外壳 x=1336 y=43.5 w=120 h=84,菜单体 x=1336 y=49.5 w=120 h=78、背景 rgba(31,31,31,0.94)、边框 white/10、圆角 12px,两项为 快捷键 x=1341 y=54.5 w=110 h=32、使用教程 x=1341 y=90.5 w=110 h=32
  • 竞品导演台快捷键与教程复测: 点击/hover 快捷键 后菜单不关闭,条目 active,左侧快捷键面板外层 x=925 y=54.5 w=416 h=234、面板 x=925 y=54.5 w=408 h=234、背景 #1f1f1f/95、圆角 16px,内容为 俯视视角 T / 重置视角 Q / 打组 G / 撤销 Z / 正面视角 Y / 网格吸附 X / 解组 ⇧ D / 删除。点击 使用教程 后不新开标签、不弹 toast,进入跟随教程层,顶部黄条 x=669.1 y=0 w=173.7 h=34,按钮 取消ESC x=766.1 y=9 w=63.7 h=16,并出现 构图参考线 高亮按钮;在关闭导演台后黄条仍残留在主画布,且本轮实测 Escape 和点击 取消ESC 都未将该残留条清掉
  • 竞品导演台关闭按钮复测: 在教程跟随态点击右上 关闭 后,导演台 fixed 编辑器关闭,右上 帮助/关闭 消失,回到主画布并显示节点按钮 打开导演台 x=854.5 y=568.1 w=67.6 h=23.8;无 toast、不改 URL、不新增/删除主画布节点;教程黄条作为全局跟随态保留
  • 本地导演台帮助/快捷键/教程/关闭最终对齐: 原先本地帮助只弹 导演台帮助文档待接入。 toast;现补齐竞品式帮助菜单、快捷键二级面板、教程跟随层和关闭保留黄条行为。Chrome 复测帮助菜单为 x=1336 y=49.5 w=120 h=78,两项 x=1341 y=54.5/90.5 w=110 h=32;快捷键面板修正为 x=925 y=54.5 w=408 h=234,内容与竞品一致;教程黄条为 x=669 y=0 w=174 h=34、取消按钮 x=766 y=9 w=64 h=16;教程态点击 关闭 后本地同样回主画布、隐藏 帮助/关闭、保留黄条,Escape 可清掉本地全局黄条
  • 竞品导演台左侧场景树搜索复测: 搜索框 x=12 y=126 w=205 h=32、placeholder 请输入搜索内容,上方 场景 x=24 y=88;列表从 x=12 y=178 开始,每行 205 × 32,对象顺序为 道具1-7 / 机位1-4 / 角色A-C。输入 角色 后即时过滤为 角色A/B/C,首行回到 y=178,右侧仍停留在原面板;输入 机位2 后只剩 机位2;输入 不存在 后列表无对象行,显示空态 没有匹配的场景对象 x=12 y=178 w=205 h≈58.6,右侧仍停留在上一次选中对象
  • 竞品导演台场景树点击联动复测: 在搜索词 角色 下点击 角色C x=12 y=242 w=205 h=32 后,搜索词保留,右侧切到 角色 面板,属性 tab active、姿势 inactive,名称输入 value=角色C x=1248 y=217 w=248 h=28;在搜索词 机位2 下点击唯一行后,右侧切到 摄像机 面板,属性 active、摄像机截图 inactive,名称输入 value=机位2 x=1248 y=385 w=248 h=28,切换机位为 native select x=1248 y=457 w=248 h=28,位置为 0 / 2.2 / 10,注视坐标为 0 / 1.2 / 0,FOV 为 50.0
  • 本地导演台左侧场景树搜索/点击最终对齐: 原先本地搜索框可输入但不会过滤,行文本包含 ▣/♙ 字符,选中行直接用元素背景;现改为受控即时过滤、视觉图标不进入文本、无匹配空态和竞品式伪元素高亮。Chrome 复测本地搜索框 x=12 y=126 w=205 h=32,行从 y=178 起,输入 角色 只剩 角色A,输入 不存在 显示 没有匹配的场景对象 x=12 y=178 w=205 h=58;过滤态点击 角色A 后搜索词保留且右侧切 角色,名称输入 value=角色A x=1248 y=217 w=248 h=28;过滤态点击 机位1 后右侧切 摄像机,名称输入 value=机位1 x=1248 y=384 w=248 h=28,位置/注视坐标/FOV 与竞品默认规则一致
  • 竞品导演台选择画幅比例复测: 在导演台全屏内点击底部 选择画幅比例 图标按钮,按钮本体 x=760 y=740.5 w=36 h=36,上方出现比例菜单且不关闭工具条;菜单外壳 x=638 y=550.5 w=280 h=182、背景 rgba(31,31,31,0.72)、边框 white/12、z-index 1600,标题 比例,网格 x=651 y=583.5 w=254 h=136,4 列布局,选项顺序和坐标为 Auto x=651、21:9 x=716.5、16:9 x=782、4:3 x=847.5、第二行 1:1 x=651、3:4 x=716.5、9:16 x=782,单项 57.5 × 64;点击 9:16 后菜单保持打开,9:16 变白字和 white/8 背景,其余项保持 white/55
  • 本地导演台选择画幅比例最终对齐: 原先本地底部导演台工具条为文字按钮,整体 752.6 × 58,点击 选择画幅比例 会直接在角标中切换 16:9/9:16 且无菜单;现改为竞品式 8 个 36 × 36 图标按钮,工具条外壳 x=575.5 y=732 w=361 h=53,比例按钮 x=760 y=740.5 w=36 h=36。Chrome 复测点击比例按钮后菜单 x=638 y=550.5 w=280 h=182、网格 x=651 y=583.5 w=254 h=136、选项坐标/尺寸与竞品一致;点击 9:16 后菜单保持打开,9:16 白字 white/8,主区角标更新为 导演台 1 · 导演视角 · 9:16
  • 竞品导演台截图复测: 在画幅菜单打开态点击底部 截图 x=804 y=740.5 w=36 h=36 后,比例菜单立即关闭,画布节点/连线数量保持不变;约 1.2s 内按钮和 toast 显示 正在上传截图...,toast 位于顶部 x=663.5 y=32 w=185.1 h=40.4,蓝色半透明背景。等待约 8s 后上传态消失,工具条按钮恢复 截图,仍不向主画布新增节点/连线;导演台左侧场景树新增 机位2,右侧从 3D场景 切为 摄像机,显示 属性 / 摄像机截图 / FOV 50° / 名称 / 切换机位 / 机位1 / 机位2 / 位置 / 注视目标 / 手动坐标 / 角色A / 注视坐标 / 视野角度 (FOV) / 相机截图 / 机位2-shot-01。右侧面板仍为 x=1231 y=64 w=281 h=741,相机截图 标题约 x=1248 y=823,截图缩略图约 80 × 80、起点约 x=1248 y=858
  • 本地导演台截图最终对齐: 原先本地 截图 只弹 截图待接入,不会改变导演台内部结构;现点击后关闭比例菜单,按钮进入 正在上传截图... spinner/禁用态,节点/连线数量保持不变。Chrome 干净路径复测 添加节点 -> 导演台 NEW -> 打开导演台 -> 打开画幅菜单 -> 截图: 上传中阶段 ratioMenuOpen=false、nodes=0、edges=0、按钮 aria/title=正在上传截图...;完成后左栏新增 机位2,右栏 x=1231 y=64 w=281 h=741 切为 摄像机,文案顺序与竞品一致,相机截图 标题 x=1248 y=823,截图卡片 机位2-shot-01 x=1248 y=849 w=248 h=92,卡片内缩略图起点约 y=857,工具条恢复 截图 x=804 y=740.5 w=36 h=36
  • 竞品导演台 AI 识图导入复测: 点击底部 AI 识图导入 x=848 y=740.5 w=36 h=36 后,打开遮罩模态,外层 bg-black/35 + backdrop blur,主体 x=436 y=117 w=640 h=571、背景 rgb(31,31,31)、圆角 12px、边框 white/10;标题 AI 识图导入,tab 为 本地上传 x=453 y=182、历史记录 x=529 y=182。默认上传区 x=453 y=216 w=606 h=298,文案 点击上传图片或拖拽本地图片至此上传 / 上传后画布将新建一个图片节点并自动替换当前图源;覆盖选项 插入当前导演台 x=453 y=556 w=299 h=53 默认选中,覆盖当前导演台 x=760 y=556 w=299 h=53;底部提示 退出不会中断生成过程,全景图生成成功后,会自动加载到背景,按钮 识图导入场景 x=957 y=642 w=102 h=32 初始禁用
  • 竞品导演台 AI 识图历史与完成态复测: 切到 历史记录 后显示日期 2026-07-09 和 8 张图片历史,4 列两行,缩略图 138 × 138,首行 x=462/612/762/912 y=257,使用 按钮 x=512/662/812/962 y=312 w=38 h=28;点击第一张 使用 后不关闭弹层、不新增主画布节点/连线,上传区变为预览图 x=454 y=217 w=604 h=296,文案 更换图片,底部出现消耗 6,按钮启用。点击 识图导入场景 后顶部额度 20 -> 14,tab 禁用,按钮变 识图中…,约 25s 后弹层自动关闭,主画布节点/连线仍为 20/10,导演台内部左栏变为 道具1-7 / 机位1 / 机位2 / 机位3 / 角色A / 角色B,右栏回到 3D场景 参数面板
  • 本地导演台 AI 识图导入最终对齐: 原先本地 AI 识图导入 只弹 AI 识图导入待接入 toast;现补齐竞品式 640 × 571 模态、上传/历史 tab、8 张历史图、使用后大预览、插入/覆盖选项、消耗 6、识图中… pending 和完成导入。Chrome 干净路径复测 添加节点 -> 导演台 NEW -> 打开导演台 -> AI 识图导入 -> 历史记录 -> 使用第一张 -> 识图导入场景: 预览 x=454 y=217 w=604 h=296,按钮启用 x=957 y=642 w=102 h=32;运行中按钮禁用并显示 识图中…,tab 禁用,节点/边保持 0/0;约 24s 后弹层关闭,左栏 x=0 y=64 w=230 h=741 显示 道具1-7 / 机位1 / 机位2 / 机位3 / 角色A / 角色B,右栏 x=1231 y=64 w=281 h=741 回到 3D场景,无主画布新增节点/连线
  • 竞品导演台添加机位复测: 在 AI 识图导入后的导演台状态点击底部 添加机位 x=716 y=740.5 w=36 h=36,不会立即新增机位,而是在按钮上方打开 选择机位视角 预设菜单;菜单外壳 x=614 y=415 w=240 h=318,背景 rgba(31,31,31,0.72)、边框 white/12、圆角 12px,标题 x=621 y=422 w=226 h=24,滚动区 x=621 y=446 h=280。预设为 2 列 110 × 72,顺序为 当前视角 / 正面中景 / 正面特写 / 正面全景 / 侧面跟拍 / 侧面近景 / 背面中景 / 俯拍全景 / 45° 俯拍 / 低角度仰拍 / 低角度广角 / 过肩镜头 / 过肩镜头(右) / 鸟瞰 / 荷兰角
  • 竞品导演台添加机位完成态复测: 点击 当前视角 x=621 y=446 w=110 h=72 后菜单关闭,不新增主画布节点/连线;导演台左栏在 机位3 和 角色A 之间新增并选中 机位4,行坐标 x=12 y=498 w=205 h=32,角色行下移到 角色A y=530 / 角色B y=562;右栏切到 摄像机,名称输入和 切换机位 下拉均为 机位4,下拉选项含 机位1-4,位置为 X 0 / Y 2.2 / Z 10,注视目标为 手动坐标,注视坐标为 X 0 / Y 1.2 / Z 0,FOV 为 50.0
  • 本地导演台添加机位最终对齐: 原先本地 添加机位 只弹 添加机位待接入。 toast;现改为竞品式预设菜单,Chrome 复测菜单标题 x=621 y=422 w=226 h=24、首屏按钮 当前视角 x=621 y=446 w=110 h=72、正面中景 x=737 y=446 w=110 h=72,并补齐 15 个预设。选择 当前视角 后菜单关闭、主画布节点/边保持 2/0,左栏从 道具1-7 / 机位1-3 / 角色A/B 变为 道具1-7 / 机位1-4 / 角色A/B,机位4 行 x=12 y=498 w=197 h=32、文本 x=52 y=508,右栏 摄像机 打开,名称输入 value=机位4 x=1248 y=384 w=248 h=28,切换机位下拉 value=机位4 x=1248 y=456 w=248 h=28,位置和注视坐标与竞品一致
  • 竞品导演台切换机位下拉复测: 在右侧 摄像机 面板中,下拉共有 2 个 select,首个为 切换机位 x=1248 y=457 w=248 h=28;从 机位2 选择 机位4 后不弹专属 toast、不改 URL,名称输入同步为 机位4 x=1248 y=385 w=248 h=28,下拉选中 机位4,位置仍为 0 / 2.2 / 10、注视目标仍为 手动坐标、注视坐标 0 / 1.2 / 0、FOV 50.0;左侧 机位4 x=12 y=498 w=205 h=32 变选中,选中行 class 为 after:top-1/2 after:h-6 after:-translate-y-1/2 after:rounded after:bg-white/8
  • 本地导演台切换机位下拉最终对齐: 原先本地右侧下拉联动已能改名称/选中值,但左侧场景树选中态是整行 after:inset-0 bg-white/10 rounded-lg;现改为竞品式 24px 中间高亮条。Chrome 复测本地先清空场景搜索、添加 机位2 后,右侧 切换机位 x=1248 y=456 w=248 h=28 从 机位2 切回 机位1 再切到 机位2,名称输入和下拉值同步、位置/注视/FOV 保持默认、无新增主画布节点/边、无切换 toast;左侧高亮在 机位1/机位2 间移动,active class 为 after:top-1/2 after:h-6 after:-translate-y-1/2 after:rounded after:bg-white/8 hover:after:bg-white/8
  • 竞品导演台 FOV 控件复测: 在右侧 摄像机 面板中,预览框 x=1248 y=185 w=240 h=135、左上标签 FOV 50° x=1261 y=198 h=13;视野角度 (FOV) 标题 x=1248 y=735.5,隐藏 range 点击层 x=1248 y=766 w=170 h=20 min=15 max=90 step=1 value=50,数值输入 x=1426 y=762 w=70 h=28 value=50.0。输入 64.0 后 range value 同步 64、数值框保持 64.0、预览标签同步 FOV 64°,不改 URL
  • 本地导演台 FOV 控件最终对齐: 原先本地摄像机预览框为 248 × 134、FOV 标签行高偏高,range 为原生 x=1248 y=774 w=180 h=6 min=20 max=100,数值框 x=1440 y=761 w=56 h=32;现改为竞品式 240 × 135 预览、leading-none text-white/55 标签、自绘轨道 + 透明 range 点击层,FOV 范围限制为 15-90。Chrome 复测本地 range x=1248 y=766 w=170 h=20 min=15 max=90 step=1、数值框 x=1426 y=762 w=70 h=28;输入 64.0 后 range value 为 64,数值框为 64.0,预览同步 FOV 64°
  • 竞品导演台摄像机预览按钮复测: 右侧摄像机预览框右下按钮 x=1451 y=283 w=24 h=24,title 为 切换到机位视角,class 为 absolute bottom-3 right-3 flex size-6 ... rounded-lg bg-white/10 text-white/85 hover:bg-white/16。点击后不改 URL、不切右侧面板、不弹专属 toast,顶部 机位视角 x=764.7 y=15.5 w=80 h=32 变 active,导演视角 变 inactive
  • 本地导演台摄像机预览按钮最终对齐: 原先本地按钮位于 x=1455 y=287、无 title、点击只保留 hover 样式且不切视角;现改为 bottom-3 right-3、title 切换到机位视角 并接入 setViewMode("camera")。Chrome 复测本地按钮 x=1451 y=283 w=24 h=24,点击后顶部 机位视角 active、右侧仍为 摄像机、URL 不变、无新增 toast,主区角标同步为 导演台 1 · 机位视角 · 16:9
  • 竞品导演台摄像机截图 tab 复测: 在右侧 摄像机 面板点击 摄像机截图 x=1306 y=128 w=89 h=28 后,URL 不变,属性 tab 变 inactive hover:bg-white/6 text-white/45 hover:text-white/75,摄像机截图 变 active bg-white/10 text-neutral-50,属性表单消失且 visibleInputs=0。内容区从 x=1232 y=169 w=280 h=636 开始,画廊外壳 x=1232 y=169 w=280 h=563,分组 机位2截图 x=1248 y=181 w=248 h=28,三列网格 x=1248 y=213 w=248 h=102 grid-cols=80px 80px 80px gap=4,卡片 机位2-截图01 x=1248 y=213 w=80 h=102,标题 x=1248 y=297 w=80 h=18;底部 footer x=1232 y=732 w=280 h=73,按钮 全部清空 x=1248 y=749 w=120 h=40、发送到画布 x=1376 y=749 w=120 h=40
  • 本地导演台摄像机截图 tab 最终对齐: 原先本地 摄像机截图 是静态按钮,点击后仍停留在属性表单、输入框仍为 10、无底部 footer;现新增摄像机检查器 tab 状态,点击后切到独立画廊页,属性表单消失且 visibleInputs=0,tab 激活态、画廊外壳、分组标题、三列网格和 footer 坐标与竞品一致。Chrome 复测无截图时显示 机位1截图 + footer;再用底部 截图 中心点 x=822 y=759 触发上传,按钮进入 正在上传截图... 禁用态,完成后生成 机位2-shot-01,切入截图 tab 后显示 机位2截图、卡片 x=1248 y=213 w=80 h=102、标题 机位2-截图01 x=1248 y=297 w=80 h=18;全部清空 已接入清空本地截图列表,发送到画布 的落节点/连线行为需下一轮单独实测竞品后再接入
  • 竞品导演台截图发送到画布复测: 在右侧 摄像机截图 tab 中点击 发送到画布 x=1376 y=749 w=120 h=40 后,导演台弹层不关闭、右侧仍停留截图页、URL 不变、按钮不进入 pending、无可见 toast;主画布底层节点数 21 -> 22、边数 10 -> 11。新增节点为 react-flow__node-image,文本 导演台 12 机位2-shot-01,屏幕框 x=1107.5 y=406.8 w=260.1 h=462.2,反推世界尺寸 350 × 622、世界坐标 x=6662 y=-108;原导演台节点世界坐标为 x=6192 y=-108,所以发送算法是以导演台为 anchor 右移 470,并新增一条 导演台 -> 截图图片节点 的边,导演台节点保持 selected
  • 本地导演台截图发送到画布最终对齐: 原先本地 发送到画布 是空按钮;现父画布向导演台弹层传入发送回调,按竞品规则为每个当前机位截图创建 350 × 622 图片资源节点,标题为 ${导演台标题} ${原始截图名},位置为 director.x + 470 * index、director.y,并新增 director -> snapshot image 连线,同时保持导演台弹层打开且无 toast。Chrome 空画布复测 添加节点 -> 导演台 NEW -> 打开导演台 -> 截图 -> 摄像机截图 -> 发送到画布: 发送后弹层仍开、右侧仍为截图页、边数 0 -> 1、页面底层新增 导演台 1 机位2-shot-01;节点 DOM 为 x=1226 y=403 w=350 h=622,原导演台为 x=756 y=403 w=350 h=350,刚好右移 470
  • 竞品导演台截图全部清空复测: 在右侧 摄像机截图 tab 中首次点击 全部清空 x=1248 y=749 w=120 h=40 不会立刻删除,而是在按钮上方弹出确认浮层,浮层 x=1248 y=640.7 w=120 h=100.3,文案 确认清空所有截图?,按钮 取消 x=1260 y=701 w=44 h=28、红色 确认 x=1312 y=701 w=44 h=28;浮层打开时截图卡仍存在,发送到画布 仍可用。点击 确认 后浮层关闭,截图卡消失,内容区显示居中空态 暂无摄像机截图 x=1240 y=181 w=264 h=535;底部 全部清空 和 发送到画布 保留但 disabled,URL 不变,主画布已发送的 导演台 12 机位2-shot-01 节点和 11 条边不被删除
  • 本地导演台截图全部清空最终对齐: 原先本地点击 全部清空 会直接清空,清空后仍显示空分组标题 机位2截图 且两个 footer 按钮仍启用;现补齐竞品式确认浮层、空态和 disabled 规则。Chrome 复测本地 摄像机截图 空态显示 暂无摄像机截图,两个按钮 disabled;重新用底部 截图 生成 机位2-截图01 后,点击 全部清空 出现同款确认浮层 x=1248 y=642 w=120 h=99,取消/确认 按钮均为 44 × 28,确认前卡片保留;点击 确认 后显示 暂无摄像机截图,两个按钮 disabled,页面底层已发送到画布的 导演台 1 机位2-shot-01 和 1 条边保留
  • 竞品导演台添加角色复测: 在 道具1-7 / 机位1-4 / 角色A/B 且右侧为 摄像机 的状态点击底部 添加角色 x=628 y=740.5 w=36 h=36,不会立即新增角色,而是在按钮上方打开角色菜单;菜单外壳 x=619.5 y=312 w=148 h=420、背景 rgba(31,31,31,0.72)、边框 white/12、圆角 12px,按钮 x=624.5 w=138 h=32,顺序和 y 坐标为 本地上传 317 / 男性素体 362 / 女性素体 398 / 宽厚素体 434 / 健壮素体 470 / 纤细素体 506 / 少年素体 542 / 儿童素体 578 / 二头身 614 / 群众 (3x3) 650 / 几何模型 695,本地上传 与 群众 (3x3) 后有分隔线,群众 (3x3) 和 几何模型 带右箭头
  • 竞品导演台添加角色完成态复测: 点击 男性素体 后菜单关闭、不弹 toast、不新增主画布节点/连线;导演台左栏在 角色B 后新增并选中 角色C,行坐标 x=12 y=594 w=205 h=32、文本 x=52 y=604;主场景中模型变为绿色,标签变 角色C 并显示变换轴;右栏标题切为 角色,tab 为 属性 / 姿势,属性面板字段为 名称=角色C、位置 0/0/0、旋转 0/0/0、缩放 1.03/1.03/1.03、统一缩放 1.0、颜色 #34C759。反推命名规则为按现有 角色A/B/... 取下一个大写字母
  • 本地导演台添加角色最终对齐: 原先本地 添加角色 只弹 添加角色待接入。 toast;现补齐竞品式角色菜单和新增角色流程。Chrome 复测完整路径 导演台 NEW -> AI 识图导入 -> 添加机位 当前视角 -> 添加角色 -> 男性素体: 本地菜单外壳 x=619.5 y=312 w=148 h=420、按钮 x=624.5 w=138,各项 y 坐标 317/362/398/434/470/506/542/578/614/650/695 与竞品一致;选择 男性素体 后菜单关闭、无 toast、主画布节点/边保持 1/0,左栏新增选中 角色C x=12 y=594 w=205 h=32、文本 x=52 y=604,右栏切为 角色,名称输入 value=角色C x=1248 y=217 w=248 h=28,位置/旋转均为 0,缩放为 1.03,统一缩放 1.0,颜色 #34C759
  • 竞品导演台全景图菜单复测: 在导演台底部点击 全景图 x=672 y=740.5 w=36 h=36 后不弹 toast、不新增主画布节点/连线,而是在按钮上方打开 3 项菜单;菜单外壳 x=616 y=618.5 w=148 h=114、背景 rgba(31,31,31,0.72)、圆角 12px、z-index 300,按钮均为 x=621 w=138 h=32,顺序和 y 坐标为 本地上传 623.5 / 历史记录 659.5 / AI生成 695.5
  • 竞品导演台全景图历史记录与 AI生成复测: 点击全景图菜单 历史记录 后菜单关闭,打开既有 历史资产 大弹窗而非 选择图片,外壳 x=75.6 y=80 w=1360.8 h=645、背景 rgb(38,38,38)、圆角 16px,包含 历史资产 / 100% / 图片历史(8) / 视频历史(10) / 音频历史(6) / 时间降序 / 批量操作 / 2026-07-09 / 查看 / 使用 / 下载;点击 AI生成 后打开 640 × 448 小弹窗,外壳 x=436 y=178.5 w=640 h=448、遮罩 black/35,标题 AI生成,上传区 x=453 y=241.5 w=606 h=320,底部文案 退出不会中断生成,可在历史记录中查看结果,消耗 0,生成按钮 x=1031 y=579.5 w=28 h=28
  • 本地导演台全景图最终对齐: 原先本地 全景图 只弹 全景图待接入。 toast;现改为竞品式三项菜单,Chrome 复测菜单外壳 x=616 y=618.5 w=148 h=114,按钮 本地上传/历史记录/AI生成 坐标 x=621 y=623.5/659.5/695.5 w=138 h=32,无旧 toast。点击 历史记录 后本地打开 历史资产 面板 x=75.6 y=80 w=1360.8 h=645,含三类历史 tab、排序、批量操作和 查看/使用/下载;点击 AI生成 后本地弹窗 x=436 y=178.5 w=640 h=448,上传区 x=453 y=241.5 w=606 h=320,footer x=437 y=577.5 w=638 h=48,生成按钮 x=1031 y=579.5 w=28 h=28
  • 竞品添加音频节点复测: 先点空白清掉视频节点选中态,再点击 添加节点 -> 音频;节点数 12 -> 13、边数保持 10、viewport 保持 translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中 react-flow__node-audio,世界坐标仍是 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1,说明基础音频节点也是 350 × 350;节点正文为 音频节点 5 / 尝试: 音频生视频
  • 竞品音频节点语音面板复测: 选中音频节点后,节点下方出现 660 × 189 浮层,外壳 x=558.3 y=678.8;可见内容依次为 <#> 停顿、() 语气词、输入区 placeholder 输入要合成的文本、底部参数 Minimax-speech-2.8-hd / 少女音色 / 0/50000 / 1;面板内还包含折叠/裁切的高级项文本 基础调节 / 一键重置 / 语速 / 声调 / 音量 / 音色效果调节 / 音高 / 强度 / 音色调节 / 音效 / 无 / 空旷回音 / 礼堂广播 / 电话失真 / 电音
  • 本地添加音频节点最终对齐: 原先底部菜单创建音频会生成 436 × 470 节点,并按普通模块偏移落到屏幕右上 x=1243 y=-89;现基础 音频 节点改为 350 × 350,和文本/图片/视频一样按当前 viewport 中心左上角落点,无 toast、无新增边,音频卡片高度压到 350 内。Chrome 复测空画布 100% 下新增 音频节点 1 屏幕框 x=756 y=403 w=350 h=350,正文为 尝试: 音频生视频,选中后出现 660 × 189 语音合成浮层,文本为 <#> 停顿 () 语气词 输入要合成的文本 Minimax-speech-2.8-hd 少女音色 0/50000 1 基础调节 一键重置 语速 声调 音量 音色效果调节 音高 强度 音色调节 音效 无 空旷回音 礼堂广播 电话失真 电音
  • 竞品上传入口权限复测: 在当前竞品画布打开 添加节点 -> 上传 后 file chooser multiple=true;使用无敏感测试图 /tmp/codex-video-canvas-upload.png 调用 setFiles 仍返回 Not allowed / fileChooser.setFiles failed,节点数保持 93、边数保持 106、图片节点保持 33、选中 文本节点 2 不变、添加菜单不关闭且无 toast。按 Chrome 插件文档,继续真实上传落节点前需在 chrome://extensions -> Codex -> Details 开启 Allow access to file URLs
  • 竞品音频语音面板深测: 在添加菜单中再次点击 音频,节点数 93 -> 94、音频节点数 6 -> 7、边数保持 106,新增并选中 音频节点 13;因竞品当前 viewport 为 10%,节点屏幕框为 x=756.3 y=402.8 w=35 h=35,语音面板外壳 x=443.8 y=439.4 w=660 h=189。面板右上有 28 × 28 展开按钮,底栏为 Minimax-speech-2.8-hd x=452.3 w=200.7、少女音色 x=756.9 w=110、翻译图标 x=874.9 w=32、设置图标 x=918.9 w=32、0/50000、闪电费用 1、白色圆形生成按钮 x=1063.3 w=32。点击设置图标后面板高度变 565.2,设置按钮 active,展开 基础调节 / 一键重置 / 语速 / 声调 / 音量 三条滑杆和 音色效果调节 / 音高 / 强度 / 音色调节 / 音效;点击右上展开后打开 black/50 遮罩和居中 800 × 600 modal x=356 y=102.5,modal 保留同一套参数控件
  • 竞品音频模型菜单深测: 在音频展开 modal 的设置态点击 Minimax-speech-2.8-hd,打开局部模型下拉 x=364.5 y=317.8 w=369 h=341,背景约 #333/95、z-index 700;选项顺序为 Seed Audio 1.0(多模态音频生成,支持人声、音效、音乐一体化创作)、Minimax-speech-2.8-hd(当前选中,文字转语音,多元的情绪渲染)、Minimax-speech-2.8-turbo(文字转语音,快速生成自然的音频效果)、Eleven V3(文字转语音,提供高质量、可定制的语音)、Eleven Music V3(智能音乐生成,高质量音乐生成)、Mureka V8(智能音乐生成,兼具多元风格)
  • 竞品音色选择弹窗深测: 点击底栏 少女音色 后打开高层 音色选择 modal,外壳 x=356 y=94.7 w=800 h=615.6,覆盖在音频 modal 上;顶部为标题和关闭按钮,tab 为 音色库 / 我的音色 / 收藏音色,右侧包含 克隆新音色、搜索框 placeholder 搜索音色库 和 筛选。列表行高约 64px,前几项为 青涩青年音色 / 精英青年音色 / 霸道青年音色 / 青年大学生音色 / 少女音色 / 御姐音色 / 成熟女性音色 / 甜美女性音色,副信息为 中文(普通话) 与性别,少女音色 显示 已选,其它显示 选择,行尾有收藏星标和 ...;分页 footer 为 1 2 3 4 5 ... 17 › 20条/页 跳至 页 共327条
  • 本地音频语音面板二次对齐: 原先本地只在 660 × 189 浮层中显示模型/音色/计数,右上没有展开按钮,底栏缺少翻译/设置/闪电/生成图标,高级参数只是 h-0 overflow-hidden 隐藏文本;现补齐竞品式右上展开、底栏图标和设置展开。Chrome 复测本地空画布 添加节点 -> 音频 后节点 350 × 350 落于 x=756 y=403,100% 视口下浮层按节点底部出现在 x=601 y=765 w=660 h=189;点击右上展开打开居中 800 × 600 modal x=356 y=102.5,点击设置图标后 modal 顶部编辑区压为 222px,底部显示 基础调节/一键重置/语速/声调/音量/音色效果调节/音高/强度/音色调节/音效/无/空旷回音/礼堂广播/电话失真/电音,坐标和层级与竞品展开态一致
  • 本地音频模型/音色菜单最终对齐: 原先本地没有模型下拉和音色库弹窗;现模型按钮补齐同款 6 项菜单、说明文案、当前选中态和 369 × 342 外壳,音色按钮补齐 800 × 616 的 音色选择 modal、三 tab、克隆/搜索/筛选、音色列表、已选态和分页 footer。Chrome 复测本地展开态中点击模型按钮可见 Seed Audio 1.0 / Minimax-speech-2.8-hd / Minimax-speech-2.8-turbo / Eleven V3 / Eleven Music V3 / Mureka V8,点击 少女音色 后弹窗外壳 x=356 y=94.5 w=800 h=616,内容包含 音色库 / 我的音色 / 收藏音色 / 克隆新音色 / 搜索音色库 / 筛选 / 青涩青年音色 / 少女音色 / 已选 / 20条/页 / 共 327 条
  • 竞品添加脚本菜单复测: 点击 添加节点 -> 脚本 主行不会落节点,节点数保持 13、边数保持 10、无 toast;主行保持高亮并展开右侧二级菜单,子菜单外壳 x=720.5 y=551.5 w=204 h=85,内部 x=728.5 y=551.5 w=196 h=85,两行分别是 脚本 NEW x=737 y=560 w=179 h=32、脚本(旧版) Beta x=737 y=596 w=179 h=32
  • 竞品添加脚本 NEW 节点复测: 点击二级菜单 脚本 NEW 后,节点数 13 -> 14、边数保持 10、viewport 保持 translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中 react-flow__node-script-v2,世界坐标仍是 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1,说明现代脚本节点也是 350 × 350;节点标题为 脚本生成器,正文为 尝试: 剧本生成分镜脚本 角色生成分镜脚本 自己编写分镜脚本
  • 本地添加脚本 NEW 节点最终对齐: 原先点击脚本主行会直接创建旧版 脚本 1,尺寸 438 × 470,落点 x=1093 y=421,按钮为 剧本生成分镜脚本 / 视频参考生成分镜脚本 / 角色生成分镜脚本;现脚本主行只展开同款二级菜单,不新增节点、不弹 toast;点击 脚本 NEW 后新增 350 × 350 的 脚本生成器,按 viewport 中心左上角落点,无新增边、无 toast,正文改为 尝试: 剧本生成分镜脚本 角色生成分镜脚本 自己编写分镜脚本。Chrome 复测空画布 100% 下节点框 x=756 y=403 w=350 h=350
  • 竞品添加脚本(旧版)节点复测: 在已新增 脚本 NEW 后继续点击二级菜单 脚本(旧版) Beta,节点数 14 -> 15、边数保持 10、viewport 保持 translate(-3842.91px,487.096px) scale(0.743079)、无 toast;新增并选中 react-flow__node-script,世界坐标同样是 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1,说明旧版脚本节点也是 350 × 350;标题同为 脚本生成器,正文为 尝试: 剧本生成分镜脚本 视频参考生成分镜脚本 角色生成分镜脚本
  • 本地添加脚本(旧版)节点最终对齐: 原先点击旧版入口会生成 438 × 470 的 脚本 1,落点 x=1093 y=421,且按钮组被 NEW 节点逻辑误渲染为 剧本生成分镜脚本 / 角色生成分镜脚本 / 自己编写分镜脚本;现旧版入口生成 350 × 350 的 脚本生成器,按 viewport 中心左上角落点,无新增边、无 toast,正文为 尝试: 剧本生成分镜脚本 视频参考生成分镜脚本 角色生成分镜脚本。Chrome 复测空画布 100% 下节点框 x=756 y=403 w=350 h=350
  • 竞品添加资源-从生成历史选择复测: 点击 添加节点 -> 从生成历史选择 后不落节点、不弹 toast,节点数保持 15、边数保持 10,打开 选择图片 模态框,外壳 x=75.6 y=80 w=1360.8 h=645;一级 tab 为 LibTV / Lib生成器 / WebUI / ComfyUI / AI应用,右侧计数 已选 0/10 张;二级 tab 为 图片 / 视频 / 音频;图片卡为 6 列,首卡选中后左上出现蓝色勾,右下出现删除/预览图标,计数变 1/10,点击 确定 后模态框关闭、节点数 15 -> 16、边数保持 10、viewport 不变、无 toast;新增 react-flow__node-image,标题 图片节点 8,世界坐标 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=260.1
  • 本地添加资源-从生成历史选择最终对齐: 原先该入口打开 历史资产 管理面板,显示 图片历史/视频历史/音频历史 和 查看/使用/下载,单项 使用 会弹 已应用到画布 toast;现添加入口改为竞品同款 选择图片 多选模态框,外壳 x=75.6 y=80 w=1360.8 h=645,一级/二级 tab、已选 0/10 张、6 列卡片、选中蓝勾、右下图标、底部分页和 确定 行为对齐。Chrome 复测空画布选第一张后计数 1/10,点击 确定 静默生成 350 × 350 的 图片节点 1,节点框 x=756 y=403 w=350 h=350,无新增边、无 toast
  • 竞品添加资源-历史选择视频 tab 复测: 在同一模态点击 视频 后标题变 选择视频,计数仍为 已选 0/10 张;视频卡共 10 张,6 列布局,首行 x=100.6/320.7/540.9/761/981.1/1201.3 y=242 w=211.1 h=276,次行前 4 张 y=527;首卡选中后计数 已选 1/10 张,点击 确定 后模态关闭,节点数 16 -> 17、边数保持 10、viewport 不变、无 toast、无选中态;新增 react-flow__node-video,标题 视频节点 9,世界坐标 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=462.2 h=260.1,反推资源视频节点 622 × 350
  • 本地添加资源-历史选择视频 tab 最终对齐: 原先视频 tab 只有 1 张默认视频且计数写作 已选 0/10 个;现默认历史视频补齐为 10 张,计数统一为 张,布局为首行 6 张、次行 4 张。Chrome 复测本地空画布为 选择视频 / 已选 0/10 张,卡片坐标 x=99.6/319.7/539.9/760/980.1/1200.3 y=240、次行 y=524;首卡确认后静默生成 622 × 350 的 视频节点 1,节点框 x=756 y=403 w=622 h=350,无新增边、无 toast
  • 竞品添加资源-历史选择音频 tab 复测: 在同一模态点击 音频 后标题变 选择音频,计数仍为 已选 0/10 张;音频卡共 6 张,均为灰色底居中音符图标,无标题文字,首行坐标 x=100.6/320.7/540.9/761/981.1/1201.3 y=242 w=211.1 h=276;首卡选中后计数 已选 1/10 张,点击 确定 后模态关闭,节点数 17 -> 18、边数保持 10、viewport 不变、无 toast、无选中态;新增 react-flow__node-audio,标题 音频节点 10,世界坐标 translate(6192px,-108px),屏幕框约 x=758.2 y=406.8 w=260.1 h=110,反推历史音频资源节点约 350 × 148
  • 本地添加资源-历史选择音频 tab 最终对齐: 原先本地无默认音频历史素材,无法按竞品路径落音频资源节点;现默认音频历史补齐为 6 张灰色音符卡,计数统一为 张。Chrome 复测本地空画布为 选择音频 / 已选 0/10 张,卡片坐标 x=99.6/319.7/539.9/760/980.1/1200.3 y=240 w=212.1 h=276;首卡确认后静默生成 350 × 148 的 音频节点 1,节点框 x=756 y=403 w=350 h=148,无新增边、无 toast、无选中态

当前差距

  • 工具箱小面板、模板 hover 和 使用 落点主流程已像素级对齐;剩余差距是模板封面仍复用本地演示素材,缺少竞品真实模板市场封面、收藏/最近使用和后端模板库统计
  • 角色库主流程、筛选菜单、最近使用空态和应用 4 节点落点已对齐;剩余差距是本地仍使用 demo 角色素材,缺少竞品同量级真实角色资产库、真实最近使用记录和后端资产元数据
  • 素材库入口、风格库/特效库大浮层、搜索回车刷新、tab 空态、风格卡落节点和特效卡直接关闭行为已按本轮竞品实测对齐;剩余差距是本地仍使用演示缩略图和静态 mock 市场数据,缺少竞品真实素材市场封面、收藏状态、最近使用记录、搜索后端和风格/特效素材元数据
  • 历史记录主交互、单项查看全屏预览、列表单项下载水印规则、批量选择态、批量下载 pending 态和批量使用已具备,但数据源仍是当前画布图片/视频/音频节点聚合;竞品历史记录来自账号生成资产,后续需接入真实生成资产表、跨画布历史、下载文件命名、批量下载打包完成态和批量删除后端接口
  • 生成失败态: 本轮竞品当前项目和历史资产中没有真实失败任务样本,不能确认竞品 failed 节点是否使用 移除、重试 或其他操作;本地已验证接口失败时的 failed 节点、toast 和移除行为,后续拿到竞品真实失败样本后再做像素级对齐
  • 竞品已覆盖但本地仍需继续细测: 资源上传入口和 file chooser 行为已确认,但真实上传落节点被 Chrome 扩展 Allow access to file URLs 权限阻塞,需开启后继续;人声分离 -> 仅保留人声/背景音 已对齐菜单层级、处理中状态、toast、双节点落点、节点顺序和连线;智能擦除 已对齐成本、落节点、连线、pending 文案、取消确认和本地完成态;框选擦除 已完成浏览器端到端前端复测并对齐选区、历史、费用、生成 pending/完成态和参数写入逻辑;真实 volcano-subtitle-eraser 后端任务仍需接入;裁剪 已对齐前端裁剪态、进度态和落节点结果,但真实 FFmpeg/云存储上传服务仍需接入;高清 已对齐节点式创建和本地生成态,但真实后端高清服务仍需接入;本轮未发现竞品选中线重连手柄,暂不将重连作为已确认竞品能力
  • 故事脚本数量、字段、节点内表格、选中工具栏、全屏三步工作流、资产准备页、单镜 查看提示词 弹窗、批量分镜和批量生视频前端任务编排已按竞品当前项目对齐;剩余差距是真实模型生成质量、真实资产生成/覆盖逻辑、资产图片后端落库、真实 Seedance 视频任务提交/轮询/扣费和视频结果持久化