fix: 批量进度只统计无字幕视频,SKIPPED 不计入 total/done

用户反馈数量展示错误:整批 431 个视频中 383 个已有字幕被 SKIPPED,
此前 total=全部视频、done 也含 SKIPPED,把已处理过的视频混进计数。

新口径(2026-09):
- total = 创建时扫描出的无字幕(需处理)视频数,创建即固定;SKIPPED 不计
- done = 实际处理完成(COMPLETED)数,SKIPPED 不计;failed 单独计
- 全部视频都有字幕(total=0)→ 创建即视为 COMPLETED,不排队空跑
- sync_batch_job_progress 同步修正 total(老任务读取时自动收敛到新口径)
- 前端 batchProgress 相应更新:total=0 显示"无待处理视频"

tests: 更新 4 条旧口径断言 + 新增 1 条全跳过 API 测试,62 项相关测试通过。
This commit is contained in:
2026-09-06 17:25:01 +08:00
parent 52512c26e5
commit 44a607b636
5 changed files with 109 additions and 43 deletions
+5 -2
View File
@@ -54,12 +54,15 @@ async function createBatchJob() {
await loadBatchJobs();
}
// 渲染单个任务的进度:已完成/跳过与失败计入不同颜色,总数为任务视频数。
// 渲染单个任务的进度:total=本批无字幕(需处理)的视频数,done=实际处理
// 完成的视频数。SKIPPED(已有字幕)不参与 total/done——进度只反映真正
// 待处理的这批(2026-09 口径调整)。失败视频单独红字提示。
function batchProgress(job) {
const total = job.total || 0;
const done = job.done || 0;
const failed = job.failed || 0;
if (!total) return "待扫描";
// total=0:本批没有需要处理的视频(全部已有字幕被跳过),视为无处理量。
if (!total) return "无待处理视频";
const percent = Math.round(((done + failed) / total) * 100);
// 有失败视频时追加红色失败计数,避免把"部分失败"误看成全部完成。
const failedText = failed > 0 ? ` <span class="danger">,失败 ${failed}</span>` : "";