feat: 支持批量导入 PDD 商品链接 (#104)
This commit is contained in:
@@ -134,7 +134,8 @@ PDD 商品之所以单独一个模块,是因为它在数据上就是**独立
|
||||
维护拼多多商品档案,并发起采集。这条链路**不依赖蝦皮和顺运宝的任何数据**,
|
||||
可以单独跑通:建商品 → 建采集任务 → Client 领走执行 → 提交结果 → 页面显示已采集。
|
||||
|
||||
**顶部工具条:** 创建按钮、创建采集任务按钮、采集状态筛选、商品 ID/链接搜索框、搜索按钮、删除按钮。
|
||||
**顶部工具条:** 添加 PDD 商品、批量导入、创建采集任务、采集状态筛选、
|
||||
商品 ID/链接搜索框、搜索和删除。
|
||||
|
||||
**中间表格:**
|
||||
|
||||
@@ -158,6 +159,15 @@ PDD 商品之所以单独一个模块,是因为它在数据上就是**独立
|
||||
不接受短链接——`goods_id` 上有 UNIQUE 约束,防重全靠它,
|
||||
拿不到就没法查重,同一个商品会存成好几行。
|
||||
|
||||
**批量导入:** 接受第一列标题为“拼多多链接”的一列式 `.xlsx`,读取第一个
|
||||
非空工作表,忽略空工作表和空行,一次最多 5000 条。逐行复用单条创建的链接解析、
|
||||
去重和软删除恢复规则;已存在有效商品保留采集结果。无效行不阻塞其他合法行,
|
||||
但必须显示 Excel 行号和原因;数据库异常时合法行整体回滚。
|
||||
|
||||
上传只建立商品档案,**不得自动创建采集任务**。导入结果保留本次合法且去重后的
|
||||
完整商品集合,采购员显式确认后才能为这一集合批量创建任务;该集合不受列表分页限制,
|
||||
客户端选择、权限、状态跳过和任务去重继续使用现有规则。
|
||||
|
||||
**双击行打开弹窗:** 查看商品信息,可编辑链接,并显示采回来的规格和价格。
|
||||
|
||||
- `[必须]` **规格和价格必须显示**,这是采集结果的全部价值所在——
|
||||
|
||||
@@ -235,13 +235,14 @@ M 个 SKU,K 行解析失败"),覆盖掉正常的统计文案,并且回
|
||||
### 5.1 工具条
|
||||
|
||||
```text
|
||||
[添加 PDD 商品] [创建采集任务] 采集状态[全部▾] 商品ID/链接[___] [搜索] [删除]
|
||||
[添加 PDD 商品] [批量导入] [创建采集任务] 采集状态[全部▾] 商品ID/链接[___] [搜索] [删除]
|
||||
```
|
||||
|
||||
- **添加 PDD 商品** → 弹窗,只填 PDD 链接。
|
||||
`[必须]` 文案要写全,**不能简写成「创建」**:同一条工具条上还有
|
||||
「创建采集任务」,两个都以「创建」开头,第一次用的人分不清
|
||||
哪个是加商品、哪个是发起采集。
|
||||
- **批量导入** → 弹窗选择一列式 `.xlsx`;上传只建档,不自动发采集任务。
|
||||
- **创建采集任务** → 勾选多行后可用。
|
||||
- **采集状态筛选** → 全部 / 未采集 / 采集中 / 已采集 / 采集失败。
|
||||
`[必须]` 这个筛选是**刚需**,不是锦上添花:这个页面的主要用途是维护
|
||||
@@ -305,7 +306,28 @@ M 个 SKU,K 行解析失败"),覆盖掉正常的统计文案,并且回
|
||||
`[必须]` 报错要说清**下一步怎么办**,例如"请在拼多多 App 的商品页点
|
||||
「分享」→「复制链接」,拿到带 `goods_id=` 的完整链接"。光说"链接无效"操作员不知道改什么。
|
||||
|
||||
### 5.4 编辑弹窗(双击行打开)
|
||||
### 5.4 批量导入弹窗与结果
|
||||
|
||||
弹窗有可见“Excel 文件”标签和持续格式说明:只接受不超过 10MB 的 `.xlsx`;
|
||||
读取第一个非空工作表,第一列标题必须为“拼多多链接”,每行一个带 `goods_id=` 的
|
||||
完整链接,最多 5000 条。空工作表、空行忽略,短链接继续拒绝。
|
||||
|
||||
上传期间提交按钮显示“导入中…”并禁用,防止重复提交。完成后在工具条下方显示:
|
||||
|
||||
```text
|
||||
本次导入结果
|
||||
总行数 N · 新建 N · 已存在 N · 恢复 N · 文件内重复 N · 失败 N
|
||||
[为本次导入商品创建采集任务]
|
||||
```
|
||||
|
||||
- 新建、已存在、软删除恢复和文件内重复必须分开统计;
|
||||
- 失败明细完整显示 Excel 行号、原始内容和可操作原因,长链接允许换行;
|
||||
- 结果不能只靠颜色表达,并使用可访问的文字标题和区域标签;
|
||||
- 本次导入的合法商品超过当前分页时,仍能由结果按钮一次提交完整集合;
|
||||
- 点击结果按钮才打开现有客户端选择确认流程,默认不指定客户端;
|
||||
- 上传完成本身不创建任务,已采集/采集中等跳过规则在最终确认后执行。
|
||||
|
||||
### 5.5 编辑弹窗(双击行打开)
|
||||
|
||||
```text
|
||||
┌─────────────────────────────────────────────┐
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
再加解析失败的用例(确认 `parse_ok=0` 且不瞎猜);
|
||||
- **Excel 导入分行**:商品汇总行 vs SKU 行的判断;
|
||||
- **upsert 不覆盖人工字段**:先填 PDD 链接,再导入一次,断言链接还在;
|
||||
- **PDD 链接批量导入**:空工作表、正确/错误表头、两个允许域名、短链/非 PDD
|
||||
链接、空行、5000 条边界、文件内重复、新建/复用/复活分类和重复导入不覆盖采集结果;
|
||||
- 任务创建校验:商品、采集结果、有效映射、数量、人民币价格上限、客户端可见范围逐条覆盖;
|
||||
- 采购任务重复提交保护、部分业务失败、PDD 换品隔离和采集选项失效;
|
||||
- 金额换算显示(分 ↔ 元),边界值 0 和大额;
|
||||
@@ -106,6 +108,9 @@
|
||||
**禁止用 `template.HTML` 包裹用户可控内容**——商品名、订单号都来自外部。
|
||||
- `[必须]` 上传的 Excel 限制**大小和扩展名**,解析失败要返回明确错误,
|
||||
不能 panic 把整个进程带崩。
|
||||
- `[必须]` PDD 链接导入还要校验 xlsx 文件头和 5000 条非空数据行上限;
|
||||
文件结构错误时不写库,行内容错误时导入其他合法行并列出全部失败明细,
|
||||
数据库异常时本批合法行整体回滚。
|
||||
- `[必须]` 文件名不得直接用于拼路径(路径穿越),落盘时用自己生成的名字。
|
||||
- `[建议]` MVP 只监听 `127.0.0.1`,不对外暴露。要给内网用再单独评估。
|
||||
- `[必须]` 不提供固定默认密码和公开注册;第一位管理员由用户首次初始化。
|
||||
|
||||
Reference in New Issue
Block a user