ai-chatbot/docs/video-canvas-shell-cleanup-upload-fix-2026-09-18.md

43 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 视频画布空壳清理与上传修复上线记录 — 2026-09-18
应用提交 `a4354dc5`,基于发布分支 `codex/video-groups-release-0918`(3002704d)。
## 空壳/演示功能清理
对照 liblib.tv 逐项核对后处理。此前已真实的链路(视频生成四通道、视频剪辑/裁剪/抽帧/慢放/音视频分离 ffmpeg、P40 高清、智能剪辑、提示词优化/翻译、故事脚本/视频解析分析、模型选择按能力过滤、历史记录真实画布数据)保持不变,本次处理残余空壳:
- 删除从未渲染的装饰性场景组件(StoryScriptScene / FirstFrameVideoScene / AudioToVideoScene / CharacterThreeViewScene 及其面板),以及 1200+ 行从未挂载的假导演台控制台 DirectorConsole3DDialog(假截图 6.5 秒定时器、假 AI 识图导入、假历史资产、无操作 AI 生成)。真实导演台为 DirectorStudioDialog,不受影响。
- 删除演示假数据常量(DEFAULT_*_HISTORY_NODES、DEMO 素材 URL 常量、PRESET_MEDIA_TOOLBAR_ITEMS)与不可达的“接口待接入”toast 回退;PresetComposerPanel / PromptComposer / AudioToVideoComposerPanel 的 onSubmit 改为必填,全部走真实生成/分析接口。
- 预设 starter 与工具箱模板不再预置“已生成”的假结果节点(此前用演示 OSS 素材冒充生成结果),统一为待生成状态。
- 图片工具动作(高清/扩图/九宫格/打光/全景/下载)在无真实素材时给出明确报错,不再回退演示图片。
- PromptComposer 选项应用后的误导提示“已应用,生成接口待接入”移除(生成接口为真实可用)。
- 保留的诚实降级:人声/背景音分离、视频字幕擦除在无专用模型时明确提示“尚未接通”,不做假结果。
## 上传两个线上问题修复
- 现象一:智能剪辑“上传视频”报 signal timed out。根因:`/api/canvas/media/upload` 前端超时仅 120 秒,大素材走慢速存储上传时超时中断。修复:客户端超时提升到 10 分钟(SmartEditDialog / SmartEditNode / 画布 uploadCanvasMediaFile),超时错误改为明确中文提示。
- 现象二:桌面拖拽素材到画布/对话框失败。修复:智能剪辑全屏对话框新增视频拖放区(此前拖到对话框被静默忽略);画布拖放在被对话框拦截、画布加载中、读不到文件时均给出明确 toast,不再静默失败。
- 服务端配套:nginx `ai-chatbot.conf` 的大文件上传正则块补充 `canvas/media/upload`(client_max_body_size 500M、client_body_timeout 300s、proxy_buffering off、600s 读写超时),备份为 conf.d/ai-chatbot.conf.bak-media-upload-*,nginx -t 通过后 reload。
- 服务器 tsconfig.json exclude 增加 `backups`,避免历史构建备份目录(backups/next-before-vip98k-0911)参与类型检查导致构建失败;这是服务器本地修改,不入库。
## 部署与验证
- TypeScript 检查、ultracite lint、本地 webpack 生产构建通过。
- 服务器 `git pull --ff-only` 到 `a4354dc5`;构建候选目录 `.next-media-fix-a4354dc5-20260918T180045`,候选端口 3138 冒烟(首页 200、/video-canvas 200、上传接口 401 登录保护)后切换 `.next` 软链并 `pm2 restart ai-chatbot`。
- 切换后:127.0.0.1:3125 首页 200、上传接口 401;公网 HTTPS 首页 200、/video-canvas 307(按未登录规则跳转)、上传接口 401。旧构建 `.next-media-audio-fe1c9b60-20260918T151731` 保留可回滚。
## 续更:人声/背景音分离接入远程 HTDemucs 服务
- 应用提交 `6ed8879b`。画布视频工具栏的"人声分离/背景音分离"此前误报"尚未接通",实际私有 FunASR/HTDemucs 音频服务已在生产配置(SMART_EDIT_AUDIO_URL,健康检查 separation: true)。
- 新增 `/api/canvas/audio-separate`:下载画布素材 → ffprobe 校验 → ffmpeg 抽取 44.1k WAV → 复用 remote-audio 远程分离任务(8 分钟轮询、失败可续查)→ 分离音轨上传存储并回传 URL;并发限制每用户单任务、全局 3 任务。
- 画布工具栏音频分离菜单改为三项:人声分离(仅人声音轨)、背景音分离(仅背景音轨)、音视频分离(音轨+无声视频,逻辑不变)。
- 部署:候选目录 `.next-voice-split-6ed8879b-20260918T181658` 冒烟通过后切换软链并重启 pm2;本地 3125 首页 200、公网 HTTPS 200、路由在登录保护下返回 401(中间件拦截符合预期)。
## 续更 2026-09-19:画布快捷键体系、撤销/重做与服务器实测
- `8b2955eb`:快照式撤销/重做(⌘Z/⌘⇧Z,上限 50 步,忽略生成进度等易变字段);补齐全套快捷键(⌘D 复制、⌘Enter 生成所选、Tab 新建节点、⌘F 画布节点搜索面板、⌘0 适应画布、⌘± 缩放、V 拖动工具、H 抓手平移、G 成组);快捷键面板扩为四组全量清单。对比报告中的体验层缺口全部补齐。
- `1141ecc4`:修复 /api/canvas/audio-separate 的 ffmpeg 无界 apad(3 秒素材被无限填充成 22.9GB WAV 直至磁盘写满,即人声分离此前失败的真实根因);改为按探测时长截断。
- `ea4f34bf`:重新启用视频工具栏"高清"入口(P40 放大链路完整,此前入口被误禁用并标注未接通)。
- 生产构建 `.next-hd-entry-ea4f34bf-20260919T144427` 已切换并验证;清理了过期的 .next-* 构建目录(磁盘余量 25G)。
- 服务器实测(真实账号):登录、starter 工作流、添加节点、图片/视频拖入上传(比例自适应+完整显示)、撤销/重做、⌘D/Tab/⌘F/⌘0/L/G 快捷键、剪辑 trim、音视频分离、抽帧、人声分离(HTDemucs 端到端)、生成历史真实数据、快捷键面板、刷新持久化——全部通过。未测:付费视频生成(避免消耗)、故事脚本 LLM 实际调用(UI 链路已验证)。