Admin:验证网页登录不影响 Client 四接口 #52

Closed
opened 2026-08-09 13:14:59 +08:00 by ila · 3 comments
Owner

基本信息

  • 状态:已完成
  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#15 / MVP
  • 阶段:Admin 登录与最小账号管理

要解决什么

网页登录会重新组织路由和中间件。必须用独立回归任务证明现有 Client 登记、领取、成功提交和失败提交没有被登录重定向、HTML 页面或 Session 校验影响。

做什么 / 不做什么

  • 做:补充 Web/API 路由隔离测试、四接口契约回归、未初始化/未登录/已登录场景和 Admin 全量回归;修复本范围内发现的兼容问题。
  • 不做:不增加 API Key,不改变 Client 请求头、字段、状态码、幂等和任务业务规则,不执行真实采购。

怎么做

依赖 #50 和 #51。

  • 在未初始化、已有用户但未登录、管理员已登录三种状态下分别调用 /api/v1/client/*。
  • 断言 API 从不返回 302、登录 HTML 或 Web CSRF 错误。
  • 复用现有登记、领取、成功提交、失败提交、幂等、取消后提交和重派后提交测试。
  • 页面测试调整为:公开页可访问,业务页需要 Session,采购员访问 /users 返回 403。
  • 执行 v1–v5 到 v6 的迁移矩阵和 Go 1.23.0 全量验证。

预计主要修改 Admin 测试文件;只有测试发现路由隔离缺陷时,才最小修改相关 Handler 或路由装配。

验收标准

  • 四个 Client API 在无 Web Session 时保持原状态码和 JSON/204。
  • Client API 不返回 302、登录页面或 HTML 错误。
  • 登记、领取、结果、失败和幂等契约测试全部通过。
  • 取消后提交、重派后提交继续被接受。
  • Web 未登录、管理员和采购员三类页面权限测试通过。
  • v1–v5 现实 schema 均能迁移到 v6。
  • Go 1.23.0 下 go vet、构建和全量测试通过。
  • 未调用真实 Client、Android 设备或采购下单。

怎么验证

从 admin/ 执行:

$env:GOTOOLCHAIN="go1.23.0"
go vet ./...
go build ./...
go test ./... -count=1
Remove-Item Env:GOTOOLCHAIN

风险和回退

本任务不允许为通过测试而改变 Client 契约。发现契约冲突时先更新工单并交由用户确认;路由回归可按本任务提交独立回退。

## 基本信息 - 状态:已完成 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#15 / MVP - 阶段:Admin 登录与最小账号管理 ## 要解决什么 网页登录会重新组织路由和中间件。必须用独立回归任务证明现有 Client 登记、领取、成功提交和失败提交没有被登录重定向、HTML 页面或 Session 校验影响。 ## 做什么 / 不做什么 - 做:补充 Web/API 路由隔离测试、四接口契约回归、未初始化/未登录/已登录场景和 Admin 全量回归;修复本范围内发现的兼容问题。 - 不做:不增加 API Key,不改变 Client 请求头、字段、状态码、幂等和任务业务规则,不执行真实采购。 ## 怎么做 依赖 #50 和 #51。 - 在未初始化、已有用户但未登录、管理员已登录三种状态下分别调用 `/api/v1/client/*`。 - 断言 API 从不返回 `302`、登录 HTML 或 Web CSRF 错误。 - 复用现有登记、领取、成功提交、失败提交、幂等、取消后提交和重派后提交测试。 - 页面测试调整为:公开页可访问,业务页需要 Session,采购员访问 `/users` 返回 `403`。 - 执行 v1–v5 到 v6 的迁移矩阵和 Go 1.23.0 全量验证。 预计主要修改 Admin 测试文件;只有测试发现路由隔离缺陷时,才最小修改相关 Handler 或路由装配。 ## 验收标准 - [x] 四个 Client API 在无 Web Session 时保持原状态码和 JSON/204。 - [x] Client API 不返回 302、登录页面或 HTML 错误。 - [x] 登记、领取、结果、失败和幂等契约测试全部通过。 - [x] 取消后提交、重派后提交继续被接受。 - [x] Web 未登录、管理员和采购员三类页面权限测试通过。 - [x] v1–v5 现实 schema 均能迁移到 v6。 - [x] Go 1.23.0 下 `go vet`、构建和全量测试通过。 - [x] 未调用真实 Client、Android 设备或采购下单。 ## 怎么验证 从 `admin/` 执行: ```powershell $env:GOTOOLCHAIN="go1.23.0" go vet ./... go build ./... go test ./... -count=1 Remove-Item Env:GOTOOLCHAIN ``` ## 风险和回退 本任务不允许为通过测试而改变 Client 契约。发现契约冲突时先更新工单并交由用户确认;路由回归可按本任务提交独立回退。
Author
Owner

状态:进行中。#50、#51 依赖已完成。开始补充未初始化/未登录/已登录三种 Web 状态下的 Client 四接口隔离回归,并复核登记、领取、成功/失败提交、幂等、取消后提交和重派后提交契约。严格不增加 API Key、不改变 Client 契约、不调用真实设备或采购。

状态:进行中。#50、#51 依赖已完成。开始补充未初始化/未登录/已登录三种 Web 状态下的 Client 四接口隔离回归,并复核登记、领取、成功/失败提交、幂等、取消后提交和重派后提交契约。严格不增加 API Key、不改变 Client 契约、不调用真实设备或采购。
Author
Owner

状态:待验收。

实现已完成并按工单边界提交:

  • 9959fac test: 验证网页登录不影响 Client 四接口 (#52)
  • 0181170 docs: 归档任务 #52
  • 归档:docs/task/52-admin-client接口网页登录隔离回归.md

关键结果:

  • Admin 未初始化、已有管理员未登录、管理员已登录三种状态均跑通登记、领取、成功提交、失败提交和空队列 204;
  • Client 请求即使携带无效 Web CSRF Cookie,也不经过 Web CSRF/Session;响应无 3xx、登录 HTML 或 CSRF HTML;
  • HTTP 层验证取消后提交、重派后提交、幂等相同响应、409 冲突及 403 映射;
  • v1、v2、v3、v4、v5 起点均升级到 v6 并通过 schema 自检,两种 v2 真实历史结构测试继续通过;
  • 未发现生产路由缺陷,因此只修改测试,没有改变 Client 请求头、字段、状态码、幂等或任务规则,也没有增加 API Key。

验证:Go 1.23.0 下 gofmt -l . 无输出,go vet ./...、go build ./...、go test ./... -count=1 全部通过。

未调用真实 Client、Android 设备或采购下单。工单保持开启,等待用户验收。

状态:待验收。 实现已完成并按工单边界提交: - `9959fac` test: 验证网页登录不影响 Client 四接口 (#52) - `0181170` docs: 归档任务 #52 - 归档:`docs/task/52-admin-client接口网页登录隔离回归.md` 关键结果: - Admin 未初始化、已有管理员未登录、管理员已登录三种状态均跑通登记、领取、成功提交、失败提交和空队列 204; - Client 请求即使携带无效 Web CSRF Cookie,也不经过 Web CSRF/Session;响应无 3xx、登录 HTML 或 CSRF HTML; - HTTP 层验证取消后提交、重派后提交、幂等相同响应、409 冲突及 403 映射; - v1、v2、v3、v4、v5 起点均升级到 v6 并通过 schema 自检,两种 v2 真实历史结构测试继续通过; - 未发现生产路由缺陷,因此只修改测试,没有改变 Client 请求头、字段、状态码、幂等或任务规则,也没有增加 API Key。 验证:Go 1.23.0 下 `gofmt -l .` 无输出,`go vet ./...`、`go build ./...`、`go test ./... -count=1` 全部通过。 未调用真实 Client、Android 设备或采购下单。工单保持开启,等待用户验收。
Author
Owner

用户已于 2026-08-09 明确通过全部 Admin 待验收工单。本工单验收通过,现关闭,并同步父级 #15、#14 的任务清单。

用户已于 2026-08-09 明确通过全部 Admin 待验收工单。本工单验收通过,现关闭,并同步父级 #15、#14 的任务清单。
ila closed this issue 2026-08-09 21:15:57 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#52