fix: 封面API去除body重复template_id+片段切换后重启tick #1434

Closed
xiaoxia wants to merge 1 commits from fix/preview-player-v8 into develop
Owner

修复内容

1. 封面生成 API 400 错误

  • 问题: 前端同时在 body 和 query params 中发送 template_id,后端解析冲突返回 400
  • 修复: body 中不再发送 template_id,只保留 query params 中的
  • 改动: apps/web/src/api/generation/cover.ts

2. 片段切换后播放状态丢失

  • 问题: tick 函数中 switchToSegment(nextIndex).then() 里只调了 play() 但没有重启 RAF tick 循环,也没有显式设置 isPlaying(true)
  • 修复: 在 .then() 回调中添加 setIsPlaying(true) + rafRef.current = requestAnimationFrame(tick)
  • 改动: apps/web/src/pages/generate/hooks/useSegmentScheduler.ts
## 修复内容 ### 1. 封面生成 API 400 错误 - **问题**: 前端同时在 body 和 query params 中发送 `template_id`,后端解析冲突返回 400 - **修复**: body 中不再发送 `template_id`,只保留 query params 中的 - **改动**: `apps/web/src/api/generation/cover.ts` ### 2. 片段切换后播放状态丢失 - **问题**: `tick` 函数中 `switchToSegment(nextIndex).then()` 里只调了 `play()` 但没有重启 RAF tick 循环,也没有显式设置 `isPlaying(true)` - **修复**: 在 `.then()` 回调中添加 `setIsPlaying(true)` + `rafRef.current = requestAnimationFrame(tick)` - **改动**: `apps/web/src/pages/generate/hooks/useSegmentScheduler.ts`
xiaoxia added 1 commit 2026-08-18 23:49:32 +08:00
fix: 封面API去除body中重复template_id+片段切换后重启tick循环
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 30s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m56s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m26s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m9s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m8s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m15s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m51s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m33s
AI Code Review / AI Code Review (pull_request) Failing after 3m35s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 3m1s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m29s
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
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) Failing after 29s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 44s
f306037f7f
1. cover API: body中不再发送template_id,只保留query params中的template_id
   修复后端400错误(body和params重复传同一字段)
2. useSegmentScheduler tick: 片段切换后添加setIsPlaying(true)+重启RAF
   修复切换片段后播放状态丢失、tick循环停止的问题

🚀 预览环境已部署

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

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

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

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

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

【阻塞级判定】

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

📊 审查概览

  • 整体评价:需修改
  • 建议级问题数量:0 个

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

  1. [apps/web/src/api/generation/cover.ts: 26] API 请求参数变更导致后端兼容性风险
    • 问题类型:逻辑bug / 数据损坏风险
    • 问题描述:原代码将 template_id 同时放在请求体和查询参数中,新代码将其从请求体中移除,仅保留在查询参数。如果后端 API 期望从请求体中读取 template_id,或者后端未同步修改以仅从查询参数获取该字段,此变更将导致请求失败(如 400 Bad Request 或业务逻辑错误)。
    • 修改建议:请确认后端 API 是否已同步修改,确保后端能够从 params 中正确获取 template_id 且不再依赖请求体中的该字段。在未确认后端兼容性前,建议保留请求体中的字段传递。

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

良好实践

  • apps/web/src/pages/generate/hooks/useSegmentScheduler.tsswitchToSegment 成功后恢复播放状态并重启动画帧,逻辑闭环处理得当。

🤖 由 AI 代码审查机器人自动生成 | 2026-08-18 15:53:04 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:是 - 阻塞级问题数量:1 个 ### 📊 审查概览 - 整体评价:需修改 - 建议级问题数量:0 个 ### 🔴 阻塞级问题(必须修复) 1. **[apps/web/src/api/generation/cover.ts: 26] API 请求参数变更导致后端兼容性风险** - 问题类型:逻辑bug / 数据损坏风险 - 问题描述:原代码将 `template_id` 同时放在请求体和查询参数中,新代码将其从请求体中移除,仅保留在查询参数。如果后端 API 期望从请求体中读取 `template_id`,或者后端未同步修改以仅从查询参数获取该字段,此变更将导致请求失败(如 400 Bad Request 或业务逻辑错误)。 - 修改建议:请确认后端 API 是否已同步修改,确保后端能够从 `params` 中正确获取 `template_id` 且不再依赖请求体中的该字段。在未确认后端兼容性前,建议保留请求体中的字段传递。 ### 💡 改进建议(不阻塞合并) 无 ### ✅ 良好实践 - `apps/web/src/pages/generate/hooks/useSegmentScheduler.ts` 在 `switchToSegment` 成功后恢复播放状态并重启动画帧,逻辑闭环处理得当。 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-18 15:53:04 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia closed this pull request 2026-08-19 20:48:10 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1434 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
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 30s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m56s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m26s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m9s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m8s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 2m15s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m51s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m33s
AI Code Review / AI Code Review (pull_request) Failing after 3m35s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 3m1s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m29s
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
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) Failing after 29s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 44s

Pull request closed

Sign in to join this conversation.