docs(status): record HTTP semantics remediation; note 3 test assertions that encoded old wrong behavior
This commit is contained in:
@@ -690,6 +690,31 @@ Invariant测试:10个(INV-011~020)→ **实测:原 14 个用例无任何
|
||||
|
||||
详见 `docs/Phase-23B-V11-E2E-Infrastructure-Completion-Report-2026-09-18.md`。
|
||||
|
||||
### HTTP 语义检修 — 失败响应携带真实 HTTP 状态码(2026-09-18)✅ 已关闭
|
||||
|
||||
起因:Phase 23B 收尾时质疑「HTTP 200 + body.code 这套约定,开放第三方还守得住吗」。
|
||||
审计后确认**当时就已经是断的**,不是未来风险。
|
||||
|
||||
| 发现 | 说明 |
|
||||
|---|---|
|
||||
| 105 处 / 30 个 Controller | `return ApiResponse.error(...)` 不抛异常、不带 `@ResponseStatus` → HTTP 恒为 200 |
|
||||
| 前后端契约已断 | 小程序 `api.js` 的 401/403/429 分支**永远走不到**;token 过期回 403 → 不触发 `onSessionExpired` → **用户卡死** |
|
||||
| 未认证回 403 | `SecurityConfig` 未配 `authenticationEntryPoint`,body 连 `code` 都没有 |
|
||||
| CORS 默认 `*` + `allowCredentials(true)` | 注释却写「默认只允许 localhost」——注释与代码不符 |
|
||||
| 测试覆盖 | 全量测试仅 4 文件 / 15 处断言触及状态码 |
|
||||
|
||||
修法:**一处定义、两处应用、业务代码零改动** —— 响应码枚举新增 `httpStatus`(单一真相源)、
|
||||
异常处理器从枚举读状态、新增 `ResponseBodyAdvice` 覆盖全部直返路径。
|
||||
|
||||
验证:E2E **37 passed**(+4 契约用例);后端回归 **662 / 0 / 0 / 3**;
|
||||
活栈实测 404 / 400 / 401 正确。回归首轮 3 处失败经判定均为**测试断言了旧的错误行为**,
|
||||
改断言而非改回实现。
|
||||
|
||||
遗留(第三方开放,属范围扩张,需产品决策):第三方凭据机制、限流是否真实生效、
|
||||
OpenAPI 对外发布、调用审计与配额、分页幂等覆盖、脱敏边界。
|
||||
|
||||
详见 `docs/HTTP语义检修报告-2026-09-18.md`。
|
||||
|
||||
### Phase 24 — UAT增量 ✅ 已就绪(测试数据支持)
|
||||
| 任务 | 状态 |
|
||||
|------|------|
|
||||
|
||||
Reference in New Issue
Block a user