From 7e4adf2a1c2172984f2c0f3767a160f4c4fa2965 Mon Sep 17 00:00:00 2001 From: chengma Date: Mon, 10 Aug 2026 19:39:13 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=BD=92=E6=A1=A3=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#121?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/121-admin-pdd已采集商品重新采集.md | 58 ++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 docs/task/121-admin-pdd已采集商品重新采集.md diff --git a/docs/task/121-admin-pdd已采集商品重新采集.md b/docs/task/121-admin-pdd已采集商品重新采集.md new file mode 100644 index 0000000..2bd99e1 --- /dev/null +++ b/docs/task/121-admin-pdd已采集商品重新采集.md @@ -0,0 +1,58 @@ +# 121 Admin:允许已采集 PDD 商品明确重新采集 + +- 类型:缺陷 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 Admin 四模块可用闭环 +- 状态:已完成 +- 日期:2026-08-10 +- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/121 + +## 背景与目标 + +PDD 商品详情虽然显示“重新采集”,但原先复用普通批量采集入口。普通入口会按既有规则 +跳过已采集商品,因此不会创建任务,“采集采购”模块也没有对应记录。本任务让详情页的 +明确重新采集操作可以创建任务,同时保留批量入口的防误重采规则。 + +## 最终方案 + +- 增加独立的 `/pdd/recollect` Web 入口和单商品 Service 方法。 +- Repository 使用条件更新原子占用状态,允许 `collected`、`pending`、`failed` 和超时 + `collecting` 进入采集中;未超时的 `collecting` 不重复建任务。 +- 重新采集只更新状态并插入任务,不清空标题、店铺、规格、价格和采集时间;Client 成功 + 提交后继续由原有结果提交逻辑覆盖。 +- 详情弹窗允许选择当前账号可见的 Client,默认不指定;服务端重新校验可见范围。 +- 普通批量 `/pdd/collect` 及其“已采集商品跳过”规则保持不变。 + +实现与建单方案一致,无数据库迁移,不改变 Client 四接口。 + +## 改了哪些 + +- `admin/repository/pdd.go`:增加重新采集专用的原子状态占用方法。 +- `admin/service/pdd.go`:增加单商品重新采集事务编排、权限校验和任务创建。 +- `admin/handler/web/pdd.go`、`admin/handler/web/web.go`:增加详情重采处理器和路由,并加载可选 Client。 +- `admin/templates/pdd/edit_modal.html`:详情按钮改用独立入口,增加执行客户端选择和旧结果保留提示。 +- `admin/service/pdd_page_test.go`、`admin/main_test.go`:增加重采成功、防重复、越权回滚和模板入口测试。 +- `docs/admin/01-requirements.md`、`docs/admin/05-ui-specification.md`:记录稳定业务和界面规则。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 已采集商品明确重采时创建一条任务并进入采集中 | 通过 | +| 任务创建后旧标题、规格、价格和采集时间仍保留 | 通过 | +| 连续点击不会产生第二条未超时任务 | 通过 | +| 失败和超时状态仍可按状态条件重新创建 | 通过 | +| 普通批量入口继续跳过已采集商品 | 通过 | +| 不可见 Client 被拒绝且状态、任务完整回滚 | 通过 | +| 不修改数据库结构和 Client 四接口 | 通过 | +| Go build、test、vet 通过 | 通过 | + +## 测试 + +- 执行的命令:`GOTOOLCHAIN=go1.23.0 go build ./...`、`go test ./... -count=1`、`go vet ./...`、`git diff --check` +- 结果:Admin 全部包构建成功,全部自动化测试通过,vet 和差异检查无报错。 +- **没验证到的部分**:未在真实浏览器中人工点击详情弹窗;未让真实 Client 领取并完成本次重新采集任务。 + +## 相关提交 + +- `546d9ef` fix: 允许已采集 PDD 商品重新采集 (#121)