feat(viral-video): 多模型支持(4 Seedance+Wan 3.0)+DashScope接入+GET /models端点 (#2159) #2161

Merged
auto-approve-bot merged 2 commits from feat/2159-multi-model-wan-dashscope into develop 2026-10-03 17:42:39 +08:00
Owner

概述

爆款视频v1.6多模型支持:4个Seedance模型(2.5/2.0/2.0-fast/2.0-mini)+Wan 3.0(DashScope接入)+GET /models端点。P0/P1修复已在#2157合入develop。

模型与定价

  • seedance-2.5: 480p/720p=70元/M tokens, 1080p=77, 默认模型
  • seedance-2.0: 480p/720p=46, 1080p=51, 4k=80
  • seedance-2.0-fast: 480p/720p=28 (75折至10-07), 支持generate_audio
  • seedance-2.0-mini: 480p/720p=9.2 (4折至10-07), 支持generate_audio
  • wan-3.0(DashScope): 480p=0.3/秒, 720p=0.6, 1080p=1.2, 按秒计费; 需配置DASHSCOPE_API_KEY才在/models返回

核心代码改动

  • packages/domain/points_rules.py: VIRAL_VIDEO_MODEL_CONFIG统一5模型元数据; 双计费模式token/per_second; 4k分辨率(2160短边); _match_model_prefix按key长度倒序匹配避免前缀误命中
  • packages/shared/ai_client.py: _resolve_video_provider_and_id()返回(provider,model_id,cfg); provider=dashscope路由到DashScope
  • packages/shared/dashscope_client.py(新): DashScope异步API(X-DashScope-Async:enable), POST创建→GET轮询→stream下载; 无key时单例返回None
  • apps/worker: gen_audio按cfg.supports_audio动态取值(所有Seedance有声)
  • apps/api/routes: GET /api/v1/viral-video/models 返回前端模型选择器列表
  • packages/config/base.py: 新增DashScope配置项

测试

  • 本地全量单测 16443 passed (排除已知musetalk ffprobe相关2个)
  • 新增测试:6个模型×分辨率积分断言、DashScope happy/error/pending路径、/models端点含/不含wan过滤、provider分发路由、4k分辨率、_match_model_prefix最长前缀匹配

备注

  • Wan 3.0 需运维配置DASHSCOPE_API_KEY环境变量后才在前端可见并可用
  • 积分公式保持 total=round((video_cost+0.15)*1.3,2)
## 概述 爆款视频v1.6多模型支持:4个Seedance模型(2.5/2.0/2.0-fast/2.0-mini)+Wan 3.0(DashScope接入)+GET /models端点。P0/P1修复已在#2157合入develop。 ## 模型与定价 - seedance-2.5: 480p/720p=70元/M tokens, 1080p=77, 默认模型 - seedance-2.0: 480p/720p=46, 1080p=51, 4k=80 - seedance-2.0-fast: 480p/720p=28 (75折至10-07), 支持generate_audio - seedance-2.0-mini: 480p/720p=9.2 (4折至10-07), 支持generate_audio - wan-3.0(DashScope): 480p=0.3/秒, 720p=0.6, 1080p=1.2, 按秒计费; 需配置DASHSCOPE_API_KEY才在/models返回 ## 核心代码改动 - packages/domain/points_rules.py: VIRAL_VIDEO_MODEL_CONFIG统一5模型元数据; 双计费模式token/per_second; 4k分辨率(2160短边); _match_model_prefix按key长度倒序匹配避免前缀误命中 - packages/shared/ai_client.py: _resolve_video_provider_and_id()返回(provider,model_id,cfg); provider=dashscope路由到DashScope - packages/shared/dashscope_client.py(新): DashScope异步API(X-DashScope-Async:enable), POST创建→GET轮询→stream下载; 无key时单例返回None - apps/worker: gen_audio按cfg.supports_audio动态取值(所有Seedance有声) - apps/api/routes: GET /api/v1/viral-video/models 返回前端模型选择器列表 - packages/config/base.py: 新增DashScope配置项 ## 测试 - 本地全量单测 16443 passed (排除已知musetalk ffprobe相关2个) - 新增测试:6个模型×分辨率积分断言、DashScope happy/error/pending路径、/models端点含/不含wan过滤、provider分发路由、4k分辨率、_match_model_prefix最长前缀匹配 ## 备注 - Wan 3.0 需运维配置DASHSCOPE_API_KEY环境变量后才在前端可见并可用 - 积分公式保持 total=round((video_cost+0.15)*1.3,2)
xiaoxia added 1 commit 2026-10-03 17:21:36 +08:00
feat(viral-video): 多模型支持(4 Seedance+Wan 3.0)+DashScope接入+GET /models端点 (#2159)
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
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 / 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 Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped 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 / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 58s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m13s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m41s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m59s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 5m18s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 6m15s
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
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
eeadf6de76
- points_rules: VIRAL_VIDEO_MODEL_CONFIG统一配置5模型(seedance-2.5/2.0/2.0-fast/2.0-mini/wan-3.0)
  - 所有Seedance模型supports_audio=True(更正Fast支持音频)
  - 双计费模式: token(Seedance按元/百万tokens)+per_second(Wan 3.0按元/秒)
  - seedance-2.0支持4k(2160短边); fast/mini限480p/720p
  - list_viral_video_models()按dashscope_available过滤wan-3.0
  - _match_model_prefix按key长度倒序匹配避免fast/mini被前缀误匹配
- ai_client: _resolve_video_provider_and_id()返回(provider, model_id, cfg)三元组
  - provider=dashscope时路由到新dashscope_client; doubao走原有火山方舟
- dashscope_client(新): DashScope异步API(X-DashScope-Async:enable)
  - POST创建→GET轮询SUCCEEDED/FAILED→httpx.stream下载
  - get_dashscope_client()单例;无API key返回None(隐藏wan-3.0)
- worker: gen_audio按模型cfg.supports_audio动态取值;日志打印provider
- routes: GET /api/v1/viral-video/models返回前端模型选择器数据
- 单测: 6个模型×分辨率积分断言、DashScope happy/error路径、/models端点、provider分发

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2161 | | 预览链接 | [https://pr-2161.preview.xiaoxiajianji.com](https://pr-2161.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-10-03 17:28:07 +08:00
style: auto-format with black + isort + ruff + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
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 / Build Staging API Image (pull_request) Has been skipped
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 / 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 / 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 / PR Build API Image (pull_request) Successful in 52s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m32s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m56s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 6m2s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 6m20s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 6m38s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 6m37s
AI Code Review / AI Code Review (pull_request) Successful in 7m4s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 12m24s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 13m46s
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 / CI Gate (pull_request) Successful in 1s
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
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 7m54s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Waiting to run
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 55s
b5ea45e28f
auto-approve-bot merged commit 1b02df4d4a into develop 2026-10-03 17:42:39 +08:00
auto-approve-bot deleted branch feat/2159-multi-model-wan-dashscope 2026-10-03 17:42:41 +08:00

🗑️ 预览环境已清理

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

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

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