fix(generate): Step6 封面上传走 OSS + 标题模板恢复内联大卡片网格 #2061

Merged
auto-approve-bot merged 1 commits from fix/step6-finalize-cover-upload-20260927 into develop 2026-09-27 11:19:04 +08:00
Owner

问题

  1. 保存失败(P0):Step6 本地上传封面只创建 blob: URL,没真正上传到 OSS,点「完成」把 blob URL 发给后端 → 保存失败。
  2. UI 回归(P1):标题样式设置在 Step 页内联铺出所有参数控件(enableTemplates=false),应恢复为9月23日做对的内联大卡片模板网格(enableTemplates=true)。

修复

问题1:封面本地上传链路

  • Step6CoverSettings.tsx:新增 uploadLocalCover,选文件后先用 blob URL 即时预览,同时异步 uploadAssetDirect 直传图片素材库 OSS,拿到真实 URL 后替换;上传期间按钮 loading。
  • 原 setOnUploadFile(()=>null) 改为单视频时注册 uploadLocalCover(批量场景 input ref 绑到 batchUploadRef,不受影响)。
  • GeneratePage.handleFinish 增加 blob: URL 兜底:极端情况下传了 blob URL 就不传 cover_url,让后端回退自动截帧;custom_title 空串传 undefined。

问题2:标题模板恢复内联大卡片网格(9/23 正确方案)

  • GeneratePage.tsx:enableTemplates 从 false 改为 true,启用 TitleStylePanel 的 ttv3 大卡片模式(大卡片网格 + 背景图 + 大字"预览标题文字"真实还原样式 + 系统标签 + 编辑/复制/导出/删除按钮始终可见 + 紫色选中边框 + 右上角「新建模板」按钮 + 点卡片即生效无需保存)。
  • 点「编辑」/「新建模板」时才弹出 TitleTemplateEditor 弹窗(左侧大预览+右侧基础/描边/阴影/背景/排版参数 Tab)—— 这才是弹窗。
  • 删除上一版方向错误新增的 TitleStyleModal 组件(错误方向:选样式走弹窗;正确方向:大卡片直接内嵌,只在编辑/新建时弹窗)。
  • TitleMiniPreview(PR#2059 修复的字体栈/fillStyle)被 FillPreview 和 TitleTemplateEditor 共用,大卡片预览和编辑器预览自动继承字体修复。

验证

  • tsc --noEmit 0 错误
  • eslint 0 error / 0 warning
  • prettier 格式化通过
  • vitest 620 passed / 4 skipped
  • vite build 构建通过

后端零改动。

## 问题 1. **保存失败(P0)**:Step6 本地上传封面只创建 blob: URL,没真正上传到 OSS,点「完成」把 blob URL 发给后端 → 保存失败。 2. **UI 回归(P1)**:标题样式设置在 Step 页内联铺出所有参数控件(enableTemplates=false),应恢复为9月23日做对的内联大卡片模板网格(enableTemplates=true)。 ## 修复 ### 问题1:封面本地上传链路 - Step6CoverSettings.tsx:新增 uploadLocalCover,选文件后先用 blob URL 即时预览,同时异步 uploadAssetDirect 直传图片素材库 OSS,拿到真实 URL 后替换;上传期间按钮 loading。 - 原 setOnUploadFile(()=>null) 改为单视频时注册 uploadLocalCover(批量场景 input ref 绑到 batchUploadRef,不受影响)。 - GeneratePage.handleFinish 增加 blob: URL 兜底:极端情况下传了 blob URL 就不传 cover_url,让后端回退自动截帧;custom_title 空串传 undefined。 ### 问题2:标题模板恢复内联大卡片网格(9/23 正确方案) - GeneratePage.tsx:enableTemplates 从 false 改为 true,启用 TitleStylePanel 的 ttv3 大卡片模式(大卡片网格 + 背景图 + 大字"预览标题文字"真实还原样式 + 系统标签 + 编辑/复制/导出/删除按钮始终可见 + 紫色选中边框 + 右上角「新建模板」按钮 + 点卡片即生效无需保存)。 - 点「编辑」/「新建模板」时才弹出 TitleTemplateEditor 弹窗(左侧大预览+右侧基础/描边/阴影/背景/排版参数 Tab)—— 这才是弹窗。 - 删除上一版方向错误新增的 TitleStyleModal 组件(错误方向:选样式走弹窗;正确方向:大卡片直接内嵌,只在编辑/新建时弹窗)。 - TitleMiniPreview(PR#2059 修复的字体栈/fillStyle)被 FillPreview 和 TitleTemplateEditor 共用,大卡片预览和编辑器预览自动继承字体修复。 ## 验证 - tsc --noEmit 0 错误 - eslint 0 error / 0 warning - prettier 格式化通过 - vitest 620 passed / 4 skipped - vite build 构建通过 后端零改动。
xiaoxia added 1 commit 2026-09-27 11:14:03 +08:00
fix(generate): Step6 本地上传封面走 OSS + 标题样式恢复 Modal 弹窗模式
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 / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration 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
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 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 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 / Frontend Unit Tests (pull_request) Successful in 1m30s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m37s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m36s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m42s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m56s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m5s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m54s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 4m18s
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 / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy 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 3m3s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 30s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 30s
AI Code Review / AI Code Review (pull_request) Successful in 6m29s
41a0724184
- Step6CoverSettings: 单视频本地上传封面时,使用 uploadAssetDirect 实际上传到图片素材库 OSS,拿到真实 URL 再 set;上传期间按钮 loading;原 useEffect 把 setOnUploadFile 置为 null 改为注册 uploadLocalCover 处理函数
- GeneratePage.handleFinish: 增加 blob: URL 兜底过滤(blob: URL 是浏览器本地临时地址,后端无法下载,此时不传 cover_url 让后端回退自动截帧封面,避免 400 保存失败);custom_title 空串不传 undefined
- 新增 TitleStyleModal 组件:标题样式改为弹窗模式(参考封面模板/字幕模板 Modal),内置「爆款预设」+「自定义」两个 Tab,底部取消/保存按钮,保存才提交草稿到父组件
- Step4TitleSettings: 移除内联 TitleStylePanel,改为「标题样式」按钮 + Modal 触发入口

Closes: Step6「完成」按钮保存失败 + 标题设置内联铺参数回归

🚀 预览环境已部署

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

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

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

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

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

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 9c0535da19 into develop 2026-09-27 11:19:04 +08:00
auto-approve-bot deleted branch fix/step6-finalize-cover-upload-20260927 2026-09-27 11:19:06 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #2061 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
xiaoxia changed title from fix(generate): Step6 本地上传封面走 OSS + 标题样式恢复 Modal 弹窗模式 to fix(generate): Step6 封面上传走 OSS + 标题模板恢复内联大卡片网格 2026-09-27 11:41:32 +08:00
Sign in to join this conversation.