fix(#1777): Step2素材库只显示视频库 + 失效模板运行时自动回退 #1780

Merged
auto-approve-bot merged 3 commits from fix/issue-1777-material-kind-template-fallback into develop 2026-09-08 00:07:18 +08:00
Owner

修复内容

Issue #1777:智能剪辑 Step2 两个前端问题:

  1. 「选择视频库」下拉混入配音库/图片库(接口未按 kind 过滤);
  2. 选中已删除/无片段配置的模板时,创建片段 400/404 页面卡死无反馈。

改动

  1. 素材库 kind=video 过滤getAssetLibraries(kind) 支持类型参数,Step2 使用独立 queryKey ["asset-libraries","video"] 拉取,API 层 + hook 层双重过滤;无视频库时展示引导空状态。配音/图片选择器不受影响(voice 页面 queryFn 调用方式同步修正)。
  2. 失效模板运行时回退(新增 templateFallback.ts 纯函数 + handleInvalidTemplate):
    • 404 必判模板失效;400 仅文案含「片段配置」才判定;422 命中片段/模板字段才判定——严格区分素材参数类错误,不误回退;
    • 失效时自动切到第一个有效模板 + toast「原模板已失效,已自动切换」;无有效模板时清空选择并引导去模板编辑器创建;
    • 手动选择优先,自动逻辑不覆盖;同一失效模板只提示一次;
    • selectedTemplate 纯内存态,不写 localStorage/sessionStorage/URL;
    • from-assets 调用通过 _silentErrorToast 抑制全局错误 toast,避免与回退提示重复弹窗。
  3. 保留 #1772 逻辑:validOnly=true 列表过滤继续生效,本 PR 补的是「运行时兜底」。

测试

  • 新增 24 个测试:templateFallback 纯函数 15 个 + useTemplateSelection hook 6 个 + useMaterialLibrary hook 3 个
  • 全量 746 passed / 4 skipped,tsc --noEmit 通过,vite build 通过,eslint(改动文件)无告警,prettier 已格式化

关联

  • 与 #1772(列表 valid_only 过滤)、#1779(后端 404/422 语义 + 双表收敛)配套:#1772 管列表不展示、#1779 管报错语义、本 PR 管前端自动兜底。三者可独立合并。

Closes #1777

## 修复内容 Issue #1777:智能剪辑 Step2 两个前端问题: 1. 「选择视频库」下拉混入配音库/图片库(接口未按 kind 过滤); 2. 选中已删除/无片段配置的模板时,创建片段 400/404 页面卡死无反馈。 ### 改动 1. **素材库 kind=video 过滤**:`getAssetLibraries(kind)` 支持类型参数,Step2 使用独立 queryKey `["asset-libraries","video"]` 拉取,API 层 + hook 层双重过滤;无视频库时展示引导空状态。配音/图片选择器不受影响(voice 页面 queryFn 调用方式同步修正)。 2. **失效模板运行时回退**(新增 `templateFallback.ts` 纯函数 + `handleInvalidTemplate`): - **404** 必判模板失效;**400** 仅文案含「片段配置」才判定;**422** 命中片段/模板字段才判定——严格区分素材参数类错误,不误回退; - 失效时自动切到第一个有效模板 + toast「原模板已失效,已自动切换」;无有效模板时清空选择并引导去模板编辑器创建; - 手动选择优先,自动逻辑不覆盖;同一失效模板只提示一次; - `selectedTemplate` 纯内存态,不写 localStorage/sessionStorage/URL; - from-assets 调用通过 `_silentErrorToast` 抑制全局错误 toast,避免与回退提示重复弹窗。 3. **保留 #1772 逻辑**:validOnly=true 列表过滤继续生效,本 PR 补的是「运行时兜底」。 ## 测试 - 新增 24 个测试:templateFallback 纯函数 15 个 + useTemplateSelection hook 6 个 + useMaterialLibrary hook 3 个 - 全量 **746 passed / 4 skipped**,tsc --noEmit 通过,vite build 通过,eslint(改动文件)无告警,prettier 已格式化 ## 关联 - 与 #1772(列表 valid_only 过滤)、#1779(后端 404/422 语义 + 双表收敛)配套:#1772 管列表不展示、#1779 管报错语义、本 PR 管前端自动兜底。三者可独立合并。 Closes #1777
xiaoxia added 2 commits 2026-09-07 23:36:48 +08:00
fix(#1777): Step2素材库只显示视频库+失效模板运行时自动回退
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 3s
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 / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
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 / 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 / Retag skipped Staging Web 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 / Staging E2E 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 1m51s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 2m3s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m2s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m10s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m12s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m48s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m55s
AI Code Review / AI Code Review (pull_request) Successful in 6m47s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m41s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 16m40s
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Failing after 4s
e062e18bd0
- 素材库选择器按 kind=video 拉取(queryKey 独立缓存),
  API层+hook层双重过滤,配音库/图片库不再混入视频库下拉;
  无视频库时展示引导空状态
- 新增 templateFallback 纯函数:404 必判模板失效,
  400/422 按片段配置语义严格判定,避免误判素材参数错误
- useTemplateSelection 暴露 handleInvalidTemplate:失效时自动切到
  第一个有效模板并 toast,无有效模板时清空并引导创建;
  手动选择优先;selectedTemplate 纯内存不持久化
- from-assets 失败触发回退,静默全局错误 toast 防重复弹窗
- 修复 getAssetLibraries 加 kind 参数后 voice 页面 queryFn 类型不匹配
- 新增 24 个测试(纯函数+两个 hook),746 单测全过,tsc/build 通过

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #1780 | | 预览链接 | [https://pr-1780.preview.xiaoxiajianji.com](https://pr-1780.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-09-07 23:56:58 +08:00
style: #1777 prettier 格式化 clips.ts 与 useGenerateFormState/index.ts
CI/CD Pipeline / Check push changed paths (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 / 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 / Build Staging Worker Image (pull_request) Has been skipped
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 / Retag skipped Staging API 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 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 / PR Build Web Image (pull_request) Successful in 1m2s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m13s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m29s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m25s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m53s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 1m54s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 3m25s
AI Code Review / AI Code Review (pull_request) Successful in 6m24s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 9m27s
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 / 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 2s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 8m45s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 7s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 29s
d31b25d8c3
auto-approve-bot approved these changes 2026-09-07 23:58:29 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-09-07 23:58:29 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit 01026156ae into develop 2026-09-08 00:07:18 +08:00
auto-approve-bot deleted branch fix/issue-1777-material-kind-template-fallback 2026-09-08 00:07:19 +08:00

🗑️ 预览环境已清理

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

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

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