Admin:采购任务详情展示蝦皮订单并安全定位重新创建 #186

Closed
opened 2026-08-12 16:18:39 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 Admin 四模块可用闭环
  • 阶段:采购任务追溯与安全恢复

要解决什么

采集采购页面的采购任务详情没有展示任务创建时已经保存的蝦皮订单号和顺运宝明细 ID。采购失败或取消后,采购员难以定位原货运单并按最新数据重新确认采购任务。

做什么 / 不做什么

  • 做:采购任务详情增加来源信息,展示蝦皮订单号、顺运宝明细 ID、蝦皮商品 ID 和 PDD 商品 ID。
  • 做:采购任务详情提供“查看原货运单”,精确定位到对应 syb_id,而不是只按订单号模糊搜索。
  • 做:仅对 failed、cancelled 采购任务显示“重新创建采购任务”,进入原顺运宝明细的采购确认流程。
  • 做:到达顺运宝页面后自动打开精确明细,并由现有采购创建服务按最新关联、规格、数量、价格和客户端重新校验。
  • 做:保持返回路径可预测,按钮使用可见文字并支持键盘操作。
  • 不做:不在任务详情内直接复制或创建新任务,不绕过采购确认,不修改 Client 接口。
  • 不做:pending、assigned、claimed、succeeded、manual_review 不提供重新创建入口。
  • 不做:不新增数据库字段;任务来源读取现有 tasks.order_no、syb_id、goods_id、pdd_goods_id。

怎么做

  • admin/service/task.go:把采购任务现有来源字段映射到详情 View,并只为失败/取消任务生成安全恢复能力和精确顺运宝 URL。
  • admin/templates/task/detail_modal.html:增加“来源信息”只读分组和文字按钮;查看入口始终可用,重新创建入口受服务端状态控制。
  • admin/handler/web/others.go、admin/templates/syb/list.html、admin/static/js/app.js:接收 open_syb_id 深链接,在当前筛选数据中精确打开该行详情;无法定位时保留明确提示和可搜索的订单号。
  • 复用现有 /syb/detail、采购确认表单、CSRF 和 CreatePurchaseTasksWithOptions 服务端门禁,不新增直接创建路由。
  • 同步 Admin 需求与界面规范,增加 Service、模板和交互回归测试。

验收标准

  • 采购任务详情展示蝦皮订单号、顺运宝明细 ID、蝦皮商品 ID 和 PDD 商品 ID;采集任务不显示空来源分组。
  • “查看原货运单”按 syb_id 进入顺运宝页面并自动打开对应明细。
  • 仅 failed、cancelled 采购任务显示“重新创建采购任务”。
  • 重新创建按钮只进入原明细采购确认流程,不直接创建任务,仍要求确认客户端、价格及当前规格。
  • pending、assigned、claimed、succeeded、manual_review 均无重新创建入口。
  • 不新增数据库迁移、不改变 Client 接口和不可逆阶段安全红线。
  • 固定 Go 1.23.0 的 go vet ./...、go build ./...、go test ./... -count=1 全部通过。

怎么验证

从 admin/ 执行:

$env:GOTOOLCHAIN='go1.23.0'
go vet ./...
go build ./...
go test ./... -count=1
Remove-Item Env:GOTOOLCHAIN

自动测试覆盖详情字段、任务状态门禁、URL 编码、深链接精确打开和既有采购服务端校验。浏览器人工验证失败/取消、成功、待人工三类采购任务。

风险和回退

  • 风险:误把可能已下单的任务作为可重建任务。控制:仅 failed/cancelled 显示入口;manual_review/succeeded 永久不显示;入口只导航,现有服务端门禁再次校验。
  • 风险:同一蝦皮订单包含多条明细时定位错误。控制:使用稳定 syb_id 精确定位,订单号仅用于辅助展示和页面筛选。
  • 风险:深链接对应明细已删除。控制:页面明确提示无法定位,不执行任何写操作。
  • 回退:移除来源分组、深链接参数和导航按钮即可;没有迁移和数据回写。

实施记录(2026-08-12)

  • 状态:已完成,待用户验收。
  • 实现提交:69bcf61。
  • 归档提交:6ea45b7。
  • 本地归档:docs/task/186-采购任务追溯与安全重新创建.md。
  • 实现结果:采购详情展示四项来源;按 syb_id 精确打开明细;只有失败/取消任务可进入现有采购确认弹窗;当前已不可采购时只显示原明细原因。
  • 安全边界:详情没有直接创建表单;采购仍由现有 CSRF、客户端权限、规格/数量/价格、成功/待核对/有效任务门禁控制;无数据库迁移和 Client 接口变化。
  • 验证:node --check static/js/app.js、固定 Go 1.23.0 的 go vet ./...、go build ./...、go test ./... -count=1 全部通过。
  • 未验证:真实浏览器人工点击、生产数据库和真实采购任务下发。
  • 实施细化:为保证分页外的 syb_id 仍能进入确认,Handler 额外准备单条最新采购视图;一次性深链接参数明确排除在模块状态持久化之外。
## 基本信息 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#15 Admin 四模块可用闭环 - 阶段:采购任务追溯与安全恢复 ## 要解决什么 采集采购页面的采购任务详情没有展示任务创建时已经保存的蝦皮订单号和顺运宝明细 ID。采购失败或取消后,采购员难以定位原货运单并按最新数据重新确认采购任务。 ## 做什么 / 不做什么 - 做:采购任务详情增加来源信息,展示蝦皮订单号、顺运宝明细 ID、蝦皮商品 ID 和 PDD 商品 ID。 - 做:采购任务详情提供“查看原货运单”,精确定位到对应 `syb_id`,而不是只按订单号模糊搜索。 - 做:仅对 `failed`、`cancelled` 采购任务显示“重新创建采购任务”,进入原顺运宝明细的采购确认流程。 - 做:到达顺运宝页面后自动打开精确明细,并由现有采购创建服务按最新关联、规格、数量、价格和客户端重新校验。 - 做:保持返回路径可预测,按钮使用可见文字并支持键盘操作。 - 不做:不在任务详情内直接复制或创建新任务,不绕过采购确认,不修改 Client 接口。 - 不做:`pending`、`assigned`、`claimed`、`succeeded`、`manual_review` 不提供重新创建入口。 - 不做:不新增数据库字段;任务来源读取现有 `tasks.order_no`、`syb_id`、`goods_id`、`pdd_goods_id`。 ## 怎么做 - `admin/service/task.go`:把采购任务现有来源字段映射到详情 View,并只为失败/取消任务生成安全恢复能力和精确顺运宝 URL。 - `admin/templates/task/detail_modal.html`:增加“来源信息”只读分组和文字按钮;查看入口始终可用,重新创建入口受服务端状态控制。 - `admin/handler/web/others.go`、`admin/templates/syb/list.html`、`admin/static/js/app.js`:接收 `open_syb_id` 深链接,在当前筛选数据中精确打开该行详情;无法定位时保留明确提示和可搜索的订单号。 - 复用现有 `/syb/detail`、采购确认表单、CSRF 和 `CreatePurchaseTasksWithOptions` 服务端门禁,不新增直接创建路由。 - 同步 Admin 需求与界面规范,增加 Service、模板和交互回归测试。 ## 验收标准 - [x] 采购任务详情展示蝦皮订单号、顺运宝明细 ID、蝦皮商品 ID 和 PDD 商品 ID;采集任务不显示空来源分组。 - [x] “查看原货运单”按 `syb_id` 进入顺运宝页面并自动打开对应明细。 - [x] 仅 `failed`、`cancelled` 采购任务显示“重新创建采购任务”。 - [x] 重新创建按钮只进入原明细采购确认流程,不直接创建任务,仍要求确认客户端、价格及当前规格。 - [x] `pending`、`assigned`、`claimed`、`succeeded`、`manual_review` 均无重新创建入口。 - [x] 不新增数据库迁移、不改变 Client 接口和不可逆阶段安全红线。 - [x] 固定 Go 1.23.0 的 `go vet ./...`、`go build ./...`、`go test ./... -count=1` 全部通过。 ## 怎么验证 从 `admin/` 执行: ```powershell $env:GOTOOLCHAIN='go1.23.0' go vet ./... go build ./... go test ./... -count=1 Remove-Item Env:GOTOOLCHAIN ``` 自动测试覆盖详情字段、任务状态门禁、URL 编码、深链接精确打开和既有采购服务端校验。浏览器人工验证失败/取消、成功、待人工三类采购任务。 ## 风险和回退 - 风险:误把可能已下单的任务作为可重建任务。控制:仅 `failed/cancelled` 显示入口;`manual_review/succeeded` 永久不显示;入口只导航,现有服务端门禁再次校验。 - 风险:同一蝦皮订单包含多条明细时定位错误。控制:使用稳定 `syb_id` 精确定位,订单号仅用于辅助展示和页面筛选。 - 风险:深链接对应明细已删除。控制:页面明确提示无法定位,不执行任何写操作。 - 回退:移除来源分组、深链接参数和导航按钮即可;没有迁移和数据回写。 ## 实施记录(2026-08-12) - 状态:已完成,待用户验收。 - 实现提交:`69bcf61`。 - 归档提交:`6ea45b7`。 - 本地归档:`docs/task/186-采购任务追溯与安全重新创建.md`。 - 实现结果:采购详情展示四项来源;按 `syb_id` 精确打开明细;只有失败/取消任务可进入现有采购确认弹窗;当前已不可采购时只显示原明细原因。 - 安全边界:详情没有直接创建表单;采购仍由现有 CSRF、客户端权限、规格/数量/价格、成功/待核对/有效任务门禁控制;无数据库迁移和 Client 接口变化。 - 验证:`node --check static/js/app.js`、固定 Go 1.23.0 的 `go vet ./...`、`go build ./...`、`go test ./... -count=1` 全部通过。 - 未验证:真实浏览器人工点击、生产数据库和真实采购任务下发。 - 实施细化:为保证分页外的 `syb_id` 仍能进入确认,Handler 额外准备单条最新采购视图;一次性深链接参数明确排除在模块状态持久化之外。
Author
Owner

用户于 2026-08-13 明确验收通过。工单已完成归档,现关闭工单。

用户于 2026-08-13 明确验收通过。工单已完成归档,现关闭工单。
ila closed this issue 2026-08-13 15:56:24 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#186