chore: 删除素材选取 random 模式,保持代码干净 #1542

Merged
xiaoxia merged 2 commits from chore/remove-random-asset-mode into develop 2026-08-29 18:14:51 +08:00
Owner

改动说明

素材选取模式后端支持 all/random/smart 三种,但前端只用了 all 和 smart(smart 走独立接口 POST /assets/smart-match)。random 模式从未被使用,且纯随机无质量下限,删除保持代码干净。

改动文件

  1. apps/api/app/api/routes/generation_tasks.py (-11行)

    • 删除 import random
    • 删除 if mode==random 分支(4行)
    • 选取入口条件 in ("random","smart") 改为 in ("smart",)
    • docstring 移除 random=随机 描述
  2. apps/api/app/schemas/generation_task.py (+2/-2)

    • asset_select_mode description: 移除 random=随机选取
    • asset_select_count description: 仅 random/smart → 仅 smart
  3. tests/unit/test_asset_select_mode.py (-20行)

    • 删除 TestSelectAssetsRandomMode 类(3个用例)
  4. tests/unit/domain/test_generation_task.py (+2/-2)

    • asset_select_mode="random" → "smart"
  5. tests/unit/test_wave77_generation_task.py (+2/-2)

    • asset_select_mode="random" → "smart"

未改动

  • _calc_random_start_time(片段级随机起始时间,非素材选取模式)
  • smart_match.py(smart 评分逻辑)
  • 前端(已确认无 random 入口)

测试

服务器本地 130 tests passed(test_asset_select_mode + test_smart_match + domain + wave77)

## 改动说明 素材选取模式后端支持 all/random/smart 三种,但前端只用了 all 和 smart(smart 走独立接口 POST /assets/smart-match)。random 模式从未被使用,且纯随机无质量下限,删除保持代码干净。 ## 改动文件 1. **apps/api/app/api/routes/generation_tasks.py** (-11行) - 删除 import random - 删除 if mode==random 分支(4行) - 选取入口条件 in ("random","smart") 改为 in ("smart",) - docstring 移除 random=随机 描述 2. **apps/api/app/schemas/generation_task.py** (+2/-2) - asset_select_mode description: 移除 random=随机选取 - asset_select_count description: 仅 random/smart → 仅 smart 3. **tests/unit/test_asset_select_mode.py** (-20行) - 删除 TestSelectAssetsRandomMode 类(3个用例) 4. **tests/unit/domain/test_generation_task.py** (+2/-2) - asset_select_mode="random" → "smart" 5. **tests/unit/test_wave77_generation_task.py** (+2/-2) - asset_select_mode="random" → "smart" ## 未改动 - _calc_random_start_time(片段级随机起始时间,非素材选取模式) - smart_match.py(smart 评分逻辑) - 前端(已确认无 random 入口) ## 测试 服务器本地 130 tests passed(test_asset_select_mode + test_smart_match + domain + wave77)
xiaoxia added 1 commit 2026-08-29 17:54:38 +08:00
chore: 删除素材选取 random 模式
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
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 / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 / Check if frontend-only change (pull_request) Successful in 3m5s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m13s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m20s
AI Code Review / AI Code Review (pull_request) Successful in 3m54s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 3m57s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m10s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m14s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m11s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 6m1s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
05d75db0cf
- generation_tasks.py: 删除 import random、if mode==random 分支、docstring 中 random 描述
- generation_task.py schema: description 移除 random=随机选取,count 描述仅保留 smart
- 选取入口条件 in ("random","smart") 改为 in ("smart",)
- test_asset_select_mode.py: 删除 TestSelectAssetsRandomMode 类(3个用例)
- domain/test_generation_task.py + test_wave77_generation_task.py: random→smart

不改:_calc_random_start_time(片段级随机)、smart_match.py、前端

🚀 预览环境已部署

项目 详情
PR号 #1542
预览链接 https://pr-1542.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1542 | | 预览链接 | [https://pr-1542.preview.xiaoxiajianji.com](https://pr-1542.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-29 18:02:12 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
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 / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 / Check if frontend-only change (pull_request) Successful in 2m36s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m40s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m7s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 4m9s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 4m11s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 45s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 50s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m41s
AI Code Review / AI Code Review (pull_request) Successful in 6m46s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m47s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m12s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 8m51s
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 Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 25s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 3m11s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 4m36s
5a00f8b8fb
Collaborator

代码审查结果 - PR #1542

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

  1. apps/api/app/api/routes/generation_tasks.py 第285行:自动选取逻辑的条件判断排除了 all 模式,导致功能失效。
    • 问题描述:代码将条件从 in ("random", "smart") 修改为 in ("smart",)。由于 Schema 中 asset_select_mode 的默认值为 "all",且描述中明确包含 all=全部ready视频,这意味着用户期望在默认或不指定 ID 的情况下能自动选取所有素材。当前的修改导致当 mode"all" 时,该 elif 分支不执行,resolved_asset_ids 保持为空,从而导致任务创建失败或素材列表为空。
    • 后果:使用默认参数或显式指定 all 模式创建任务时,无法自动选取项目素材,属于功能性破坏。
    • 修改建议:将条件修改为 if project_id and not resolved_asset_ids:(假设函数内部处理了所有模式)或显式包含 all,即 in ("all", "smart")

💡 建议(1个可选)

  1. apps/api/app/api/routes/generation_tasks.py 第126行:建议检查 _select_assets_from_library 函数对 all 模式的处理是否显式。
    • 具体内容:Diff 中移除了 random 分支,仅保留了 smart 分支。虽然测试文件中保留了 TestSelectAssetsAllMode,暗示函数可能通过末尾的默认返回语句处理 all 模式,但为了代码清晰性和健壮性,建议在函数内部显式增加 if mode == "all": 的处理逻辑,而不是依赖隐式的控制流。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-08-29 10:08:59 | 模型:

## 代码审查结果 - PR #1542 ### ⚠️ 问题(1个需要修改) 1. **apps/api/app/api/routes/generation_tasks.py 第285行**:自动选取逻辑的条件判断排除了 `all` 模式,导致功能失效。 - **问题描述**:代码将条件从 `in ("random", "smart")` 修改为 `in ("smart",)`。由于 Schema 中 `asset_select_mode` 的默认值为 `"all"`,且描述中明确包含 `all=全部ready视频`,这意味着用户期望在默认或不指定 ID 的情况下能自动选取所有素材。当前的修改导致当 `mode` 为 `"all"` 时,该 `elif` 分支不执行,`resolved_asset_ids` 保持为空,从而导致任务创建失败或素材列表为空。 - **后果**:使用默认参数或显式指定 `all` 模式创建任务时,无法自动选取项目素材,属于功能性破坏。 - **修改建议**:将条件修改为 `if project_id and not resolved_asset_ids:`(假设函数内部处理了所有模式)或显式包含 `all`,即 `in ("all", "smart")`。 ### 💡 建议(1个可选) 1. **apps/api/app/api/routes/generation_tasks.py 第126行**:建议检查 `_select_assets_from_library` 函数对 `all` 模式的处理是否显式。 - **具体内容**:Diff 中移除了 `random` 分支,仅保留了 `smart` 分支。虽然测试文件中保留了 `TestSelectAssetsAllMode`,暗示函数可能通过末尾的默认返回语句处理 `all` 模式,但为了代码清晰性和健壮性,建议在函数内部显式增加 `if mode == "all":` 的处理逻辑,而不是依赖隐式的控制流。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-29 10:08:59 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit 700d6f9130 into develop 2026-08-29 18:14:51 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1542 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.