3.1 KiB
3.1 KiB
74 Admin:PDD 批量采集任务支持可选客户端
- 类型:需求
- 父级大工单:#14
- 所属 MVP / 版本:#15 Admin 四模块可用闭环
- 状态:已完成,待用户验收
- 日期:2026-08-10
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/74
背景与目标
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.jsgit diff --check
- 结果:固定 Go 1.23.0 的构建、全量测试和静态检查全部通过;JavaScript 语法与 Git 空白检查通过。
- 没验证到的部分:未在浏览器中进行 1366×768 人工点击验收;未连接真实 Client 领取任务。没有执行真实采购或下单。
相关提交
d99c813PDD 批量采集支持可选客户端