fix(#584): 修复智能匹配模式向后兼容问题 - _select_assets_from_library的smart模式恢复简单排序
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 16s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 29s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 25s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m50s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m51s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m16s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 24s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 52s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 7s
AI Code Review / AI Code Review (pull_request) Successful in 2m40s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 4m53s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 4m27s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 5m39s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 14m26s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1317h13m34s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1317h13m38s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1317h13m40s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1317h13m50s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1317h13m42s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1317h13m52s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 1317h13m56s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1317h15m7s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1317h15m9s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1317h47m29s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1317h46m15s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1317h45m57s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1317h46m5s

#751引入SmartAssetSelector后破坏了_select_assets_from_library的smart模式原有行为:
- 新增最低质量分过滤(旧逻辑只排序不过滤)
- null quality_score处理逻辑变化(旧逻辑当0分,新逻辑当0.5分)
- 时长tiebreaker变化(旧逻辑时长越长越靠前,新逻辑有最优区间)

修复:_select_assets_from_library恢复quality_score+时长的简单排序,
保持API层smart模式的向后兼容。SmartAssetSelector作为独立服务
继续存在,供AI推荐、自动剪辑等需要4维评分的高级场景使用。

修复tests/unit/test_asset_select_mode.py中5个失败的单测。
This commit is contained in:
CI Bot
2026-07-23 18:11:31 +08:00
parent 27cb7381ad
commit 5a9b6d9890
+13 -4
View File
@@ -124,10 +124,19 @@ def _select_assets_from_library(
return [a.id for a in selected]
if mode == "smart":
# 智能匹配:多维度综合评分 + 时长多样性保证
selector = SmartAssetSelector()
result = selector.select(ready_video_assets, count=count, ensure_diversity=True)
return result.selected_ids
# 智能匹配:按质量分降序 + 时长降序作为tiebreaker
# 注意:这里使用简单的 quality_score 排序保持向后兼容
# 更复杂的4维评分+多样性策略由 SmartAssetSelector 服务提供(用于 AI 精选等场景)
scored_assets = sorted(
ready_video_assets,
key=lambda a: (
-(a.quality_score if a.quality_score is not None else 0.0),
-(getattr(a, "duration", 0.0) or 0.0),
),
)
if count > 0:
scored_assets = scored_assets[:count]
return [a.id for a in scored_assets]
# 默认 all 模式:返回全部 ready 视频素材
return [a.id for a in ready_video_assets]