4.5 KiB
4.5 KiB
169 Admin:采购完成后更新顺运宝状态并阻止重复采购
- 类型:缺陷
- 父级大工单:#14
- 所属 MVP / 版本:#15 Admin 四模块可用闭环
- 状态:已完成
- 日期:2026-08-11
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/169
背景与目标
顺运宝明细创建采购任务后,页面原来只识别 pending/assigned/claimed 活动任务。
任务成功进入 succeeded 后,页面会错误回退到“可创建采购任务”,既没有显示采购完成,
也存在通过旧页面或构造请求重复采购的风险。
本任务让顺运宝页面正确显示采购完成和待人工核对状态,并在 Admin 服务端阻止可能已经 下单的明细再次创建采购任务。
最终方案
- Repository 从现有
tasks表实时提供成功、待人工核对和活动采购任务事实,不新增状态列或迁移。 - Service 按“成功 → 待人工核对 → 活动任务 → 其他处理阶段”的优先级计算顺运宝阶段。
succeeded显示“采购完成”和“查看采购结果”;manual_review显示“采购待人工核对” 和禁止重新采购说明。两种状态都不能勾选采购。- 采购任务创建事务内再次检查成功和待人工核对任务;即使绕过页面直接提交,请求也会被拒绝, 任务数量不增加。
failed/cancelled继续沿用现有人工判断后重新创建策略;Client 四接口及结果提交语义不变。- 生产发布没有数据库迁移。部署时首次备份因业务账号没有 tablespace 所需的
PROCESS权限而 不合格,随后使用--no-tablespaces重新生成并校验成功,不合格文件已删除。首次创建发布目录 受临时umask 077影响为 700,导致 systemd203/EXEC;修正目录为 755 后服务恢复,未回滚数据。
改了哪些
admin/repository/syb.go:查询成功、待人工核对和活动采购任务事实。admin/service/syb.go:新增两个处理阶段、筛选、优先级和批量操作能力控制。admin/service/purchase_workflow.go:增加成功/待核对采购任务的服务端重复采购门禁。admin/templates/syb/list.html:完成和待核对状态跳转到对应采购任务列表。admin/service/*_test.go、admin/syb_interaction_template_test.go:覆盖阶段优先级、筛选、 页面动作、伪造请求拒绝和任务数量不增加。docs/admin/01-requirements.md、docs/admin/05-ui-specification.md:记录稳定业务规则和页面反馈。
验收结果
| 验收标准 | 结果 |
|---|---|
| 成功采购任务显示“采购完成”,不能勾选或再次创建采购任务 | 通过 |
| 采购完成可进入采集采购页面查看 PDD 核单结果 | 通过 |
manual_review 显示“采购待人工核对”并禁止重新采购 |
通过 |
| 构造请求仍被服务端拒绝,任务数量不增加 | 通过 |
| 活动任务继续显示“已创建采购任务” | 通过 |
failed/cancelled 现有人工处理策略不变 |
通过 |
| 新阶段筛选、计数和分页正确 | 通过 |
| Client 四接口和提交语义不变 | 通过 |
| 固定 Go 1.23.0 测试、vet 和构建通过 | 通过 |
| 生产已有成功采购无需改数据即可进入新阶段 | 通过;生产存在 2 条关联成功采购任务 |
测试
- 执行的命令:
GOTOOLCHAIN=go1.23.0 go test ./repository ./service . -count=1GOTOOLCHAIN=go1.23.0 go test ./... -count=1GOTOOLCHAIN=go1.23.0 go vet ./...GOTOOLCHAIN=go1.23.0 go build ./...- Linux amd64 交叉编译、SHA-256 核对、systemd、本机 HTTP、公网 HTTPS、schema 版本和生产任务聚合核对。
- 结果:全部自动化测试、vet、构建和差异检查通过。Linux 二进制 SHA-256 为
e6f33c8ebb2edbd91d06bd4942ed2b1035e59323b3cca7eb84cd4882e20159eb,生产服务切换到/opt/cmautobuy/releases/5528b4b/后为 active/enabled;本机根路径返回 303,公网登录页返回 200, schema 为 v12,近期应用启动错误为 0。有效备份为/opt/cmautobuy/backups/autobuy-before-169-20260811T100957Z-notablespaces.sql.gz,权限 600 且 gzip 校验通过。 - 没验证到的部分:未使用生产采购员账号登录后,在真实浏览器人工查看两条成功采购明细的 状态文字和任务详情;生产任务事实、模板动作和阶段推导已分别通过只读数据库核对与自动化测试。
相关提交
5528b4b修复顺运宝采购完成状态与重复采购