# 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` 支持顺运宝批量创建采集任务