feat(editor): 接入MediaKit智能选片,基于视频内容分析推荐最佳片段起始时间 #1523

Merged
xiaoxia merged 2 commits from feat/mediakit-smart-clip-selection into develop 2026-08-27 16:25:09 +08:00
Owner

改动

create_clips_from_assets_editor 中接入 MediaKit 视频理解,智能推荐片段起始时间。

修改文件

  1. apps/api/app/api/routes/templates_editor/clips.py
    • 新增 _get_mediakit_recommendations:调用 MediaKit analyze_videos 分析视频内容,返回每个素材的推荐起始时间
    • 新增 _recommended_time_conflicts:检查推荐时间与已使用时间段是否冲突
    • create_clips_from_assets_editor 优先使用 MediaKit 推荐时间,冲突/越界时降级为 _calc_random_start_time
  2. tests/unit/test_mediakit_smart_clips.py(新增)
    • TestRecommendedTimeConflicts(8 个用例):冲突检测逻辑
    • TestGetMediakitRecommendations(7 个用例):解析与降级
    • TestMediakitIntegrationInFromAssets(5 个用例):端点集成测试

降级策略

场景 行为
MediaKit 未配置 返回空字典 → 纯随机
MediaKit 超时/失败 返回空字典 → 纯随机
返回内容无法解析 返回空字典 → 纯随机
推荐时间与已用片段冲突 该素材降级为随机
推荐时间超出素材时长 该素材降级为随机

测试

  • 21 个新测试全部通过
  • 15 个已有相关测试无回归
## 改动 在 `create_clips_from_assets_editor` 中接入 MediaKit 视频理解,智能推荐片段起始时间。 ### 修改文件 1. `apps/api/app/api/routes/templates_editor/clips.py` - 新增 `_get_mediakit_recommendations`:调用 MediaKit `analyze_videos` 分析视频内容,返回每个素材的推荐起始时间 - 新增 `_recommended_time_conflicts`:检查推荐时间与已使用时间段是否冲突 - `create_clips_from_assets_editor` 优先使用 MediaKit 推荐时间,冲突/越界时降级为 `_calc_random_start_time` 2. `tests/unit/test_mediakit_smart_clips.py`(新增) - `TestRecommendedTimeConflicts`(8 个用例):冲突检测逻辑 - `TestGetMediakitRecommendations`(7 个用例):解析与降级 - `TestMediakitIntegrationInFromAssets`(5 个用例):端点集成测试 ### 降级策略 | 场景 | 行为 | |------|------| | MediaKit 未配置 | 返回空字典 → 纯随机 | | MediaKit 超时/失败 | 返回空字典 → 纯随机 | | 返回内容无法解析 | 返回空字典 → 纯随机 | | 推荐时间与已用片段冲突 | 该素材降级为随机 | | 推荐时间超出素材时长 | 该素材降级为随机 | ### 测试 - 21 个新测试全部通过 - 15 个已有相关测试无回归
xiaoxia added 1 commit 2026-08-27 15:53:21 +08:00
feat(editor): 接入MediaKit智能选片,基于视频内容分析推荐最佳片段起始时间
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2m46s
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 / Validate - Migration (alembic) (pull_request) Successful in 3m26s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m52s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m35s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m31s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m17s
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 3m8s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m29s
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
AI Code Review / AI Code Review (pull_request) Has been cancelled
d5032108b5
- 新增 _get_mediakit_recommendations 调用 MediaKit 视频理解分析素材
- 新增 _recommended_time_conflicts 检查推荐时间与已用时间段的冲突
- from-assets 端点优先使用 MediaKit 推荐时间,冲突时降级为随机
- 多层降级策略:MediaKit不可用/超时/解析失败/冲突 → 纯随机
- 非视频素材自动跳过,不发送给 MediaKit
- 新增 21 个单测覆盖冲突检测、解析逻辑、集成降级场景

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1523 | | 预览链接 | [https://pr-1523.preview.xiaoxiajianji.com](https://pr-1523.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-08-27 16:03:29 +08:00
style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2m54s
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 / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 4m12s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 4m23s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m58s
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m42s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m5s
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 Worker Image (pull_request) Successful in 40s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m54s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 4m44s
AI Code Review / AI Code Review (pull_request) Successful in 9m10s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 9m56s
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 / Integration Tests (pull_request) Successful in 5m50s
CI/CD Pipeline / CI Gate (pull_request) Successful in 58s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 3m43s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 4m31s
6d225a89b4
auto-approve-bot approved these changes 2026-08-27 16:18:16 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-27 16:18:16 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia merged commit 0c216bc545 into develop 2026-08-27 16:25:09 +08:00

🗑️ 预览环境已清理

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

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

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