docs: 归档任务 #52
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# 52 Admin:验证网页登录不影响 Client 四接口
|
||||
|
||||
- 类型:需求
|
||||
- 父级大工单:#14
|
||||
- 所属 MVP / 版本:#15 / MVP
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-09
|
||||
- Gitea 工单:<http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/52>
|
||||
|
||||
## 背景与目标
|
||||
|
||||
#50 和 #51 为 Admin 网页增加了初始化、登录和角色权限,路由装配发生了变化。
|
||||
本任务以独立回归证明 Client 的登记、领取、成功提交和失败提交仍是原 JSON 契约,
|
||||
不会被网页登录重定向、HTML 错误页、Web Session 或 CSRF 校验影响。
|
||||
|
||||
## 最终方案
|
||||
|
||||
- 新增完整 Gin 路由集成测试,分别在“Admin 未初始化”“已有管理员但 Web 未登录”
|
||||
和“管理员 Web 已登录”三种状态下调用 Client 四接口。
|
||||
- 每种状态都实际执行显式登记、领取两个任务、提交一个成功结果、提交一个失败结果,
|
||||
再次领取验证空队列仍返回无响应体的 `204 No Content`。
|
||||
- 所有 Client 请求故意携带无效 Web CSRF Cookie;已登录场景还携带有效 Web Session。
|
||||
测试统一拒绝 3xx、登录 HTML、CSRF 错误和非 JSON 的非 204 响应。
|
||||
- 在 HTTP 层单独复核:任务取消后原 Client 的成功结果仍接受;任务重派后原 Client
|
||||
的失败结果仍接受;相同幂等键和内容返回完全相同响应;同键不同内容返回 JSON
|
||||
`409 IDEMPOTENCY_CONFLICT`;从未领取返回 JSON `403 TASK_NOT_ASSIGNED`。
|
||||
- 在迁移测试中显式构造 v1、v2、v3、v4、v5 起点,逐一升级到 v6 并执行完整
|
||||
schema 自检;原有 v2 两种真实历史结构收敛测试继续保留。
|
||||
- 继续运行既有服务层全量测试,复用登记幂等、领取原子性、成功/失败映射、取消、
|
||||
重派、多 Client 结果和幂等冲突等既有契约用例。
|
||||
|
||||
测试没有发现路由隔离缺陷,因此没有修改生产代码、Client 契约、请求头、字段、
|
||||
状态码、幂等规则或任务业务规则,也没有增加 API Key。
|
||||
|
||||
## 改了哪些
|
||||
|
||||
- `admin/client_api_auth_regression_test.go`:三种 Web 状态下的 Client 四接口完整 HTTP
|
||||
回归,以及取消、重派、幂等和错误映射测试。
|
||||
- `admin/repository/migrate_test.go`:v1–v5 到 v6 的显式迁移矩阵。
|
||||
|
||||
## 验收结果
|
||||
|
||||
| 验收标准 | 结果 |
|
||||
|---|---|
|
||||
| 四个 Client API 在无 Web Session 时保持原状态码和 JSON/204 | 通过 |
|
||||
| Client API 不返回 3xx、登录页面或 Web CSRF 错误 | 通过 |
|
||||
| 登记、领取、成功结果、失败结果和幂等契约 | 通过 |
|
||||
| 取消后提交继续接受 | 通过 |
|
||||
| 重派后原 Client 提交继续接受 | 通过 |
|
||||
| 从未领取仍返回稳定 JSON 403 | 通过 |
|
||||
| Web 未登录、管理员和采购员页面权限 | 通过(#50、#51 集成测试) |
|
||||
| v1–v5 及两种 v2 历史结构均可迁移到 v6 | 通过 |
|
||||
| 未改变 Client 请求及任务业务契约 | 通过(仅修改测试文件) |
|
||||
| Go 1.23.0 全量 vet、构建和测试 | 通过 |
|
||||
| 未调用真实 Client、Android 设备或采购下单 | 通过 |
|
||||
|
||||
## 测试
|
||||
|
||||
- 执行的命令:
|
||||
|
||||
```powershell
|
||||
cd D:\chengma\cmautobuy\admin
|
||||
gofmt -l .
|
||||
go vet ./...
|
||||
go build ./...
|
||||
go test ./... -count=1
|
||||
go version
|
||||
```
|
||||
|
||||
- 结果:全部通过;`gofmt -l .` 无输出;Go 为 `go1.23.0 windows/amd64`。
|
||||
- **没验证到的部分**:按工单要求没有调用真实 Client、Android 设备或采购下单;
|
||||
网络边界由真实 Gin 路由和 `httptest` 请求覆盖,未占用真实监听端口。
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `9959fac` test: 验证网页登录不影响 Client 四接口 (#52)
|
||||
Reference in New Issue
Block a user