fix(#1341): 增强封面生成错误日志和前端提示 #1347

Closed
xiaoxia wants to merge 5 commits from fix/cover-error-logging-1347 into develop
Owner

问题

封面生成功能在 staging 实测时卡住,无法看到具体错误原因,难以定位问题。

解决方案

后端(cover.py):

  • 在 3 步查找预览视频 URL 的每个步骤增加详细日志
  • 在调用 MediaKit 前后增加日志
  • 找不到预览视频时记录 ERROR 级别日志

前端(useStep6Cover.ts):

  • catch 块中解析后端返回的详细错误信息(detail/message)
  • 区分后端错误、网络错误、超时错误,显示具体原因
  • 用户在控制台和页面上都能看到具体失败原因

验收标准

  • CI 全绿(TypeScript 编译、后端 mypy、单元测试、E2E)
  • 部署到 staging 后,再次测试封面生成
  • 如果失败,控制台和页面应显示具体错误信息(如"请先生成预览视频"、"MediaKit 不可用"等)

关联

## 问题 封面生成功能在 staging 实测时卡住,无法看到具体错误原因,难以定位问题。 ## 解决方案 **后端(cover.py):** - 在 3 步查找预览视频 URL 的每个步骤增加详细日志 - 在调用 MediaKit 前后增加日志 - 找不到预览视频时记录 ERROR 级别日志 **前端(useStep6Cover.ts):** - catch 块中解析后端返回的详细错误信息(detail/message) - 区分后端错误、网络错误、超时错误,显示具体原因 - 用户在控制台和页面上都能看到具体失败原因 ## 验收标准 - [ ] CI 全绿(TypeScript 编译、后端 mypy、单元测试、E2E) - [ ] 部署到 staging 后,再次测试封面生成 - [ ] 如果失败,控制台和页面应显示具体错误信息(如"请先生成预览视频"、"MediaKit 不可用"等) ## 关联 - Issue: #1341 - 前置 PR: #1345, #1346
xiaoxia added 1 commit 2026-08-12 22:07:32 +08:00
fix(#1341): 增强封面生成错误日志和前端提示
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 / 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 / Check if frontend-only change (pull_request) Successful in 35s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 39s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 50s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m37s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 1m47s
AI Code Review / AI Code Review (pull_request) Failing after 2m1s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m8s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m3s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 3m4s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m55s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 4m7s
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 / PR Build Worker Image (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
f64a4b4213
- 后端 cover.py: 在 3 步查找预览视频的每个步骤增加详细日志
- 后端 cover.py: 在调用 MediaKit 前后增加日志
- 前端 useStep6Cover.ts: catch 块中解析后端返回的详细错误信息
- 前端: 区分后端错误、网络错误、超时错误,显示具体原因

目的:让封面生成失败时能看到具体卡在哪一步,便于定位问题
xiaoxia added 1 commit 2026-08-12 22:12:34 +08:00
fix(#1341): 修复 ESLint TS 类型错误,删除 cover.py.bak
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
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 / Deploy Staging (Watchtower auto-deploy) (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 / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 44s
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (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 / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (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
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
b81d61b614
- useStep6Cover.ts: catch(err) 用 as 做类型断言,避免 strict 模式下 unknown 属性访问
- 删除误提交的 cover.py.bak 文件
xiaoxia added 1 commit 2026-08-12 22:13:59 +08:00
perf(#1341): 优化封面生成性能,改用 SceneChange 策略
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 / 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 / Check if frontend-only change (pull_request) Successful in 45s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m28s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m47s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m32s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m49s
AI Code Review / AI Code Review (pull_request) Failing after 2m34s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m46s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m20s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m22s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m53s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 3m53s
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 / PR Build Worker Image (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
7c1235c018
- 抽帧策略: TimeInterval → SceneChange(自动识别画面变化,选最佳帧)
- 抽帧数量: 5 → 3(平衡速度和质量)
- 轮询间隔: 3.0s → 2.0s(加快轮询)

预期效果:
- 封面质量更高(SceneChange 自动选最佳画面)
- 生成速度更快(3帧 vs 5帧)
- 减少超时风险

配合 PR #1347 的错误日志增强,便于定位问题

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1347 | | 预览链接 | [https://pr-1347.preview.xiaoxiajianji.com](https://pr-1347.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-08-12 22:21:48 +08:00
fix(#1341): 修复3个ESLint warning,确保CI Frontend Lint通过
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 / 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 / Check if frontend-only change (pull_request) Successful in 27s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m19s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m58s
AI Code Review / AI Code Review (pull_request) Failing after 1m59s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m57s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 2m22s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m52s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m36s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m7s
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 / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (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
cada58e9ea
- useGenerateVideo.ts: 移除useCallback多余的selectedTemplate依赖
- useStep4Preview.ts: 删除不必要的as any类型断言(EditPlanConfig已有rendered_storage_key字段)
- useStep4Preview.ts: useCallback deps补充selectedTemplate
xiaoxia added 1 commit 2026-08-12 22:26:23 +08:00
style: prettier 格式化 useStep4Preview + useStep6Cover
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
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 / 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 / Check if frontend-only change (pull_request) Successful in 46s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m13s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m44s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m49s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m24s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m13s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m31s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m0s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 19s
AI Code Review / AI Code Review (pull_request) Successful in 6m57s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 6m11s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 7m28s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 10m13s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 9m48s
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 5m49s
CI/CD Pipeline / CI Gate (pull_request) Failing after 6s
efab5b45cd
xiaoxia closed this pull request 2026-08-12 22:28:48 +08:00

🗑️ 预览环境已清理

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

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

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

代码审查结果 - PR #1347

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

  1. apps/api/app/api/routes/templates_editor/cover.py 第76-80行logger.info 调用缺少格式字符串,导致运行时 TypeError。代码中第二个 logger.info 仅传入了参数 plan_idgeneration_task_id,但缺少第一个格式化字符串参数,这将直接导致服务报错崩溃。
  2. apps/web/src/pages/generate/hooks/useGenerateVideo.ts 第81行useCallback 依赖数组中移除了 selectedTemplate。如果 handleGenerateSuccess 函数内部使用了 selectedTemplate(这在生成逻辑中很常见),移除依赖会导致闭包陷阱,函数内部将始终使用旧值,引发逻辑错误。

💡 建议(1个可选)

  1. packages/shared/ai_service.py 第405-408行:抽帧策略从 TimeInterval 改为 SceneChange 且帧数减少。对于画面变化较少的视频(如静态图片生成的视频),SceneChange 策略可能无法提取到足够的帧数(少于3帧),导致封面生成失败或质量下降。建议增加兜底逻辑或监控此类场景。

格式检查通过 | 逻辑审查需修改 | 性能无问题


🤖 由 AI 代码审查机器人自动生成 | 2026-08-12 14:33:19 | 模型:

## 代码审查结果 - PR #1347 ### ⚠️ 问题(2个需要修改) 1. **apps/api/app/api/routes/templates_editor/cover.py 第76-80行**:`logger.info` 调用缺少格式字符串,导致运行时 TypeError。代码中第二个 `logger.info` 仅传入了参数 `plan_id` 和 `generation_task_id`,但缺少第一个格式化字符串参数,这将直接导致服务报错崩溃。 2. **apps/web/src/pages/generate/hooks/useGenerateVideo.ts 第81行**:`useCallback` 依赖数组中移除了 `selectedTemplate`。如果 `handleGenerateSuccess` 函数内部使用了 `selectedTemplate`(这在生成逻辑中很常见),移除依赖会导致闭包陷阱,函数内部将始终使用旧值,引发逻辑错误。 ### 💡 建议(1个可选) 1. **packages/shared/ai_service.py 第405-408行**:抽帧策略从 `TimeInterval` 改为 `SceneChange` 且帧数减少。对于画面变化较少的视频(如静态图片生成的视频),`SceneChange` 策略可能无法提取到足够的帧数(少于3帧),导致封面生成失败或质量下降。建议增加兜底逻辑或监控此类场景。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能无问题 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-12 14:33:19 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Some checks are pending
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
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 / 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 / Check if frontend-only change (pull_request) Successful in 46s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m35s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m46s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m13s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m44s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m49s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m24s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m13s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m31s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m0s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 19s
AI Code Review / AI Code Review (pull_request) Successful in 6m57s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 6m11s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 7m28s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 10m13s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 9m48s
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 5m49s
CI/CD Pipeline / CI Gate (pull_request) Failing after 6s

Pull request closed

Sign in to join this conversation.