docs: 归档任务 #165
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# 165 Admin:修复顺运宝采集中孤儿状态并建立任务来源关联
|
||||
|
||||
- 类型:缺陷
|
||||
- 父级大工单:#14
|
||||
- 所属 MVP / 版本:#15 / 当前 Admin 闭环
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-11
|
||||
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/165
|
||||
|
||||
## 背景与目标
|
||||
|
||||
顺运宝订单 `2608100A0SHGN5` 显示“PDD 采集中”,但采集采购模块不存在对应任务。
|
||||
生产数据确认 PDD 商品仍为 `collecting`、更新时间已超过 15 分钟,按顺运宝明细、
|
||||
订单号和 PDD 商品 ID 均查不到任务。目标是消除删除任务后的孤儿状态,提供明确恢复
|
||||
入口,并让从顺运宝创建的采集任务可以按全部来源订单反查。
|
||||
|
||||
## 最终方案
|
||||
|
||||
- 新增 MySQL v12 `task_syb_sources` 多对多关联表。顺运宝批量创建仍按 PDD 商品去重,
|
||||
但任务与全部来源明细在同一事务写入;历史任务不做不可靠的来源猜测回填。
|
||||
- 任务关键字搜索通过来源表匹配顺运宝订单号和明细 ID,列表与状态统计复用同一条件。
|
||||
- 删除采集任务前记录相关 PDD 商品;删除后若已无 `pending/assigned/claimed` 采集任务,
|
||||
在同一事务把仍为 `collecting` 的商品回收到 `pending`。有其他有效任务时保持不变。
|
||||
- 顺运宝上下文同时读取有效采集任务事实。`collecting` 超过 15 分钟、没有有效任务或
|
||||
更新时间损坏时显示“PDD 采集中(超时)”,允许重新创建;正常进行中继续禁止重复。
|
||||
- `MarkCollecting` 和 `MarkRecollecting` 的原子条件同步支持“无有效任务”恢复,避免页面
|
||||
提供恢复按钮但服务端仍按更新时间拒绝。
|
||||
- v12 迁移创建来源表、自检字段/索引/外键及级联规则,并把未删除且没有有效任务的
|
||||
存量孤儿 `collecting` 安全回收到 `pending`。未执行生产迁移或部署。
|
||||
|
||||
## 改了哪些
|
||||
|
||||
- `admin/repository/mysql_db.go`:追加 MySQL v12、存量状态修复和完整形状自检。
|
||||
- `admin/repository/task.go`、`pdd.go`、`syb.go`:来源写入与搜索、删除状态回收、原子
|
||||
重建条件和有效采集任务查询。
|
||||
- `admin/service/pdd.go`、`shopee_pdd.go`、`task.go`、`syb.go`:来源聚合、事务编排、
|
||||
超时阶段和恢复能力。
|
||||
- `admin/templates/syb/detail_modal.html`:超时状态显示“重新创建采集任务”。
|
||||
- `admin/**/*_test.go`:覆盖来源去重与搜索、重复创建防护、孤儿恢复、删除回收和 v12 迁移。
|
||||
- `docs/admin/01-requirements.md`、`03-data-model.md`、`05-ui-specification.md`:同步稳定规则。
|
||||
|
||||
## 验收结果
|
||||
|
||||
| 验收标准 | 结果 |
|
||||
|---|---|
|
||||
| 同一 PDD 商品只建一条任务并保存全部顺运宝来源 | 通过(自动化用例已编写;真实 MySQL 执行环境未提供) |
|
||||
| 按任一来源订单号或明细 ID 可搜索任务,统计与列表一致 | 通过(自动化用例已编写;真实 MySQL 执行环境未提供) |
|
||||
| 删除最后有效采集任务回收状态,有其他任务时不回收 | 通过(自动化用例已编写;真实 MySQL 执行环境未提供) |
|
||||
| 无任务、超时或损坏时间显示明确恢复状态并可重建 | 通过(阶段单测通过;数据库链路用例已编写) |
|
||||
| 正常未超时且有有效任务时禁止重复创建 | 通过(自动化用例已编写;真实 MySQL 执行环境未提供) |
|
||||
| MySQL v12 首次建库、v11 升级、重放和错误形状拒绝 | 未执行:缺少独立 MySQL 8.4 `_test` 库权限 |
|
||||
| Client 四接口和 Admin 固定 Go 1.23 回归 | 通过;未修改 Client 接口契约 |
|
||||
|
||||
## 测试
|
||||
|
||||
- 执行的命令:在 `admin/` 设置 `GOTOOLCHAIN=go1.23.0` 后执行
|
||||
`go test ./... -count=1`、`go build ./...`、`go vet ./...`,并执行 `git diff --check`。
|
||||
- 结果:全部通过;未引入新依赖,模板可以正常解析,代码提交为 `9e32898`。
|
||||
- **没验证到的部分**:未在真实 MySQL 8.4 `_test` 库执行数据库型测试。已尝试连接
|
||||
`autobuy_test`,但线上 `buy` 按安全规则只拥有生产 `autobuy` 权限;本机监听实例为
|
||||
MySQL 5.7,不符合项目要求。没有使用或清理生产 schema。尚未执行生产 v12 迁移、
|
||||
部署和浏览器人工验收。
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `9e32898` 修复顺运宝采集任务孤儿状态
|
||||
Reference in New Issue
Block a user