fix(editor): 响应AI Review;默认时长提为模块常量;list_clips显式List类型标注
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2m22s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m42s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 3m59s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m52s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 4m49s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m34s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 5m21s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 6m1s
AI Code Review / AI Code Review (pull_request) Successful in 7m33s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 19m42s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 17m20s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 8m25s
CI/CD Pipeline / CI Gate (pull_request) Successful in 29s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 4m9s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 8m53s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 496h59m44s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 496h59m45s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 496h59m46s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 496h59m46s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 497h17m8s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 496h59m47s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 497h19m28s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 497h17m6s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 497h19m28s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 497h19m30s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 497h19m33s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 497h19m33s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 497h33m42s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 497h51m6s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 497h53m26s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 497h53m30s

This commit is contained in:
CI Bot
2026-08-26 22:06:17 +08:00
parent dc3ce8f114
commit 46fc84902e
@@ -46,6 +46,9 @@ from .schemas import (
logger = logging.getLogger(__name__)
router = APIRouter(tags=["Template Editor"])
# 编辑器默认片段时长(秒)
_DEFAULT_EDITOR_CLIP_DURATION = 5.0
def _clip_to_response(clip, asset_url: str | None = None) -> EditorClipResponse:
"""统一构造片段响应 — 与 edit_plan_clips 表字段完全对齐"""
@@ -368,8 +371,7 @@ def create_clips_from_assets_editor(
"""
_, plan_svc = services
_DEFAULT_CLIP_DURATION = 5.0
required_count = body.required_clips_count if body.required_clips_count else len(body.asset_ids)
required_count = body.required_clips_count if body.required_clips_count is not None else len(body.asset_ids)
# 去重后批量获取素材实际时长,避免重复查询
unique_asset_ids = list(dict.fromkeys(body.asset_ids))
@@ -380,8 +382,9 @@ def create_clips_from_assets_editor(
asset_durations[asset_id] = float(asset.duration or 0.0)
# 计算追加起始 order:当前 plan 已有片段的最大 order + 1
existing_clips = plan_svc.list_clips(plan_id)
next_order = max((c.order for c in existing_clips), default=-1) + 1
# list_clips 返回 List[EditPlanClip]
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]]] = {}
clips = []
@@ -393,9 +396,9 @@ def create_clips_from_assets_editor(
# 素材时长不足时缩短 clip duration
asset_total = asset_durations.get(asset_id, 0.0)
if asset_total > 0:
clip_duration = min(_DEFAULT_CLIP_DURATION, asset_total)
clip_duration = min(_DEFAULT_EDITOR_CLIP_DURATION, asset_total)
else:
clip_duration = _DEFAULT_CLIP_DURATION
clip_duration = _DEFAULT_EDITOR_CLIP_DURATION
# 计算随机 start_time,避开已使用的时间段
start_time = _calc_random_start_time(asset_id, clip_duration, asset_durations, used_segments)