feat(#584): 智能素材匹配前端页面框架 #618

Merged
auto-approve-bot merged 2 commits from feat/584-smart-material-match into develop 2026-07-20 08:23:50 +08:00
Owner
No description provided.

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #618 | | 预览链接 | [https://pr-618.preview.xiaoxiajianji.com](https://pr-618.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-19 23:56:51 +08:00
feat(#584): 智能素材匹配前端页面框架
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 / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (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 / Staging API Integration Tests (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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 22s
CI/CD Pipeline / Validate Code Quality And Tests (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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 52s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 2m36s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m40s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m43s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m55s
AI Code Review / AI Code Review (pull_request) Successful in 3m59s
856647a4e5
- 智能剪辑新增智能素材匹配交互:用户输入描述后AI推荐素材
- 支持推荐素材列表展示(匹配度+匹配理由+缩略图+时长)
- 支持勾选/取消勾选、全选/清空、换一批等交互
- auto模式下使用智能匹配选中的素材生成视频
- 生成预览和确认步骤显示智能匹配的素材数量
- 下一步验证:auto模式需选中素材才能继续
- 暂用模拟数据,后端LLM接入后替换
xiaoxia force-pushed feat/584-smart-material-match from 0cca0f4ab8 to 856647a4e5 2026-07-19 23:56:51 +08:00 Compare
Author
Owner

CI 基础设施已修复,但本 PR 的 Frontend Lint 仍为失败状态,属于代码层面的 lint 错误,不是 CI 基础设施问题。

请检查前端 lint 报错并修复后再推送。

CI 基础设施已修复,但本 PR 的 Frontend Lint 仍为失败状态,属于代码层面的 lint 错误,不是 CI 基础设施问题。 请检查前端 lint 报错并修复后再推送。
xiaoxia added 1 commit 2026-07-20 08:19:48 +08:00
fix(#584: 移动SMART_MATCH_REASONS到组件外修复eslint warning
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 / 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 / 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 / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 26s
CI/CD Pipeline / Validate Code Quality And Tests (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
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m3s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 2m12s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m47s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m50s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 4m0s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 20s
AI Code Review / AI Code Review (pull_request) Successful in 6m37s
31da58f153
- 将SMART_MATCH_REASONS常量移到组件外部,消除react-hooks/exhaustive-deps警告
auto-approve-bot approved these changes 2026-07-20 08:22:40 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot merged commit b0573a5e91 into develop 2026-07-20 08:23:50 +08:00
auto-approve-bot deleted branch feat/584-smart-material-match 2026-07-20 08:23:50 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #618 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Collaborator

代码审查结果 - PR #618

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

💡 建议(3个可选)

  1. GeneratePage.tsx 第508行:数组洗牌算法存在偏差

    • 说明sort(() => Math.random() - 0.5) 是一种常见的错误洗牌方法,它无法产生均匀的随机分布,且排序效率较低(O(n log n))。
    • 建议:建议使用 Fisher-Yates (Knuth) 洗牌算法,既保证随机性又能达到 O(n) 的时间复杂度。
  2. GeneratePage.tsx 第533-534行:刷新素材时缺少空结果处理

    • 说明:在 handleRefreshMatch 中,如果计算出的 remaining 数组为空(即所有素材都已展示过),则 picked 为空,最终 smartMatchedResults �为设为空数组。此时界面会直接清空推荐列表,用户在经历 800ms 等待后看不到任何反馈,体验较差。
    • 建议:在计算 remaining 后,判断其长度是否为 0。若为 0,应提示用户“已展示所有推荐素材”或类似信息,并提前 return,避免无意义的等待和状态更新。
  3. GeneratePage.tsx 第1340行:图片 URL 存在潜在 XSS 风险

    • 说明:代码中直接使用 result.asset.thumbnail_url 作为 <img>src 属性。如果 thumbnail_url 的数据来源不可信(例如包含用户输入且未经过滤),攻击者可注入 javascript: 伪协议执行脚本。
    • 建议:确保后端对 thumbnail_url 进行了严格的格式校验(如仅允许 http/https 协议),或者在前端渲染前进行简单的协议白名单校验。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 08:26:24 | 模型:

## 代码审查结果 - PR #618 ### ⚠️ 问题(0个需要修改) 无 ### 💡 建议(3个可选) 1. **GeneratePage.tsx 第508行**:数组洗牌算法存在偏差 - **说明**:`sort(() => Math.random() - 0.5)` 是一种常见的错误洗牌方法,它无法产生均匀的随机分布,且排序效率较低(O(n log n))。 - **建议**:建议使用 Fisher-Yates (Knuth) 洗牌算法,既保证随机性又能达到 O(n) 的时间复杂度。 2. **GeneratePage.tsx 第533-534行**:刷新素材时缺少空结果处理 - **说明**:在 `handleRefreshMatch` 中,如果计算出的 `remaining` 数组为空(即所有素材都已展示过),则 `picked` 为空,最终 `smartMatchedResults` �为设为空数组。此时界面会直接清空推荐列表,用户在经历 800ms 等待后看不到任何反馈,体验较差。 - **建议**:在计算 `remaining` 后,判断其长度是否为 0。若为 0,应提示用户“已展示所有推荐素材”或类似信息,并提前 return,避免无意义的等待和状态更新。 3. **GeneratePage.tsx 第1340行**:图片 URL 存在潜在 XSS 风险 - **说明**:代码中直接使用 `result.asset.thumbnail_url` 作为 `<img>` 的 `src` 属性。如果 `thumbnail_url` 的数据来源不可信(例如包含用户输入且未经过滤),攻击者可注入 `javascript:` 伪协议执行脚本。 - **建议**:确保后端对 `thumbnail_url` 进行了严格的格式校验(如仅允许 http/https 协议),或者在前端渲染前进行简单的协议白名单校验。 --- ✅ 格式检查通过 | ✅ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-20 08:26:24 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
Sign in to join this conversation.