diff --git a/docs/task/186-采购任务追溯与安全重新创建.md b/docs/task/186-采购任务追溯与安全重新创建.md new file mode 100644 index 0000000..e6dbcdd --- /dev/null +++ b/docs/task/186-采购任务追溯与安全重新创建.md @@ -0,0 +1,56 @@ +# 186 Admin:采购任务详情展示蝦皮订单并安全定位重新创建 + +- 类型:需求 +- 父级大工单:#14 +- 所属 MVP / 版本:#15 Admin 四模块可用闭环 +- 状态:已完成 +- 日期:2026-08-12 +- Gitea 工单: + +## 背景与目标 + +采购任务详情原来没有展示已经保存在任务中的蝦皮订单号和顺运宝明细 ID。采购失败或取消后,采购员难以定位原明细,并容易误以为应该直接复制旧任务。本次补齐来源信息和精确导航,让重新创建继续使用原顺运宝采购确认流程。 + +## 最终方案 + +- 采购任务详情增加蝦皮订单号、顺运宝明细 ID、蝦皮商品 ID 和 PDD 商品 ID。 +- “查看原货运单”使用稳定 `syb_id` 深链接,进入顺运宝页面后自动打开原明细。 +- 只有 `failed`、`cancelled` 采购任务显示“重新创建采购任务”;其他状态没有该入口。 +- 重新创建按钮不直接写数据库。系统按 `syb_id` 读取最新明细;仍可采购时自动打开现有采购确认弹窗,不在当前分页时额外准备该条确认数据;已不可采购时改为打开原明细并显示当前阶段原因。 +- 采购确认继续要求选择客户端、核对规格、数量和价格,并复用原有 CSRF、服务端权限、重复任务和采购状态门禁。 +- 深链接参数属于一次性界面状态,不写入模块导航的 `sessionStorage`。 +- UI 采用现有 Admin 的只读信息分组、文字按钮和颜色变量,没有引入新框架或视觉体系。 + +## 改了哪些 + +- `admin/service/task.go`:映射采购来源字段,生成经过 URL 编码的查看和重新确认深链接,限制可见状态。 +- `admin/service/syb.go`:支持按稳定 `syb_id` 读取单条采购确认视图。 +- `admin/handler/web/others.go`:解析深链接,按最新状态准备精确明细或采购确认数据。 +- `admin/templates/task/detail_modal.html`:增加来源信息和两个导航按钮。 +- `admin/templates/syb/list.html`、`admin/static/js/app.js`:支持自动打开精确明细或单条采购确认弹窗。 +- `admin/static/css/app.css`:为文字链接补充与现有主按钮一致的样式。 +- `admin/service/task_test.go`、`admin/service/purchase_workflow_test.go`、`admin/main_test.go`、`admin/syb_interaction_template_test.go`:覆盖字段、状态门禁、URL 编码、分页外确认行和模板交互。 +- `docs/admin/01-requirements.md`、`docs/admin/05-ui-specification.md`:同步产品与界面基线。 + +## 验收结果 + +| 验收标准 | 结果 | +|---|---| +| 采购详情展示四个来源字段,采集任务不显示来源分组 | 通过 | +| 查看入口按 `syb_id` 精确打开原明细 | 通过 | +| 仅失败和取消状态显示重新创建入口 | 通过 | +| 重新创建只进入现有确认流程,不直接创建任务 | 通过 | +| 当前不再可采购时打开明细说明原因,不放宽状态 | 通过 | +| 无数据库迁移、无 Client 接口变化、未改变不可逆安全红线 | 通过 | +| 固定 Go 1.23.0 全量验证通过 | 通过 | + +## 测试 + +- 执行的命令:`node --check static/js/app.js`。 +- 执行的命令:`$env:GOTOOLCHAIN='go1.23.0'; go vet ./...; go build ./...; go test ./... -count=1`。 +- 结果:全部通过。 +- **没验证到的部分**:未使用真实浏览器人工点击深链接和确认焦点,未连接生产数据库,未创建或下发真实采购任务。 + +## 相关提交 + +- `69bcf61` feat: 支持采购任务追溯并安全重新创建 (#186)