fix(#584): 修复智能匹配模式向后兼容 - _select_assets_from_library恢复简单排序 #762

Merged
xiaoxia merged 1 commits from fix/smart-asset-selector-backward-compat into develop 2026-07-23 18:16:03 +08:00
Owner

问题

#751 引入 SmartAssetSelector 后,直接替换了 _select_assets_from_library 中的 smart 模式实现,导致原有行为不兼容:

  1. 最低质量分过滤:SmartAssetSelector 默认过滤低于30分的素材,旧 smart 模式只排序不过滤
  2. null quality_score 处理:旧逻辑当 0 分排最后,新逻辑当 0.5 归一化分
  3. 时长 tiebreaker 变化:旧逻辑时长越长越靠前,新逻辑有最优时长区间

修复

_select_assets_from_library 的 smart 模式恢复为简单的 quality_score 降序 + 时长降序排序,保持 API 层向后兼容。

SmartAssetSelector 服务和 28 个单测继续保留,作为独立能力供 AI 推荐、自动剪辑等高级场景使用。

验证

  • test_asset_select_mode.py 15个单测全过(修复前5个失败)
  • test_smart_asset_selector.py 28个单测全过(未受影响)
  • 全量单测 4289 passed
## 问题 #751 引入 SmartAssetSelector 后,直接替换了 `_select_assets_from_library` 中的 smart 模式实现,导致原有行为不兼容: 1. **最低质量分过滤**:SmartAssetSelector 默认过滤低于30分的素材,旧 smart 模式只排序不过滤 2. **null quality_score 处理**:旧逻辑当 0 分排最后,新逻辑当 0.5 归一化分 3. **时长 tiebreaker 变化**:旧逻辑时长越长越靠前,新逻辑有最优时长区间 ## 修复 `_select_assets_from_library` 的 smart 模式恢复为简单的 quality_score 降序 + 时长降序排序,保持 API 层向后兼容。 SmartAssetSelector 服务和 28 个单测继续保留,作为独立能力供 AI 推荐、自动剪辑等高级场景使用。 ## 验证 - `test_asset_select_mode.py` 15个单测全过(修复前5个失败) - `test_smart_asset_selector.py` 28个单测全过(未受影响) - 全量单测 4289 passed
xiaoxia added 1 commit 2026-07-23 18:11:57 +08:00
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 / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m51s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
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
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
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
5a9b6d9890
#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个失败的单测。
xiaoxia merged commit f9f7eae37d into develop 2026-07-23 18:16:03 +08:00
xiaoxia deleted branch fix/smart-asset-selector-backward-compat 2026-07-23 18:16:03 +08:00

🗑️ 预览环境已清理

PR #762 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #762 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Collaborator

代码审查结果 - PR #762

⚠️ 问题(1个需要修改)

  1. apps/api/app/api/routes/generation_tasks.py 第133行count 参数未进行非空校验直接比较,存在 TypeError 隐患。如果 countNone(Python函数默认参数常见值),执行 count > 0 会抛出异常。建议修改为 if count and count > 0: 或确保调用处 count 默认值为 0

💡 建议(1个可选)

  1. 逻辑变更确认:代码移除了旧逻辑中的 ensure_diversity=True(多样性保证),改为简单的双维度排序。虽然注释说明了原因,但需确认业务上是否允许“智能匹配”模式下不再保证素材的多样性(例如:不再避免选出时长完全相同的Top N素材)。

格式检查通过 | 逻辑审查需修改 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 10:16:31 | 模型:

## 代码审查结果 - PR #762 ### ⚠️ 问题(1个需要修改) 1. **apps/api/app/api/routes/generation_tasks.py 第133行**:`count` 参数未进行非空校验直接比较,存在 `TypeError` 隐患。如果 `count` 为 `None`(Python函数默认参数常见值),执行 `count > 0` 会抛出异常。建议修改为 `if count and count > 0:` 或确保调用处 `count` 默认值为 `0`。 ### 💡 建议(1个可选) 1. **逻辑变更确认**:代码移除了旧逻辑中的 `ensure_diversity=True`(多样性保证),改为简单的双维度排序。虽然注释说明了原因,但需确认业务上是否允许“智能匹配”模式下不再保证素材的多样性(例如:不再避免选出时长完全相同的Top N素材)。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-23 10:16:31 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Sign in to join this conversation.