From 08565d976ed328eac615cba946d9ea58119a6944 Mon Sep 17 00:00:00 2001 From: chengma Date: Tue, 11 Aug 2026 15:00:21 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#153?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/153-顺运宝批量创建PDD采集任务.md | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/task/153-顺运宝批量创建PDD采集任务.md diff --git a/docs/task/153-顺运宝批量创建PDD采集任务.md b/docs/task/153-顺运宝批量创建PDD采集任务.md new file mode 100644 index 0000000..c3af759 --- /dev/null +++ b/docs/task/153-顺运宝批量创建PDD采集任务.md @@ -0,0 +1,62 @@ +# 153 Admin:顺运宝待采集商品支持批量创建 PDD 采集任务 + +- 类型:缺陷 / 需求 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 / 顺运宝采购工作台后续 +- 状态:已完成 +- 日期:2026-08-11 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/153 + +## 背景与目标 + +顺运宝列表的复选框原本直接绑定 `CanPurchase`,导致“PDD 待采集”和“PDD 采集失败” +记录虽然下一步是创建采集任务,却无法勾选,只能逐条打开详情操作。生产只读核对显示, +店铺 `qwg8fkb044` 有 50 条待采集明细、对应 36 个 PDD 商品,问题来自批量动作能力缺失, +不是数据、账号权限或已有采集任务造成。 + +## 最终方案 + +列表行分别输出 `CanCollect` 和 `CanPurchase`,复选框通过 `data-select-action` 携带服务端 +已经判断好的动作能力。PDD 待采集、PDD 采集失败行可参与批量采集;采购就绪行只参与 +采购动作;其余阶段继续禁用,并显示不可批量操作的具体原因。 + +工具条增加“创建 PDD 采集任务”和确认弹窗,可不指定客户端或选择当前账号可见客户端。 +原生 JavaScript 仅按动作能力统计和搬运已选 ID,不自行推导业务状态;混合勾选时,采集与 +采购按钮各自只读取兼容记录。 + +服务端收到顺运宝明细 ID 后重新读取当前上下文并推导阶段,任何不存在或不可采集的明细 +都会使整批请求在写入前失败。通过校验后按 PDD 商品 ID 去重,再复用现有 PDD 批量采集 +服务的事务、状态占用、超时重试、任务幂等和客户端权限规则。 + +## 改了哪些 + +- `admin/service/syb.go`:增加采集/采购动作能力和禁用原因。 +- `admin/service/shopee_pdd.go`:增加顺运宝明细批量校验、PDD 商品去重和任务创建入口。 +- `admin/handler/web/others.go`、`admin/handler/web/web.go`:增加批量 POST 处理及路由。 +- `admin/templates/syb/list.html`:增加批量采集按钮、确认弹窗、客户端选择和动作能力属性。 +- `admin/static/js/app.js`:勾选计数、按钮状态、采购弹窗和采集弹窗支持按动作能力隔离。 +- `admin/service/*_test.go`、`admin/handler/web/others_test.go`、`admin/main_test.go`、`admin/syb_interaction_template_test.go`:覆盖状态能力、去重、整批拒绝、客户端权限、筛选保留、模板和 JavaScript 静态约束。 +- `docs/admin/05-ui-specification.md`:记录顺运宝批量采集和复选框语义。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| PDD 待采集、采集失败可勾选,其他无批量动作阶段禁用并说明原因 | 通过 | +| 批量采集弹窗显示兼容明细数并支持可见客户端或不指定 | 通过 | +| 多条顺运宝明细关联同一 PDD 商品时只创建一个任务 | 通过 | +| 混合勾选时采集和采购动作互不混入 | 通过 | +| 不存在、不可采集或不可见客户端参数整批拒绝且不部分写入 | 通过 | +| 操作后保留店铺、阶段、订单号和页码 | 通过 | +| 单条采集、PDD 批量采集和采购任务既有规则不变 | 通过 | +| Go 1.23 build/test/vet 和 JavaScript 语法检查通过 | 通过 | + +## 测试 + +- 执行的命令:在 `admin/` 使用 `GOTOOLCHAIN=go1.23.0` 执行 `go test ./... -count=1`、`go vet ./...`、`go build ./...`,并执行 `node --check static/js/app.js`、`git diff --check`。 +- 结果:全部通过。 +- **没验证到的部分**:未部署生产,也未对生产店铺 `qwg8fkb044` 实际创建采集任务;避免在用户上线确认前改变线上任务和 PDD 商品状态。未进行登录后的真实浏览器人工点击验收,模板渲染、动作隔离和服务端行为已由自动化测试覆盖。 + +## 相关提交 + +- `b527204` 支持顺运宝批量创建采集任务