fix: 片段去重从已有片段构建used_segments,实现跨任务去重
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1m4s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m44s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m1s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m28s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m46s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m32s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m42s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m58s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 8m41s
AI Code Review / AI Code Review (pull_request) Successful in 7m37s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 5m40s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 6m54s
CI/CD Pipeline / CI Gate (pull_request) Successful in 28s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 2m32s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 3m18s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 480h6m56s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 480h6m58s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 480h7m0s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 480h7m23s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 480h7m25s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 480h11m15s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 480h11m17s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 480h11m19s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 480h18m41s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 480h19m30s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 480h18m57s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 480h21m55s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 480h21m59s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 480h41m24s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 480h53m27s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 480h55m56s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1m4s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m44s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m1s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m28s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m46s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m32s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m42s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m58s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 8m41s
AI Code Review / AI Code Review (pull_request) Successful in 7m37s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 5m40s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 6m54s
CI/CD Pipeline / CI Gate (pull_request) Successful in 28s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 2m32s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 3m18s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 480h6m56s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 480h6m58s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 480h7m0s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 480h7m23s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 480h7m25s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 480h11m15s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 480h11m17s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 480h11m19s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 480h18m41s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 480h19m30s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 480h18m57s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 480h21m55s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 480h21m59s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 480h41m24s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 480h53m27s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 480h55m56s
问题:create_clips_from_assets_editor 中 used_segments 每次调用初始化为空字典, 只跟踪当前API调用内创建的时间段,不避开之前任务已使用的时间段。 修复:在初始化 used_segments 后,遍历 existing_clips_list(已通过 list_clips 获取), 将已有片段的 asset_id/start_time/duration 填充到 used_segments, 使 _calc_random_start_time 能避开所有已使用的时间区间。 新增测试:TestCrossTaskSegmentDedup(4个用例),验证: - 已有片段的时间段被正确纳入去重 - 多个已有片段都被收集 - 没有 asset_id 的片段被忽略 - 没有已有片段时行为不变
This commit is contained in:
@@ -386,7 +386,14 @@ def create_clips_from_assets_editor(
|
||||
existing_clips_list = plan_svc.list_clips(plan_id)
|
||||
next_order = max((c.order for c in existing_clips_list), default=-1) + 1
|
||||
|
||||
# 从已有片段中构建已使用时间段,避免跨任务重复使用同一段素材区域
|
||||
used_segments: dict[str, list[tuple[float, float]]] = {}
|
||||
for _clip in existing_clips_list:
|
||||
if _clip.asset_id and _clip.start_time is not None and _clip.duration is not None:
|
||||
used_segments.setdefault(_clip.asset_id, []).append(
|
||||
(float(_clip.start_time), float(_clip.start_time) + float(_clip.duration))
|
||||
)
|
||||
|
||||
clips = []
|
||||
|
||||
for i in range(required_count):
|
||||
|
||||
Reference in New Issue
Block a user