# 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」)。