docs: 归档任务 #169
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# 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,导致 systemd `203/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=1`
|
||||
- `GOTOOLCHAIN=go1.23.0 go test ./... -count=1`
|
||||
- `GOTOOLCHAIN=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` 修复顺运宝采购完成状态与重复采购
|
||||
Reference in New Issue
Block a user