refactor(asset-library): 深化拆分,抽离上传区/网格区/弹窗集合 #994

Closed
xiaoxia wants to merge 5 commits from refactor/asset-library-deepen into develop
Owner

变更内容

AssetLibrary 拆分深化:

新增组件

  • AssetUploadZone (41行): 上传拖拽区域
  • AssetGridSection (93行): 素材网格 + 加载/错误/空状态
  • AssetModals (177行): 7个弹窗 + Drawer 集合

缩减情况

  • 主文件:307 → 243 行(-21%)
  • 仅保留 Hook 组装与整体布局

验证

  • 纯重构,无逻辑变更

自动生成 PR

## 变更内容 AssetLibrary 拆分深化: ### 新增组件 - **AssetUploadZone** (41行): 上传拖拽区域 - **AssetGridSection** (93行): 素材网格 + 加载/错误/空状态 - **AssetModals** (177行): 7个弹窗 + Drawer 集合 ### 缩减情况 - 主文件:307 → 243 行(-21%) - 仅保留 Hook 组装与整体布局 ### 验证 - 纯重构,无逻辑变更 --- _自动生成 PR_
xiaoxia added 1 commit 2026-07-27 00:46:35 +08:00
refactor(asset-library): 深化 AssetLibrary 拆分,抽离上传区/网格区/弹窗集合
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 35s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 45s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m19s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m7s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m37s
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 / PR Build Worker Image (pull_request) Successful in 44s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m5s
AI Code Review / AI Code Review (pull_request) Successful in 1m22s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 42s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 53s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m58s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m49s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 27s
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 / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
dd7452953e
- 抽 AssetUploadZone 组件: 上传拖拽区域
- 抽 AssetGridSection 组件: 素材网格 + 加载/错误/空状态
- 抽 AssetModals 组件: 7 个弹窗 + Drawer 集合
- 主文件 307→243 行 (-21%),仅保留 Hook 组装与整体布局
xiaoxia added 1 commit 2026-07-27 12:34:32 +08:00
Merge branch 'develop' into refactor/asset-library-deepen
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 28s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m22s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m9s
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 / Validate - Migration (alembic) (pull_request) Successful in 1m33s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 41s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m31s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 57s
AI Code Review / AI Code Review (pull_request) Successful in 1m27s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m16s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 37s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 2m37s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 8m33s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
f5509ffc27
xiaoxia added 1 commit 2026-07-27 13:17:25 +08:00
fix: 修复 AssetModals 类型不匹配(tagMode/smartView/result)
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Successful in 42s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 40s
d85b181654
xiaoxia added 1 commit 2026-07-27 13:17:39 +08:00
fix: 修复 AssetLibrary 类型不匹配(tagMode/smartView)
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Code Quality (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 43s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 43s
e99f80f333
xiaoxia added 1 commit 2026-07-27 13:19:21 +08:00
fix: 修复 AssetModals newLibKind 类型为 AssetKind
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 8s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m55s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m19s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 33s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m17s
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 / PR Build Worker Image (pull_request) Successful in 28s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 54s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m11s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 37s
AI Code Review / AI Code Review (pull_request) Successful in 1m59s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 59s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 3m7s
CI/CD Pipeline / CI Gate (pull_request) 失败: CI/CD Pipeline / Validate - Code Quality (pull_request), CI/CD Pipeline / Frontend Lint (pull_request) [frontend-only]
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
CI/CD Pipeline / Unit 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 / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 19s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 12s
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
c7d814cbc8
Collaborator

代码审查结果 - PR #994

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

  1. apps/web/src/pages/assets/components/AssetModals.tsx 第139、148、157行:批量操作的 confirmLoading 状态共享导致 UI 逻辑错误。

    • 说明BatchTagModalBatchClassifyModalBatchMarkModal 均使用了同一个 batchLoading 状态。如果在“批量打标签”操作进行中(loading=true),用户关闭该弹窗并立即打开“批量改分类”弹窗,后者的按钮也会错误地显示为加载状态,导致用户无法提交操作。
    • 后果:用户体验极差,可能导致误以为系统卡死或无法进行后续操作。
  2. apps/web/src/pages/assets/components/AssetUploadZone.tsx 第38行:UI 提示与实际逻辑不符,缺少文件大小校验。

    • 说明:UI 提示文本明确写着“单文件不超过 2GB”,但在 beforeUploadonUpload 调用前并未对 file.size 进行校验。
    • 后果:用户可能上传超过 2GB 的文件,前端未拦截导致不必要的网络请求消耗,或直到后端才报错,体验不一致。

💡 建议(2个可选)

  1. apps/web/src/pages/assets/AssetLibrary.tsx 第176-177、187-188行:使用了类型断言(as)来绕过类型检查,存在类型安全隐患。

    • 说明tagModebatchSmartView 的状态类型似乎与子组件 AssetModals 期望的严格字面量类型不完全一致。使用 as 强制转换掩盖了类型不匹配的问题。如果父组件状态初始化值不在子组件预期的枚举范围内(例如初始化为空字符串),可能导致运行时子组件渲染异常。
    • 建议:统一父组件 useState 的类型定义,使其与子组件 Props 要求的类型一致,消除类型断言。
  2. apps/web/src/pages/assets/components/AssetUploadZone.tsx 第18行:未使用的 Props 参数。

    • 说明AssetUploadZoneProps 接口中定义了 uploadProgress,且父组件有传值,但组件内部并未使用该变量来展示上传进度(如进度条)。
    • 建议:若暂不需要展示进度,请移除该 Props 定义及父组件传值;若需要展示,请在组件内补充进度条 UI。

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


🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 08:16:00 | 模型:

## 代码审查结果 - PR #994 ### ⚠️ 问题(2个需要修改) 1. **apps/web/src/pages/assets/components/AssetModals.tsx 第139、148、157行**:批量操作的 `confirmLoading` 状态共享导致 UI 逻辑错误。 - **说明**:`BatchTagModal`、`BatchClassifyModal` 和 `BatchMarkModal` 均使用了同一个 `batchLoading` 状态。如果在“批量打标签”操作进行中(loading=true),用户关闭该弹窗并立即打开“批量改分类”弹窗,后者的按钮也会错误地显示为加载状态,导致用户无法提交操作。 - **后果**:用户体验极差,可能导致误以为系统卡死或无法进行后续操作。 2. **apps/web/src/pages/assets/components/AssetUploadZone.tsx 第38行**:UI 提示与实际逻辑不符,缺少文件大小校验。 - **说明**:UI 提示文本明确写着“单文件不超过 2GB”,但在 `beforeUpload` 或 `onUpload` 调用前并未对 `file.size` 进行校验。 - **后果**:用户可能上传超过 2GB 的文件,前端未拦截导致不必要的网络请求消耗,或直到后端才报错,体验不一致。 ### 💡 建议(2个可选) 1. **apps/web/src/pages/assets/AssetLibrary.tsx 第176-177、187-188行**:使用了类型断言(`as`)来绕过类型检查,存在类型安全隐患。 - **说明**:`tagMode` 和 `batchSmartView` 的状态类型似乎与子组件 `AssetModals` 期望的严格字面量类型不完全一致。使用 `as` 强制转换掩盖了类型不匹配的问题。如果父组件状态初始化值不在子组件预期的枚举范围内(例如初始化为空字符串),可能导致运行时子组件渲染异常。 - **建议**:统一父组件 `useState` 的类型定义,使其与子组件 Props 要求的类型一致,消除类型断言。 2. **apps/web/src/pages/assets/components/AssetUploadZone.tsx 第18行**:未使用的 Props 参数。 - **说明**:`AssetUploadZoneProps` 接口中定义了 `uploadProgress`,且父组件有传值,但组件内部并未使用该变量来展示上传进度(如进度条)。 - **建议**:若暂不需要展示进度,请移除该 Props 定义及父组件传值;若需要展示,请在组件内补充进度条 UI。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-27 08:16:00 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->

🚀 预览环境已部署

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

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

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

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

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #994 | | 预览链接 | [https://pr-994.preview.xiaoxiajianji.com](https://pr-994.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia closed this pull request 2026-07-27 16:33:19 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #994 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 8s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m55s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m19s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 33s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m17s
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 / PR Build Worker Image (pull_request) Successful in 28s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 54s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m11s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 37s
AI Code Review / AI Code Review (pull_request) Successful in 1m59s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 59s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 3m7s
CI/CD Pipeline / CI Gate (pull_request) 失败: CI/CD Pipeline / Validate - Code Quality (pull_request), CI/CD Pipeline / Frontend Lint (pull_request) [frontend-only]
ACR Cleanup / ACR Image Cleanup (pull_request_target) Has been cancelled
CI/CD Pipeline / Unit 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 / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 19s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 12s
CI/CD Pipeline / Deploy Production (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 / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.