refactor(duplication): 拆分 DuplicationUpload 页面(233→85行, -64%) #1064

Closed
xiaoxia wants to merge 3 commits from refactor/duplication-upload into develop
Owner
No description provided.
xiaoxia added 1 commit 2026-07-28 10:33:35 +08:00
refactor(duplication): 拆分 DuplicationUpload 页面为子组件+Hook
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 15s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m27s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m57s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 53s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m25s
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 Web Image (pull_request) Failing after 2m18s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m49s
AI Code Review / AI Code Review (pull_request) Successful in 1m51s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 35s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 51s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m25s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 46m21s
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 / Frontend Unit Tests (pull_request) Failing after 17s
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 / CI Gate (pull_request) Successful in 7s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
8682391379
三阶段重构:
- Phase 1: 提取常量与类型(格式列表/文件大小限制/Toast/Result)
- Phase 2: 拆分为 5 个 UI 子组件 + 1 个业务 Hook
  - UploadZone: 拖拽上传区
  - UploadActions: 上传按钮区
  - UploadProgress: 上传进度
  - UploadResultPanel: 结果展示
  - InfoSidebar: 右侧说明卡
  - useDuplicationUpload: 上传逻辑 Hook
- Phase 3: 主文件 233→85 行(-64%)

保持页面路由路径不变
xiaoxia added 1 commit 2026-07-28 12:57:02 +08:00
fix(duplication): 恢复constants.ts中被误删的共享常量
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 26s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m1s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m27s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m33s
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 / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 3m6s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m18s
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 45s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m28s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m9s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 2m3s
AI Code Review / AI Code Review (pull_request) Successful in 2m51s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 7m14s
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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 9m23s
cea91e7779
auto-approve-bot approved these changes 2026-07-28 13:03:14 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

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

CI全绿,自动审批通过。

CI全绿,自动审批通过。

🚀 预览环境已部署

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

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

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

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

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

代码审查结果 - PR #1064

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

  1. apps/web/src/pages/duplication/DuplicationUpload.tsx:组件中解构获取了 toast 状态,但在 JSX 中完全没有渲染该状态。useDuplicationUpload Hook 中调用了 showToast 更新状态(如文件过大、格式错误、上传失败时),但由于 UI 缺失,用户将看不到任何错误或成功提示,导致交互反馈缺失。

💡 建议(2个可选)

  1. apps/web/src/pages/duplication/constants.ts:该文件中新增的 ACCEPT_FORMATSFORMAT_LIST 等常量与 duplication-upload/constants.ts 中的定义重复。当前代码仅使用了子目录下的常量,父目录的定义属于死代码,建议删除以避免维护混淆。
  2. apps/web/src/pages/duplication/duplication-upload/useDuplicationUpload.tsshowToast 函数中使用了 setTimeout 但未清理。如果用户在 Toast 显示期间(3秒内)离开页面,会导致控制台报错 "Can't perform a React state update on an unmounted component"。建议使用 useEffect 管理 timer 的清理。

格式检查通过 | 逻辑审查需修改 | 性能良好


🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 05:04:45 | 模型:

## 代码审查结果 - PR #1064 ### ⚠️ 问题(1个需要修改) 1. **apps/web/src/pages/duplication/DuplicationUpload.tsx**:组件中解构获取了 `toast` 状态,但在 JSX 中完全没有渲染该状态。`useDuplicationUpload` Hook 中调用了 `showToast` 更新状态(如文件过大、格式错误、上传失败时),但由于 UI 缺失,用户将看不到任何错误或成功提示,导致交互反馈缺失。 ### 💡 建议(2个可选) 1. **apps/web/src/pages/duplication/constants.ts**:该文件中新增的 `ACCEPT_FORMATS`、`FORMAT_LIST` 等常量与 `duplication-upload/constants.ts` 中的定义重复。当前代码仅使用了子目录下的常量,父目录的定义属于死代码,建议删除以避免维护混淆。 2. **apps/web/src/pages/duplication/duplication-upload/useDuplicationUpload.ts**:`showToast` 函数中使用了 `setTimeout` 但未清理。如果用户在 Toast 显示期间(3秒内)离开页面,会导致控制台报错 "Can't perform a React state update on an unmounted component"。建议使用 `useEffect` 管理 timer 的清理。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ✅ 性能良好 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-28 05:04:45 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia added 1 commit 2026-07-28 13:10:56 +08:00
test(duplication): 补充上传页拆分说明注释
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 34s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 52s
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 - Type Check (mypy) (pull_request) Successful in 1m29s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m37s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m18s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m19s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m8s
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 / PR Build Worker Image (pull_request) Successful in 2m4s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 26s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m8s
AI Code Review / AI Code Review (pull_request) Successful in 7m3s
CI/CD Pipeline / CI Gate (pull_request) Successful in 20s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 19s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 8m19s
af849aa767
xiaoxia closed this pull request 2026-07-28 13:23:30 +08:00

🗑️ 预览环境已清理

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

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

🗑️ **预览环境已清理** PR #1064 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Some checks are pending
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 34s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 52s
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 - Type Check (mypy) (pull_request) Successful in 1m29s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m29s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m37s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m18s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m19s
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m8s
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 / PR Build Worker Image (pull_request) Successful in 2m4s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (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 / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 26s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m8s
AI Code Review / AI Code Review (pull_request) Successful in 7m3s
CI/CD Pipeline / CI Gate (pull_request) Successful in 20s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 19s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 8m19s

Pull request closed

Sign in to join this conversation.