diff --git a/apps/web/src/test/pages/generate/smart-match-pool.test.ts b/apps/web/src/test/pages/generate/smart-match-pool.test.ts index a5b12d9c3..e0a74b532 100644 --- a/apps/web/src/test/pages/generate/smart-match-pool.test.ts +++ b/apps/web/src/test/pages/generate/smart-match-pool.test.ts @@ -1,40 +1,33 @@ /** - * 智能匹配候选池数量规则单测(#1744/#1750) + * 智能匹配候选池数量规则单测(#1744/#1750/#1899) * - * #1750 基线:模板只有片段数/结构、没有时长概念——候选池纯按「片段数 × 3」 - * (每个片段至少 3 个候选供变体间洗牌避让),不再参考任何 duration 字段; - * 结果钳制到 [1, 200](后端 limit 上限 200);无片段信息时兜底 30。 + * #1899 简化后:候选池 = 片段数(clipCount) × 3 + * 结果钳制到 [1, 200](后端 limit 上限 200);clipCount <= 0 时兜底 30。 */ import { describe, it, expect } from "vitest" -import { computeLimitFromSegments } from "@/pages/generate/hooks/step2-materials/useSmartMatch" -import type { TemplateSegment } from "@/api/templates/types" +import { computeLimitFromClipCount } from "@/pages/generate/hooks/step2-materials/useSmartMatch" -function segs(n: number): TemplateSegment[] { - // 新规则只看片段数量,duration 字段已废弃,这里不再构造 - return Array.from({ length: n }, () => ({}) as TemplateSegment) -} - -describe("computeLimitFromSegments (#1750 候选池 = 片段数×3)", () => { - it("无 segments 时返回兜底 30", () => { - expect(computeLimitFromSegments(undefined)).toBe(30) - expect(computeLimitFromSegments([])).toBe(30) +describe("computeLimitFromClipCount (#1899 候选池 = 片段数×3)", () => { + it("clipCount <= 0 时返回兜底 30", () => { + expect(computeLimitFromClipCount(0)).toBe(30) + expect(computeLimitFromClipCount(-1)).toBe(30) }) - it("候选池 = 片段数 × 3(与任何时长字段无关)", () => { - expect(computeLimitFromSegments(segs(1))).toBe(3) - expect(computeLimitFromSegments(segs(3))).toBe(9) - expect(computeLimitFromSegments(segs(5))).toBe(15) - expect(computeLimitFromSegments(segs(10))).toBe(30) + it("候选池 = 片段数 × 3", () => { + expect(computeLimitFromClipCount(1)).toBe(3) + expect(computeLimitFromClipCount(3)).toBe(9) + expect(computeLimitFromClipCount(5)).toBe(15) + expect(computeLimitFromClipCount(10)).toBe(30) }) it("超过上限钳制为 200(后端 limit 上限)", () => { - expect(computeLimitFromSegments(segs(67))).toBe(200) // 67×3=201 → 200 - expect(computeLimitFromSegments(segs(100))).toBe(200) // 100×3=300 → 200 + expect(computeLimitFromClipCount(67)).toBe(200) // 67×3=201 → 200 + expect(computeLimitFromClipCount(100)).toBe(200) // 100×3=300 → 200 }) - it("任何正常片段数下 limit 均 ≥ 1", () => { - for (let n = 0; n <= 10; n++) { - expect(computeLimitFromSegments(segs(n))).toBeGreaterThanOrEqual(1) + it("任何正数片段数下 limit 均 ≥ 1", () => { + for (let n = 1; n <= 10; n++) { + expect(computeLimitFromClipCount(n)).toBeGreaterThanOrEqual(1) } }) })