feat: 预览数量 preview_count 上限校验 + Worker 并发提升至 4 #1292

Merged
xiaoxia merged 1 commits from feature/1286-preview-count-validation-and-worker-concurrency into develop 2026-08-08 11:14:45 +08:00
Owner

背景

用户反馈预览视频生成速度慢,前端改为并发创建多个预览任务。后端需配合:

  1. 校验预览数量上限(≤10)
  2. 提升 Worker 并发数以支持并行渲染

改动

1. preview_count 字段校验

  • CreatePreviewGenerationTaskRequest 新增 preview_count 字段
  • 范围:1-10,默认 1
  • Pydantic 自动校验,超出范围返回 422

2. Worker 并发配置

  • Docker Compose WORKER_CONCURRENCY 默认从 1 提升至 4
  • Worker 资源限制从 2C2G 调整为 4C8G(支持 4 路并行视频渲染)
  • 代码默认值 worker_settings.py 已是 4,现在与 Docker 配置一致

3. 日志增强

  • 预览生成路由增加 preview_count 日志记录

测试

  • 新增 11 个单元测试:preview_count 边界校验 + Worker 并发配置验证
  • 全部通过

关联

  • 前端 PR #1285 已合并,支持生成多个预览视频
  • 前端将 PREVIEW_COUNT_OPTIONS 改为数字输入框(min=1, max=10)
## 背景 用户反馈预览视频生成速度慢,前端改为并发创建多个预览任务。后端需配合: 1. 校验预览数量上限(≤10) 2. 提升 Worker 并发数以支持并行渲染 ## 改动 ### 1. preview_count 字段校验 - `CreatePreviewGenerationTaskRequest` 新增 `preview_count` 字段 - 范围:1-10,默认 1 - Pydantic 自动校验,超出范围返回 422 ### 2. Worker 并发配置 - Docker Compose `WORKER_CONCURRENCY` 默认从 1 提升至 4 - Worker 资源限制从 2C2G 调整为 4C8G(支持 4 路并行视频渲染) - 代码默认值 `worker_settings.py` 已是 4,现在与 Docker 配置一致 ### 3. 日志增强 - 预览生成路由增加 `preview_count` 日志记录 ## 测试 - 新增 11 个单元测试:preview_count 边界校验 + Worker 并发配置验证 - 全部通过 ✅ ## 关联 - 前端 PR #1285 已合并,支持生成多个预览视频 - 前端将 `PREVIEW_COUNT_OPTIONS` 改为数字输入框(min=1, max=10)
xiaoxia added 1 commit 2026-08-08 00:24:48 +08:00
feat: 预览数量 preview_count 上限校验 + Worker 并发提升至 4
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (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 38s
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 - Migration (alembic) (pull_request) Successful in 1m6s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
AI Code Review / AI Code Review (pull_request) Successful in 2m32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m41s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m37s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m8s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 5m8s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 7m9s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 26m58s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 22m0s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 55m12s
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 5s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 38s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 46s
12a782bbf0
- CreatePreviewGenerationTaskRequest 新增 preview_count 字段(1-10,默认1)
- 路由日志增加 preview_count 记录
- Docker Compose Worker 并发默认从 1 提升至 4
- Worker 资源限制调整为 4C8G 以支持并行渲染
- 新增 11 个单元测试覆盖 preview_count 校验及并发配置
Collaborator

【阻塞级判定】

  • 是否存在阻塞级问题:否
  • 阻塞级问题数量:0 个

📊 审查概览

  • 整体评价:通过
  • 建议级问题数量:2 个

🔴 阻塞级问题(必须修复)

💡 改进建议(不阻塞合并)

  1. [tests/unit/test_1286_preview_count_validation.py: 119] 测试环境依赖确认

    • 具体内容:测试用例 test_default_worker_concurrency_is_4 断言默认并发为 4。请确保 packages.config.WorkerSettings 的代码默认值已同步更新为 4,或者测试环境中已通过 pytestautouse fixture 或 monkeypatch 设置了环境变量 WORKER_CONCURRENCY=4。如果配置类默认值仍为旧值(如 1),该测试将在 CI 环境中失败。
  2. [infra/docker/compose.yml: 142] 资源限制可用性确认

    • 具体内容:Worker 并发数提升至 4 且内存限制提升至 8G。请确认部署目标集群(尤其是 Staging 环境)的节点资源是否足以支持新的资源预留要求(Reservation: 1.0 CPU, 2G Memory),否则可能导致 Pod 无法调度。

良好实践

  • 参数校验完善:在 Pydantic Schema 中使用 gelepreview_count 进行了严格的边界限制(1-10),有效防止了非法参数。
  • 测试覆盖全面:新增的单元测试覆盖了默认值、边界值(0, 1, 10, 11)以及非法值,测试用例设计质量较高。
  • 日志可追溯性:在接口入口处同步更新了日志参数,记录了 preview_count,便于线上问题排查。
  • 资源协同调整:在提升 Worker 并发数的同时,相应地调整了 CPU 和 Memory 的 limits 与 reservations,符合生产环境运维规范。

格式检查通过 | 逻辑审查通过 | 性能无明显风险


🤖 由 AI 代码审查机器人自动生成 | 2026-08-07 16:27:22 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[tests/unit/test_1286_preview_count_validation.py: 119] 测试环境依赖确认** - 具体内容:测试用例 `test_default_worker_concurrency_is_4` 断言默认并发为 4。请确保 `packages.config.WorkerSettings` 的代码默认值已同步更新为 4,或者测试环境中已通过 `pytest` 的 `autouse` fixture 或 `monkeypatch` 设置了环境变量 `WORKER_CONCURRENCY=4`。如果配置类默认值仍为旧值(如 1),该测试将在 CI 环境中失败。 2. **[infra/docker/compose.yml: 142] 资源限制可用性确认** - 具体内容:Worker 并发数提升至 4 且内存限制提升至 8G。请确认部署目标集群(尤其是 Staging 环境)的节点资源是否足以支持新的资源预留要求(Reservation: 1.0 CPU, 2G Memory),否则可能导致 Pod 无法调度。 ### ✅ 良好实践 - **参数校验完善**:在 Pydantic Schema 中使用 `ge` 和 `le` 对 `preview_count` 进行了严格的边界限制(1-10),有效防止了非法参数。 - **测试覆盖全面**:新增的单元测试覆盖了默认值、边界值(0, 1, 10, 11)以及非法值,测试用例设计质量较高。 - **日志可追溯性**:在接口入口处同步更新了日志参数,记录了 `preview_count`,便于线上问题排查。 - **资源协同调整**:在提升 Worker 并发数的同时,相应地调整了 CPU 和 Memory 的 limits 与 reservations,符合生产环境运维规范。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能无明显风险 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-07 16:27:22 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1292 | | 预览链接 | [https://pr-1292.preview.xiaoxiajianji.com](https://pr-1292.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia merged commit 248fd5408c into develop 2026-08-08 11:14:45 +08:00

🗑️ 预览环境已清理

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

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

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