feat(generate): 自动匹配模式删除「AI 已选素材」展示 #1555

Merged
auto-approve-bot merged 1 commits from feat/remove-smartmatch-results into develop 2026-08-30 15:56:01 +08:00
Owner

背景

产品决策:Step2 选择素材页切到「选择视频库自动匹配」后,AI 匹配完展示的「AI 已选素材 (N个)」卡片列表(全选/清空/卡片勾选/汇总条)不需要向用户展示。仅删除前端展示,底层匹配和提交逻辑一律不动。

改动

SmartMatchResults.tsx(重写)

  • 删除「AI 已选素材 (N个)」整块结果区:标题栏(全选/清空按钮)、SmartMatchCard 素材卡片网格、底部「已选 N 个素材 / 预计总时长」汇总条
  • 保留匹配中加载态(「AI 正在为你选择素材…」)和未匹配空态(「点击让 AI 帮你选…」)
  • 匹配成功后改为一行轻量成功提示:「 AI 已帮你选好素材,可直接进入下一步」(数量提示已有 toast,不重复)
  • props 从 9 个瘦身为 2 个(matching / hasMatched)

useSmartMatch.ts / useStep2Materials.ts

  • 删除仅服务于结果展示的 handleToggleSmartSelecthandleSelectAllMatchedhandleClearSmartSelectsmartMatchedResultssmartSelectedTotalDuration
  • 完整保留:匹配成功 → onSmartSelectedIdsChange(matchedIds) 自动全量选中、换一批/重新匹配(handleRefreshMatch)、已用尽素材过滤、空结果/接口失败回退全选、toast 提示
  • smartSelectedIds 状态仍由 GeneratePage 持有,草稿自动保存(asset_ids)与 clips 提交(createClipsFromAssets)链路完全不变 → 生成视频实际使用的素材 id 不变

其他

  • 删除无引用的 SmartMatchCard.tsx(smoke 测试导入同步移除)
  • CSS 清理 results/header/title/actions/grid/card/thumb/check/duration/info/name/score/reason/summary 等死样式;新增 .xx-smart-match-success.xx-link-btn 因 AiTitleGenerator 仍在使用予以保留
  • 手动选择模式(ManualMaterialList)完全不受影响

验收

  • 自动匹配模式点「让 AI 帮你选」/「换一批」→ loading → toast 提示已选 N 个 → 页面只显示成功提示,不出现素材卡片列表,可直接进下一步
  • 手动选择模式功能不变
  • 生成提交参数(asset_ids / clips)不变

测试

  • tsc --noEmit / ESLint --max-warnings=0 / prettier
  • 全量单测 604 passed / 4 skipped(134 文件)
## 背景 产品决策:Step2 选择素材页切到「选择视频库自动匹配」后,AI 匹配完展示的「AI 已选素材 (N个)」卡片列表(全选/清空/卡片勾选/汇总条)不需要向用户展示。**仅删除前端展示,底层匹配和提交逻辑一律不动。** ## 改动 ### SmartMatchResults.tsx(重写) - 删除「AI 已选素材 (N个)」整块结果区:标题栏(全选/清空按钮)、SmartMatchCard 素材卡片网格、底部「已选 N 个素材 / 预计总时长」汇总条 - **保留**匹配中加载态(「AI 正在为你选择素材…」)和未匹配空态(「点击让 AI 帮你选…」) - 匹配成功后改为一行轻量成功提示:「✅ AI 已帮你选好素材,可直接进入下一步」(数量提示已有 toast,不重复) - props 从 9 个瘦身为 2 个(matching / hasMatched) ### useSmartMatch.ts / useStep2Materials.ts - 删除仅服务于结果展示的 `handleToggleSmartSelect`、`handleSelectAllMatched`、`handleClearSmartSelect`、`smartMatchedResults`、`smartSelectedTotalDuration` - **完整保留**:匹配成功 → `onSmartSelectedIdsChange(matchedIds)` 自动全量选中、换一批/重新匹配(handleRefreshMatch)、已用尽素材过滤、空结果/接口失败回退全选、toast 提示 - smartSelectedIds 状态仍由 GeneratePage 持有,草稿自动保存(asset_ids)与 clips 提交(createClipsFromAssets)链路完全不变 → **生成视频实际使用的素材 id 不变** ### 其他 - 删除无引用的 `SmartMatchCard.tsx`(smoke 测试导入同步移除) - CSS 清理 results/header/title/actions/grid/card/thumb/check/duration/info/name/score/reason/summary 等死样式;新增 `.xx-smart-match-success`;`.xx-link-btn` 因 AiTitleGenerator 仍在使用予以保留 - 手动选择模式(ManualMaterialList)完全不受影响 ## 验收 - 自动匹配模式点「让 AI 帮你选」/「换一批」→ loading → toast 提示已选 N 个 → 页面只显示成功提示,不出现素材卡片列表,可直接进下一步 - 手动选择模式功能不变 - 生成提交参数(asset_ids / clips)不变 ## 测试 - tsc --noEmit ✅ / ESLint --max-warnings=0 ✅ / prettier ✅ - 全量单测 604 passed / 4 skipped(134 文件)✅
xiaoxia added 1 commit 2026-08-30 15:46:58 +08:00
feat(generate): 自动匹配模式不再展示AI已选素材明细,匹配/提交逻辑不变
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 1s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
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 / 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 / ACR Image Cleanup (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 / Check if frontend-only change (pull_request) Successful in 2m37s
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
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 3m11s
AI Code Review / AI Code Review (pull_request) Successful in 3m13s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m28s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 4m31s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m41s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m16s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m23s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m38s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 5m22s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 6m58s
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) Successful in 24s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 4m35s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 5m5s
028ebc7484
- SmartMatchResults 删除「AI 已选素材(N个)」标题栏(全选/清空)、
  素材卡片网格、已选汇总条;匹配成功改为一行轻量提示
  「 AI 已帮你选好素材,可直接进入下一步」,保留 loading/空态
- 删除仅服务于结果展示的 handleToggleSmartSelect/handleSelectAllMatched/
  handleClearSmartSelect/smartMatchedResults/smartSelectedTotalDuration
- 保留 smartSelectedIds 自动全量选中、换一批/重新匹配、草稿保存与
  clips 提交链路,生成提交的素材 id 完全不变
- 删除无引用的 SmartMatchCard.tsx 及相关 CSS(xx-link-btn 因
  AiTitleGenerator 仍在使用予以保留)
- 手动选择模式不受影响
Collaborator

代码审查结果 - PR #1555

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

  1. apps/web/src/pages/generate/hooks/useStep2Materials.ts 第189行:移除了 smartSelectedIds 的返回,导致下游组件获取不到选中 ID 列表
    • 原因:在 useStep2Materials 的返回对象中,PR 删除了 smartSelectedIds: smartMatch.smartSelectedIds 这一行。然而,在 Step2MaterialSelect.tsx 第 78 行,代码依然尝试将 m.selectedIds 传递给 MaterialList 组件。
    • 后果m.selectedIds 将为 undefined,导致 MaterialList 无法正确渲染已选素材的选中状态(复选框不亮),或者如果组件内部对 undefined 进行遍历操作可能导致运行时崩溃。

💡 建议(0个可选)


格式检查通过 | 逻辑审查需修改 | 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-08-30 07:50:12 | 模型:

## 代码审查结果 - PR #1555 ### ⚠️ 问题(1个需要修改) 1. **apps/web/src/pages/generate/hooks/useStep2Materials.ts 第189行**:移除了 `smartSelectedIds` 的返回,导致下游组件获取不到选中 ID 列表 - **原因**:在 `useStep2Materials` 的返回对象中,PR 删除了 `smartSelectedIds: smartMatch.smartSelectedIds` 这一行。然而,在 `Step2MaterialSelect.tsx` 第 78 行,代码依然尝试将 `m.selectedIds` 传递给 `MaterialList` 组件。 - **后果**:`m.selectedIds` 将为 `undefined`,导致 `MaterialList` 无法正确渲染已选素材的选中状态(复选框不亮),或者如果组件内部对 `undefined` 进行遍历操作可能导致运行时崩溃。 ### 💡 建议(0个可选) --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-08-30 07:50:12 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-08-30 15:52:22 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit dd71b644c0 into develop 2026-08-30 15:56:01 +08:00
auto-approve-bot deleted branch feat/remove-smartmatch-results 2026-08-30 15:56:01 +08:00

🗑️ 预览环境已清理

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

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

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