Files
crawler-plugin/docs/specs/04-asin-data-center.md
T

4.0 KiB
Raw Blame History

04 ASIN 数据中心

模块职责

将旧后台中与 ASIN、品牌库、最低价和商品类目相关的页面重组为 ASIN 数据中心,保持现有 API 语义,改善筛选、导入、导出、详情抽屉和批量操作流程。

覆盖页面:

  • 去重数据汇总:dedupe-total-data
  • 品牌数据库/无效 ASINinvalid-asin-data
  • 查询 ASINquery-asin
  • 最低价 ASINskip-price-asin
  • 商品类目:product-categories

依赖关系

上游:账号菜单权限、用户和数据权限分组;Java 对应控制器和服务;统一下载/上传/进度适配器。

旧实现文件:

  • backend/web_source/admin.htmlpanel-dedupe-total-datapanel-invalid-asin-datapanel-query-asinpanel-skip-price-asinpanel-product-categories
  • backend/static/admin.js:loadDedupeTotalDataloadInvalidAsinDataloadQueryAsinloadSkipPriceAsinloadProductCategories

核心接口:原实现 → 目标实现

领域 原接口族 目标前端模块
去重汇总 /api/admin/dedupe-total-data/export/import/delete-import、进度查询 pages/asin/DedupeRegistryPage.vue
品牌数据库 /api/admin/invalid-asin-data pages/asin/InvalidAsinPage.vue
查询 ASIN /api/admin/query-asins/query-asin/export/import/delete-import pages/asin/QueryAsinPage.vue
最低价 ASIN /api/admin/skip-price-asins/skip-price-asin、导入/删除导入/导出 pages/asin/SkipPricePage.vue
商品类目 /api/admin/product-categories/*/product-category pages/asin/ProductCategoriesPage.vue

API 路径保持 /api/admin/*,本模块只改变请求编排和页面表现,不改变后端业务规则。

内部结构

AsinCenter
├── Registry
│   ├── FilterBar
│   ├── Import/ExportToolbar
│   ├── PaginatedTable
│   └── ImportProgressDialog
├── InvalidAsin
│   ├── FilterBar
│   ├── PaginatedTable
│   └── EditorDialog
├── QueryAsin
│   ├── FilterBar
│   ├── Import/ExportToolbar
│   ├── PaginatedTable
│   └── DetailDrawer
├── SkipPrice
│   ├── FilterBar
│   ├── Import/ExportToolbar
│   ├── PaginatedTable
│   └── DetailDrawer
└── ProductCategories
    ├── SearchBar
    ├── CategoryTreeTable
    └── EditorDialog

共用 composable

  • 分页和查询参数序列化。
  • 文件导入任务轮询。
  • 下载响应头文件名解析。
  • ASIN/国家/店铺选择器。
  • 删除确认。
  • 空结果和错误提示。

类型映射

原字段 目标类型/规则
pagepage_size PaginationQuery
itemstotaltotal_pages PaginatedResult<T>
import_id ImportJobId,字符串化处理,禁止丢失大整数精度
country/country_codes 国家代码联合类型;展示名称由共享字典转换
file_urldownload_url DownloadDescriptor,统一空白值判定
抽屉详情字段 Record<string, unknown> 经页面 schema 归一化,不直接在模板遍历原始 JSON

迁移/实现注意事项

  1. 不把五个页面继续合成一个巨型组件;每个页面独立管理局部筛选、分页和弹窗。
  2. 导入流程必须保留“上传—解析—确认—入队—轮询—终态”的状态语义,不能只根据 HTTP 200 判断成功。
  3. 导出必须通过统一下载适配器处理文件名、空响应、错误响应和大文件等待。
  4. ASIN 详情抽屉只读展示时要做字段白名单和敏感字段脱敏,不能直接 JSON.stringify 全量输出。
  5. 查询条件切换时取消或失效旧请求,避免后返回的旧查询覆盖新结果。
  6. 所有删除操作保留二次确认;后端仍是最终鉴权边界。
  7. 商品类目树的展开状态属于页面局部状态,不放进 Pinia。
  8. 本模块不引入新的后端 v2 API;若 Flask 与 Java 字段存在差异,在 Admin API adapter 中完成归一化。