Files
cmautobuy/docs/task/121-admin-pdd已采集商品重新采集.md
T
2026-08-10 19:39:13 +08:00

3.0 KiB

121 Admin:允许已采集 PDD 商品明确重新采集

  • 类型:缺陷
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 状态:已完成
  • 日期:2026-08-10
  • Gitea 工单:#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)