h3-console-reliability-and-ux-fixes.md 2.36 KB

h3-console:可靠性修复 + 常用功能补齐

完成时间:2026-08-20,部署上线之后的一系列迭代(均已部署并验证)。

可靠性修复

  • 任务卡在假"运行中":所在后端进程被重启(弹性调度器 flip 分区)后,gateway 会 404, 但 console 原来遇到非 200 一律静默跳过、保留上次已知状态,导致 status 永远停在 running。改成 404 时直接判 failed 并写清原因。
  • 并发提交竞态:create_video() 首次提交、轮询时顺手提交、后台对账循环每 5 秒扫描, 三条路都可能在同一个任务还没拿到 gateway_id 的窗口里并发提交给 gateway,导致同一条 任务在两张卡上各烧一遍 GPU。加了进程内的提交占坑集合堵住这个窗口。
  • api.py 任务记录改成落盘:原来只在内存里,弹性调度器 kill+restart 某张卡是常规操作 (不是稀有事件),进程重启就把内存里的任务记录清空。改成每次状态变化都往 sqlite 写一份, 进程重启后能读回来。
  • 下载文件名统一叫 file.mp4:下载接口没设 Content-Disposition,浏览器只能从 URL (以 /file 结尾,没扩展名)猜文件名。加上 filename="h3-{任务id}.mp4"。

常用功能

  • 重跑按钮:详情页加「重跑」,把当初的参数/上传素材灌回新建任务表单,用户确认无误后 自己点提交——不是静默后台重新提交(第一版是静默提交,用户反馈后改成回填表单)。
  • 软删除/回收站:任务列表加「⋯」菜单删除、左下角加回收站入口带恢复,不碰 gateway/api.py 上的任务本身。
  • 后端状态行补上 running/queued:之前明明有任务在跑也只显示 ok,看不出哪张卡忙。
  • frames 上限改按 rows(分辨率×帧数)动态判定:原来硬编码 124,跟分辨率无关一刀切, 改成按显存安全线动态判定,448×256/576×320 这些低分辨率档能跑到 362 帧(15秒)。
  • 任务详情页加显式"时长"字段:原来只显示帧数,用户得自己心算除以 24fps。

完整排查过程和实测数据见顶层 CHANGELOG.md 对应日期的各节(标题里能直接搜到,比如 「修复 console 任务提交竞态」「api.py 任务记录改成落盘」「下载文件名统一叫 file.mp4」)。