客户要求把真实 tasks.task_id 主键改为两套独立、从 1 开始递增的业务单号:采集任务为 cj1、cj2…,采购任务为 cg1、cg2…。原随机 COL-/PUR- 编号不便于采购员口头沟通和按单号查找。
tasks.task_id
cj1、cj2…
cg1、cg2…
COL-/PUR-
生产迁移前只读核对:共 5 条任务,采集 3 条(1 assigned、2 succeeded),采购 2 条(均 succeeded);没有活动或待人工核对采购。2 条成功采购均已有 PDD 订单编号和下单时间。存在 5 条有效领取历史、1 条顺运宝来源关联和 17 条孤儿领取历史。
做:
task_id
cj1
cg1
task_type + created_at + 旧 task_id
task_claims
不做:
task_sequences(task_type,current_value)
collect/0
purchase/0
MAX()+1
cjN/cgN
tasks
task_syb_sources
current_value
预计修改:
admin/repository/mysql_db.go
admin/repository/task.go
admin/service/pdd.go
admin/service/purchase_workflow.go
_test
cj1…cj3
cg1…cg2
cj4
cg3
Set-Location admin $env:GOTOOLCHAIN='go1.23.0' go test ./... -count=1 go vet ./... go build ./...
另在独立 MySQL 8.4、库名以 _test 结尾的测试库验证首次建库、v12 升级、重复迁移、并发分配和关联完整性。生产部署后只读核对任务编号、任务结果、关联计数、schema、systemd 和公网健康状态。
9ad0675
task_sequences
cjN
cgN
last_value
e80e021
docs/task/172-任务主键改为采集采购独立序号.md
/opt/cmautobuy/releases/9ad0675/cmautobuy-admin
autobuy-after-v13-before-9ad0675-20260812T012426Z.sql.gz
需要用户验收的偏差:计划中的“停服并生成迁移前备份”未能执行,因为生产 v13 已在计划部署前由另一个连接生产库的当前源码进程于 09:16 提前触发。发现后没有重复改号;已逐项确认这正是 #172 迁移且数据完整,再部署匹配 v13 的二进制。该项在验收清单中保持未勾选,其余项目已完成。
按用户要求以当前仓库 HEAD e80e021 重新构建并部署 Admin:
/opt/cmautobuy/releases/e80e021/cmautobuy-admin
autobuy-before-e80e021-20260812T013837Z.sql.gz
go vet ./...
go test ./... -count=1
HEAD 相比上一发布 9ad0675 没有 Admin 源码差异,仅包含规则和 #172 归档提交;此次重新构建用于让线上发布标识与仓库最新 HEAD 一致。
用户于 2026-08-12 明确验收通过。已确认本地归档 docs/task/172-任务主键改为采集采购独立序号.md 存在,现关闭工单。
No dependencies set.
The note is not visible to the blocked user.
基本信息
要解决什么
客户要求把真实
tasks.task_id主键改为两套独立、从 1 开始递增的业务单号:采集任务为cj1、cj2…,采购任务为cg1、cg2…。原随机COL-/PUR-编号不便于采购员口头沟通和按单号查找。生产迁移前只读核对:共 5 条任务,采集 3 条(1 assigned、2 succeeded),采购 2 条(均 succeeded);没有活动或待人工核对采购。2 条成功采购均已有 PDD 订单编号和下单时间。存在 5 条有效领取历史、1 条顺运宝来源关联和 17 条孤儿领取历史。
做什么 / 不做什么
做:
task_id生成规范,不保留额外展示编号。cj1、cg1开始递增。task_type + created_at + 旧 task_id稳定排序,分别重编号并同步所有有效关联。task_claims。不做:
怎么做
task_sequences(task_type,current_value),固定两行collect/0、purchase/0;分配时在创建任务的同一事务内先原子递增再读取,禁止MAX()+1。cjN/cgN的唯一入口,采集和采购 Service 不再调用随机 ID。tasks、task_claims、task_syb_sources;删除孤儿领取历史;校准两套current_value;完成结构、格式、引用完整性和序列自检后才记录 v13。cjN/cgN。预计修改:
admin/repository/mysql_db.goadmin/repository/task.goadmin/service/pdd.goadmin/service/purchase_workflow.go验收标准
cj1,第一条采购任务为cg1,两套序号互不影响。MAX()+1。cjN/cgN,任务字段、状态、结果和创建人不变。task_claims、task_syb_sources全部指向新 ID,孤儿领取历史被清理。_test库迁移和并发测试通过。cj1…cj3、cg1…cg2,下一号分别为cj4、cg3,服务健康。(迁移与健康核对已完成;但 v13 在计划停服备份前被另一个连接生产库的当前源码进程提前触发,只生成了迁移后备份,交由用户验收此偏差。)怎么验证
另在独立 MySQL 8.4、库名以
_test结尾的测试库验证首次建库、v12 升级、重复迁移、并发分配和关联完整性。生产部署后只读核对任务编号、任务结果、关联计数、schema、systemd 和公网健康状态。风险和回退
????(2026-08-12)
9ad0675task_sequences???????????/????/???????????????????cjN/cgN?Admin/Client ??????????last_value? MySQL 8.4 ?????,?????;???current_value????????_test????????????完成记录(待用户验收)
9ad0675e80e021docs/task/172-任务主键改为采集采购独立序号.md/opt/cmautobuy/releases/9ad0675/cmautobuy-adminautobuy-after-v13-before-9ad0675-20260812T012426Z.sql.gz。需要用户验收的偏差:计划中的“停服并生成迁移前备份”未能执行,因为生产 v13 已在计划部署前由另一个连接生产库的当前源码进程于 09:16 提前触发。发现后没有重复改号;已逐项确认这正是 #172 迁移且数据完整,再部署匹配 v13 的二进制。该项在验收清单中保持未勾选,其余项目已完成。
最新 HEAD 重新部署(2026-08-12)
按用户要求以当前仓库 HEAD
e80e021重新构建并部署 Admin:/opt/cmautobuy/releases/e80e021/cmautobuy-adminautobuy-before-e80e021-20260812T013837Z.sql.gz,已通过 gzip 校验go vet ./...、go test ./... -count=1通过HEAD 相比上一发布
9ad0675没有 Admin 源码差异,仅包含规则和 #172 归档提交;此次重新构建用于让线上发布标识与仓库最新 HEAD 一致。用户于 2026-08-12 明确验收通过。已确认本地归档
docs/task/172-任务主键改为采集采购独立序号.md存在,现关闭工单。