3.9 KiB
3.9 KiB
06 任务与重复分析中心
模块职责
覆盖高复杂度的任务记录、批量下载、权限配置和店铺数据重复检查,拆分旧 admin.js 中长函数和多种视图状态,保证任务轮询、下载和分析视图互不污染。
覆盖页面:
- 视频任务记录:
image-video-tasks - 店铺数据记录:
shop-data-crawl-tasks - 店铺数据重复检查:
shop-data-duplicate-check
依赖关系
上游:菜单级页面权限、统一任务状态类型、下载 URL/文件下载适配器、用户和店铺分组选择器。
旧实现:
admin.js:loadImageVideoTasksadmin.js:loadShopDataCrawlTasksadmin.js:loadShopDataDuplicateCheckOverviewadmin.js:loadShopDataDuplicateCheckItemsadmin.js:loadShopDataDuplicateDetailadmin.js:saveImageVideoPermissionsadmin.js:saveShopDataTaskPermissions
Java API 来源:
AdminImageVideoTaskControllerAdminShopDataCrawlTasksControllerAdminShopDataDuplicateCheckController
核心接口:原实现 → 目标实现
| 功能 | 原实现 | 目标实现 |
|---|---|---|
| 视频任务列表 | DOM 卡片、批量下载 | ImageVideoTasksPage.vue + 状态化任务卡片/表格 |
| 视频任务权限配置 | 旧权限 modal | 页面内 Permission Dialog,仍是用户/数据范围配置,不是按钮权限 |
| 店铺数据任务 | 店铺分组卡片、分页 | ShopDataTasksPage.vue + 独立筛选和任务列表状态 |
| 店铺数据批量下载 | 旧脚本直接组装 ZIP 请求 | BatchDownloadController composable + 下载状态面板 |
| 重复检查总览 | loadShopDataDuplicateCheckOverview |
DuplicateCheckPage.vue 的 Overview 区域 |
| 重复检查明细 | loadShopDataDuplicateCheckItems/detail |
Overview、Items、Detail 三个明确的数据源和视图状态 |
| 重复检查导出/导入 | 旧按钮和 modal | 明确的任务状态 Dialog;不阻塞列表刷新 |
内部结构
TaskCenter
├── ImageVideoTasksPage
│ ├── TaskFilter
│ ├── PermissionScopeDialog
│ ├── TaskCardGrid
│ └── BatchDownloadPanel
├── ShopDataTasksPage
│ ├── FilterBar
│ ├── ShopTaskTable/CardView
│ ├── PermissionScopeDialog
│ └── BatchDownloadPanel
└── DuplicateCheckPage
├── FilterBar
├── MetricsCards
├── DistributionView
├── DuplicateItemsTable
└── DetailDrawer
状态隔离:
- 每个页面维护自己的 filter key、page、loading 和 error。
- 重复检查的总览、列表、详情使用独立请求 key。
- 批量下载使用独立 job 状态,不能复用普通列表 loading。
- 页面卸载时取消轮询、清理计时器和 AbortController。
类型映射
| 原字段/概念 | 目标类型 |
|---|---|
| 任务状态字符串/数字 | TaskStatus 归一化枚举 |
task_id、result_id |
TaskId、ResultId,保持字符串兼容 |
| 结果文件 | ResultFileDescriptor |
| 批量下载 | BatchDownloadJob |
| 重复总览 | DuplicateOverview |
| 重复明细 | DuplicateItem、DuplicateDetail |
| 权限范围用户 | PermissionUserItem[] |
迁移/实现注意事项
- 任务列表刷新不能停止正在运行的下载或导出任务。
- 轮询必须有终态、失败退避、可见性降频和卸载清理,不能在组件每次更新时创建新计时器。
- 批量下载必须处理部分失败、响应头文件名、空文件和服务端错误摘要。
- 重复检查的 Overview、Items、Detail 不得使用一个全局
currentData,避免抽屉打开时覆盖主列表。 - 权限配置仍然是现有后端数据范围权限接口,不扩展为按钮 action 权限。
- 大数据导出必须展示等待状态,不得把完整数据加载到浏览器内存后再导出。
- 复杂视图可以保留专用 CSS,但公共表格、Dialog、Drawer、Pagination 使用 Element Plus。