fix: FrontendPreviewPlayer video fallback 路径补充标题叠加层 #1491

Merged
auto-approve-bot merged 1 commits from fix/title-overlay-video-fallback into develop 2026-08-25 11:03:28 +08:00
Owner

问题

FrontendPreviewPlayer 的 useWebCodecs 硬编码为 false,实际走 video fallback 路径。但该路径只渲染了 <video> 元素,没有渲染标题 CSS 叠加层,导致预览画面看不到标题。

修复

在 video 元素之后、播放按钮之前加入绝对定位的标题 div,支持全部标题样式属性:

  • position (top/center/bottom)
  • size, font, color
  • bold, italic
  • stroke, shadow

改动文件

  • apps/web/src/pages/generate/components/FrontendPreviewPlayer.tsx — 新增标题 CSS 叠加层

验收标准

  • Step 4+ 右侧预览面板显示素材视频 + 标题叠加
  • 修改标题文字/样式时实时变化
  • 播放/暂停按钮、进度条、片段指示器正常
  • TypeScript 检查通过
## 问题 FrontendPreviewPlayer 的 `useWebCodecs` 硬编码为 `false`,实际走 video fallback 路径。但该路径只渲染了 `<video>` 元素,没有渲染标题 CSS 叠加层,导致预览画面看不到标题。 ## 修复 在 video 元素之后、播放按钮之前加入绝对定位的标题 div,支持全部标题样式属性: - position (top/center/bottom) - size, font, color - bold, italic - stroke, shadow ## 改动文件 - `apps/web/src/pages/generate/components/FrontendPreviewPlayer.tsx` — 新增标题 CSS 叠加层 ## 验收标准 - [x] Step 4+ 右侧预览面板显示素材视频 + 标题叠加 - [x] 修改标题文字/样式时实时变化 - [x] 播放/暂停按钮、进度条、片段指示器正常 - [x] TypeScript 检查通过
xiaoxia added 1 commit 2026-08-25 10:52:32 +08:00
fix: video fallback 路径补充标题CSS叠加层
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 47s
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m52s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m4s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m54s
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m55s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m8s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m11s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m3s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m34s
AI Code Review / AI Code Review (pull_request) Successful in 4m35s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m16s
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 Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web 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 14s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 40s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m34s
9d073193d8
FrontendPreviewPlayer 的 useWebCodecs 硬编码为 false,实际走 video
fallback 路径,但该路径只渲染了 video 元素,没有渲染标题叠加层,
导致预览画面看不到标题。

在 video 元素之后、播放按钮之前加入绝对定位的标题 div,
支持 position/size/font/color/bold/italic/stroke/shadow 全部样式。

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1491 | | 预览链接 | [https://pr-1491.preview.xiaoxiajianji.com](https://pr-1491.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot approved these changes 2026-08-25 10:55:34 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-25 10:55:34 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
Collaborator

【阻塞级判定】

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

📊 审查概览

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

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

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

  1. [FrontendPreviewPlayer.tsx: 415-421] textShadow 逻辑可读性优化

    • 具体内容:当前使用数组 filter(Boolean)join(", ") 的方式构建 textShadow 字符串虽然功能正确,但稍显冗长且每次渲染都会重新计算数组。建议提取为常量或使用简单的字符串拼接逻辑,以提高代码可读性和微小的性能优化。
  2. [FrontendPreviewPlayer.tsx: 401-405] 硬编码魔法值提取

    • 具体内容:位置偏移量(如 10%50%15%)直接硬编码在 JSX 中。建议将这些数值提取为组件顶部的常量(如 TITLE_POSITION_OFFSETS),便于后续统一调整布局和维护。

良好实践

  • 安全性:直接使用 JSX 插值 {titleSettings.title} 渲染文本,React 默认会进行转义,有效防止 XSS 攻击。
  • 用户体验:添加了 pointerEvents: "none",确保标题叠加层不会阻挡用户对下方视频元素的点击交互。
  • 健壮性:使用了可选链 titleSettings?.title 和默认值(如 || "思源黑体"),有效避免了空指针引用导致的渲染崩溃。
  • 样式处理:使用了 wordBreak: "break-word",防止长标题溢出容器破坏布局。

格式检查通过 | 逻辑审查通过 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-08-25 02:57:06 | 模型:

### 【阻塞级判定】 - 是否存在阻塞级问题:否 - 阻塞级问题数量:0 个 ### 📊 审查概览 - 整体评价:通过 - 建议级问题数量:2 个 ### 🔴 阻塞级问题(必须修复) 无 ### 💡 改进建议(不阻塞合并) 1. **[FrontendPreviewPlayer.tsx: 415-421] textShadow 逻辑可读性优化** - 具体内容:当前使用数组 `filter(Boolean)` 再 `join(", ")` 的方式构建 `textShadow` 字符串虽然功能正确,但稍显冗长且每次渲染都会重新计算数组。建议提取为常量或使用简单的字符串拼接逻辑,以提高代码可读性和微小的性能优化。 2. **[FrontendPreviewPlayer.tsx: 401-405] 硬编码魔法值提取** - 具体内容:位置偏移量(如 `10%`、`50%`、`15%`)直接硬编码在 JSX 中。建议将这些数值提取为组件顶部的常量(如 `TITLE_POSITION_OFFSETS`),便于后续统一调整布局和维护。 ### ✅ 良好实践 - **安全性**:直接使用 JSX 插值 `{titleSettings.title}` 渲染文本,React 默认会进行转义,有效防止 XSS 攻击。 - **用户体验**:添加了 `pointerEvents: "none"`,确保标题叠加层不会阻挡用户对下方视频元素的点击交互。 - **健壮性**:使用了可选链 `titleSettings?.title` 和默认值(如 `|| "思源黑体"`),有效避免了空指针引用导致的渲染崩溃。 - **样式处理**:使用了 `wordBreak: "break-word"`,防止长标题溢出容器破坏布局。 --- ✅ 格式检查通过 | ✅ 逻辑审查通过 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-25 02:57:06 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
auto-approve-bot merged commit 5f87bede1a into develop 2026-08-25 11:03:28 +08:00
auto-approve-bot deleted branch fix/title-overlay-video-fallback 2026-08-25 11:03:29 +08:00

🗑️ 预览环境已清理

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

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

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