4.2 KiB
4.2 KiB
代码拆分计划
已完成
✅ 1. 会话过期时间修改
- 位置:
lib/upload-sessions.ts,lib/upload-sessions-redis.ts,app/api/materials/upload/cleanup/route.ts,scripts/cleanup-upload-temp.ts - 修改: 从 24 小时改为 8 小时
- 影响: 所有上传会话现在 8 小时后自动过期
✅ 2. UploadModal.tsx 初步拆分
- 提取文件:
components/upload/upload-constants.ts- 常量定义components/upload/upload-utils.ts- 工具函数components/upload/upload-types.ts- 类型定义hooks/useBatchUpload.ts- 批量上传状态管理 Hook
待拆分的大文件
📦 UploadModal.tsx (3749行 → 目标: <2000行)
建议拆分方案:
-
提取批量上传处理函数 (约800行)
- 创建
components/upload/batch-upload-handlers.ts - 包含:
handleBatchFilesUpload,handleBatchMusicUpload,handleBatchVideoUpload等 - 使用自定义 Hook 管理状态
- 创建
-
提取文件处理函数 (约400行)
- 创建
components/upload/file-handlers.ts - 包含:
handleZipChange,handleDrop,handleBatchFilesAdd等 - 包含拖拽处理逻辑
- 创建
-
提取UI组件 (约1500行)
- 创建
components/upload/BatchFileList.tsx- 批量文件列表组件 - 创建
components/upload/BatchFileItem.tsx- 单个批量文件项组件 - 创建
components/upload/UploadProgress.tsx- 上传进度显示组件 - 创建
components/upload/FileDropZone.tsx- 文件拖拽区域组件
- 创建
-
提取表单字段组件 (约500行)
- 创建
components/upload/CategorySelector.tsx- 分类选择器 - 创建
components/upload/SceneSelector.tsx- 场景选择器 - 创建
components/upload/PreviewImageUploader.tsx- 预览图上传组件
- 创建
拆分后结构:
components/
├── UploadModal.tsx (主组件,约800行)
└── upload/
├── upload-constants.ts ✅
├── upload-utils.ts ✅
├── upload-types.ts ✅
├── batch-upload-handlers.ts (待创建)
├── file-handlers.ts (待创建)
├── BatchFileList.tsx (待创建)
├── BatchFileItem.tsx (待创建)
├── UploadProgress.tsx (待创建)
├── FileDropZone.tsx (待创建)
├── CategorySelector.tsx (待创建)
├── SceneSelector.tsx (待创建)
└── PreviewImageUploader.tsx (待创建)
📦 app/page.tsx (约2354行)
建议拆分方案:
-
提取数据获取逻辑 (约400行)
- 创建
hooks/useMaterials.ts- 素材列表数据管理 - 创建
hooks/useMaterialFilters.ts- 筛选逻辑
- 创建
-
提取转码轮询逻辑 (约300行)
- 创建
hooks/useTranscodePolling.ts- 转码状态轮询
- 创建
-
提取UI组件 (约1000行)
- 创建
components/material-list/MaterialGrid.tsx- 素材网格 - 创建
components/material-list/MaterialCard.tsx- 素材卡片 - 创建
components/material-list/FilterPanel.tsx- 筛选面板
- 创建
📦 app/admin/page.tsx (约2550行)
建议拆分方案:
-
提取数据管理逻辑 (约500行)
- 创建
hooks/useAdminData.ts- 管理员数据管理 - 创建
hooks/useUserManagement.ts- 用户管理逻辑
- 创建
-
提取UI组件 (约1500行)
- 创建
components/admin/UserList.tsx- 用户列表 - 创建
components/admin/MaterialList.tsx- 素材列表 - 创建
components/admin/StatsPanel.tsx- 统计面板 - 创建
components/admin/SystemStatus.tsx- 系统状态
- 创建
拆分优先级
- 高优先级: UploadModal.tsx (最大,影响开发体验)
- 中优先级: app/page.tsx (主页面,使用频繁)
- 中优先级: app/admin/page.tsx (管理页面,功能复杂)
拆分原则
- 按功能拆分: 每个文件负责一个明确的功能
- 保持可维护性: 拆分后的文件应该易于理解和修改
- 避免过度拆分: 不要为了拆分而拆分,保持合理的文件大小
- 保持类型安全: 使用 TypeScript 类型确保拆分后的代码类型安全
下一步行动
建议按以下顺序进行:
- 继续拆分 UploadModal.tsx 的批量上传处理函数
- 提取 UploadModal.tsx 的 UI 组件
- 拆分 app/page.tsx
- 拆分 app/admin/page.tsx