# R01-A4 第四批请求上下文收束独立复验 复验日期:2026-09-17 分支:`refactor/r01-structure-performance` 基线 HEAD:`35baa8416d31e71dd2c2556877f9d2e1c93b14a1` ## 结论 **R01-A4 独立代码复验通过,可以进入精确暂存、本地提交与推送检查点。** FAIL=0,SKIP=0。复验未修改生产代码,未暂存、未提交、未推送。 ## 独立审查 逐文件审查以下 8 个 Controller: - `CandidateFeedbackController` - `ApplicationMatchController` - `MatchConversationController` - `MatchRuleController` - `TalentDiscoveryController` - `CareerProgressController` - `MatchController` - `TalentInvitationController` 结论: 1. 身份统一由构造器注入的 `CurrentUserAccessor.requireUserId()` 获取;requestId 统一由构造器注入的 `RequestIdAccessor.get(request)` 获取。 2. 8 个文件对 `SecurityContextHolder`、`Authentication`、`anonymousUser`、身份 `Long.valueOf/parseLong`、私有 requestId 方法、可选注入和手工创建 Accessor 的门禁扫描均为 0。 3. 角色、资源归属、Service 入参与响应结构未被改写;V1-V45、ErrorCode、OpenAPI 文档均无差异。 ## 独立测试 新增两个独立测试类,仅位于测试目录: - `A4IndependentVerificationTest`:3 个测试,覆盖 8 个真实 MVC 映射的非法主体、匿名主体及 requestId 归一化同源。 - `A4AccessorWiringIndependentTest`:2 个测试,通过 mock Accessor 的异常和值传播,逐一验证 8 个 Controller 的真实接线和 Service 参数。 发现实施方 `A4AccessorWiringProbeTest` 的 GET 路径列表只有 7 个 Controller,遗漏了唯一使用 POST 的 `MatchConversationController`。独立测试已使用真实方法 `POST /applications/{id}/conversation` 补齐;该路径通过,没有发现生产缺陷。 定向命令结果:48/48,Failures=0,Errors=0,Skipped=0。 关联回归结果:163/163,Failures=0,Errors=0,Skipped=0。 ## 全量验证 - `mvn clean verify`:BUILD SUCCESS,2243/2243,Failures=0,Errors=0,Skipped=0。 - `python docs/verify_openapi.py`:All checks passed,176 paths / 214 operations。 - `git diff --check`:无空白错误,仅既有 LF/CRLF 提示。 - 暂存区:空。 - 迁移差异:空。 - `docs/openapi-rc.json` 差异:空。 全量数由实施前的 2238 增至 2243,增量恰好是本轮新增的 5 个独立测试。 ## 全仓剩余统计纠正 按完整模式逐文件分类: - 身份解析:12 个文件,其中基础设施 3、业务 Controller 9;与实施报告一致。 - requestId 入口:19 个文件,其中基础设施/非业务入口 6、业务 Controller 13。 实施报告中的“完整模式 18 个文件”少计 1 个基础设施/非业务入口;业务 Controller 剩余数 13 正确。该统计偏差不影响 A4 的 8 个目标文件全部完成迁移。 ## Git 与边界 - HEAD 未改变;未暂存、未提交、未推送。 - 本次独立复验只新增上述 2 个测试文件和本报告,未修改生产代码。 - `GlobalExceptionHandler.java` 仍是 Windows stat 缓存造成的工作区标记,内容 blob 与 HEAD 相同,本轮未触碰。 - 历史未跟踪文件全部保留,未删除、移动或清理。