You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2.8 KiB

R01-A5 第五批请求上下文收束实施报告

实施日期:2026-09-17

分支:refactor/r01-structure-performance

基线 HEAD:0226977063243fce101e3f6c8dcf66492d306ef7

结论

R01-A5 第五批请求身份与 requestId 收束已完成自动化验证,待独立代码复验。

修改范围

本批仅修改以下 8 个 Controller:

  1. CandidateScoringGovernanceController
  2. InterviewScoreController
  3. FavoriteController
  4. AdminReviewController
  5. AdminReviewReplyController
  6. CompanyReviewManagementController
  7. JobReviewController
  8. StudentReviewWeightController

每个 Controller 均执行相同的受控迁移:

  • 构造器注入既有 CurrentUserAccessor 与 RequestIdAccessor;
  • 身份统一调用 currentUserAccessor.requireUserId();
  • requestId 统一调用 requestIdAccessor.get(request);
  • 删除本地身份解析方法和 requestId 读取方法;
  • 保留原有角色、资源归属、Service 参数、DTO 和响应结构。

JobReviewController.parseIds 是岗位 ID 业务参数解析,予以保留。

静态门禁

8 个目标文件对以下模式均为零命中:

  • SecurityContextHolder / Authentication / anonymousUser;
  • 身份 Long.valueOf(auth.getName());
  • resolveUserId / getRequestId / 私有 requestId(...);
  • 原始 X-Request-Id header 读取;
  • 可选注入、ObjectProvider 或手工 new Accessor() 回退。

新增验证

新增 R01A5RequestContextMigrationIntegrationTest,使用真实 Spring Security 与 MVC 映射:

  • 8 个 Controller 各选一个真实端点;
  • 非法主体覆盖 anonymousUser、非数字、20 位 Long 溢出、0、负数;
  • 所有组合必须返回 HTTP 401,且响应不含异常类、堆栈或非法主体;
  • 合法主体下验证规范化 requestId 的响应头与响应体同源。

定向与关联测试:90/90,Failures=0,Errors=0,Skipped=0。

全量验证

  • mvn clean verify:BUILD SUCCESS,2245/2245,Failures=0,Errors=0,Skipped=0;
  • python docs/verify_openapi.py:176 paths / 214 operations,All checks passed;
  • V1-V45 无差异;
  • docs/openapi-rc.json 无差异;
  • git diff --check 无空白错误,仅既有 LF/CRLF 提示。

全仓剩余

完成 A5 后:

  • 身份解析共 4 个文件:基础设施 3 个,业务 Controller 仅 FairnessMonitoringController 1 个;
  • requestId 入口共 11 个文件:基础设施/非业务入口 6 个,业务 Controller 5 个;
  • 最终 A6 业务白名单为 FairnessMonitoringController、ApiController、AuthController、SystemController、JobController。

边界

  • 未新增或修改 Flyway、ErrorCode、接口、DTO、表、索引或依赖;
  • 未修改评分、申诉、面试评分、岗位收藏或评价业务规则;
  • 未暂存、未提交、未推送;
  • 未删除或移动历史未跟踪文件;
  • 未进入 A6。