From 18f3209a62c525ea46006ebd435cd596cdd15a50 Mon Sep 17 00:00:00 2001 From: chengma Date: Mon, 10 Aug 2026 00:50:36 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#74?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/74-pdd批量采集可选客户端.md | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 docs/task/74-pdd批量采集可选客户端.md diff --git a/docs/task/74-pdd批量采集可选客户端.md b/docs/task/74-pdd批量采集可选客户端.md new file mode 100644 index 0000000..c00422c --- /dev/null +++ b/docs/task/74-pdd批量采集可选客户端.md @@ -0,0 +1,57 @@ +# 74 Admin:PDD 批量采集任务支持可选客户端 + +- 类型:需求 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 Admin 四模块可用闭环 +- 状态:已完成,待用户验收 +- 日期:2026-08-10 +- Gitea 工单: + +## 背景与目标 + +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 批量采集支持可选客户端