Files
cmautobuy/docs/task/74-pdd批量采集可选客户端.md
T

3.1 KiB

74 Admin:PDD 批量采集任务支持可选客户端

背景与目标

PDD 商品页原来批量创建的采集任务全部不指定客户端。现在允许采购员在有明确执行机器时选择客户端,同时保留“不指定(任意客户端可领取)”作为默认值。

最终方案

  • 批量按钮先打开确认弹窗,显示已选商品数和带标签的“执行客户端”下拉框。
  • 默认不指定客户端,任务保持 pending 且 assigned_client 为 NULL。
  • 指定客户端后,任务以 assigned 状态创建,只能由该客户端领取。
  • 管理员可以选择全部已登记客户端;采购员只能选择当前绑定给自己的客户端。服务端在事务内重新校验,不能依赖页面选项。
  • 保留原有不指定客户端的 service/repository 入口,蝦皮和顺运宝采集流程不受影响。
  • 不改数据库结构,不改 Client 四接口;指定客户端离线时不自动改派。

改了哪些

  • admin/templates/pdd/list.html:增加批量采集确认弹窗、默认选项和离线等待说明。
  • admin/static/js/app.js:同步已选数量,并在提交时显示“创建中”反馈。
  • admin/handler/web/pdd.go:加载当前账号可见客户端,解析可选客户端并区分表单错误和内部错误。
  • admin/service/pdd.go:增加带账号权限校验的可选客户端批量创建入口,保留原兼容入口。
  • admin/repository/task.go:按可选客户端写入对应的初始状态和归属。
  • admin/service/pdd_page_test.go:覆盖默认无主、指定领取、越权拒绝和整批回滚。

验收结果

验收标准 结果
批量按钮打开含已选数量和客户端字段的确认弹窗 通过(模板与脚本检查)
默认创建 pending/NULL 任务 通过
指定后创建 assigned/指定客户端 任务 通过
管理员全部可见、采购员只见当前绑定客户端 通过
伪造不可见客户端时整批拒绝且无部分写入 通过
原有去重、状态跳过和超时重建规则保持 通过
蝦皮、顺运宝入口及 Client 四接口不变 通过(保持原调用入口且全量测试通过)
1366×768 可操作、字段有标签和明确反馈 未人工验证;代码检查通过

测试

  • 执行的命令:
    • gofmt -w handler/web/pdd.go service/pdd.go repository/task.go service/pdd_page_test.go
    • $env:GOTOOLCHAIN='go1.23.0'; go build ./...; go test ./... -count=1; go vet ./...
    • node --check static/js/app.js
    • git diff --check
  • 结果:固定 Go 1.23.0 的构建、全量测试和静态检查全部通过;JavaScript 语法与 Git 空白检查通过。
  • 没验证到的部分:未在浏览器中进行 1366×768 人工点击验收;未连接真实 Client 领取任务。没有执行真实采购或下单。

相关提交

  • d99c813 PDD 批量采集支持可选客户端