소스 검색

test(R203): 补记 B-203-6——pre-push 闸门只跑 compile 不跑 test-compile,漏拦 Java9+ API

本轮 push 时闸门输出「✅ 编译通过,允许 push」,而同一 HEAD 上 mvn test-compile 恒 BUILD FAILURE。
根因:githooks/pre-push 用 mvn -q -DskipTests compile(仅主源码),测试源不参与编译。
建议改为 mvn -q -DskipTests test-compile(不执行测试,多 3-5s),即可拦住 B-203-5 这类 P0。
E2E Test Bot 1 일 전
부모
커밋
0875a19e34
2개의 변경된 파일과 4개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      docs/tdd/test/blockers.md
  2. 3 0
      docs/tdd/test/notice-2026-11-14-R203-研发通知.md

+ 1 - 0
docs/tdd/test/blockers.md

@@ -1495,6 +1495,7 @@
 | 编号 | 关联键/对象 | 类型 | 描述与处置 | 经办 | 登记时间 | 状态 |
 |---|---|---|---|---|---|---|
 | **B-203-5(新增 P0 · 最紧急)** | 5 个商品可见性测试类(`df401ba65` 引入) | 研发 | `mvn -o test-compile` **BUILD FAILURE**,14 处 `找不到符号:方法 of(java.lang.String) 位置: 接口 java.util.List` —— 工程 `pom.xml` `java.version=1.8`,而新测试类用了 **Java 9+ 的 `List.of`**。**后果:后端 478 个测试类零可执行**,G1/G2/G4/G5 四项门禁当前全部无法判定。**修法**:`List.of(a,b)`→`Arrays.asList(a,b)`;`List.of(a)`→`Collections.singletonList(a)`;`List.of()`→`Collections.emptyList()`。精确行号:ContentRecommendProductVisibilityTest:147,169,174 / ProductRecommendationFilterTest:161,177,196,207,223 / ProductServiceListByDimensionVisibilityTest:86 / ProductVisibilitySupportTest:102,165 / RecommendationSearchProductVisibilityTest:72,86,87。**验收**:`mvn -o test-compile` EXIT=0 + 9 个新类定向全绿。 | 测试(R203 收尾二次 fetch 实测) | 2026-11-14 22:20 | **待研发修复(P0 阻断全部后端测试)** |
+| **B-203-6(新增 P1 · 流程)** | `githooks/pre-push` 编译闸门 | 研发/流程 | 闸门只跑 `mvn -q -DskipTests compile`(**仅主源码**,不编译测试源),故 B-203-5 的 14 处 Java 9+ API 在 3 次推送中均未被拦截(本轮 push 时闸门输出「✅ 编译通过,允许 push」,而同一 HEAD 上 `mvn test-compile` 恒 BUILD FAILURE)。**修法**:闸门改为 `mvn -q -DskipTests test-compile`(不执行任何测试,仅多 3–5s),即可拦住测试源码编译错误与 Java 版本越界。 | 测试(R203 实测取证) | 2026-11-14 22:30 | 待流程改进(P1) |
 | **B-203-1(新增 P0)** | `ButlerResourceMatchService.followUpMapper`(S-cfc-355 窗口引入) | 研发 | `@Resource private ButlerResourceFollowUpMapper followUpMapper;`(`ButlerResourceMatchService.java:46`)字段名 == `FollowUpMapper` 的默认 Bean 名 → `@Resource` 先按名称解析 → `BeanNotOfRequiredTypeException: Bean named 'followUpMapper' is expected to be of type ...ButlerResourceFollowUpMapper but was actually of type 'com.sun.proxy.$Proxy395'` → `butlerController` 依赖链上下文启动失败。**后果**:① 线上部署 d363df8056 FAILED 自动回滚;② 49 个 `@SpringBootTest` 类约 440 例不可判定(全量尝试日志该异常出现 266 次)。**修法**:字段改名 `butlerResourceFollowUpMapper`(同步 `:153`),或 `@Resource(name="butlerResourceFollowUpMapper")`。**验收**:`*ControllerTest` 0 ERROR + `ResourceBeanNameCollisionGuardTest` 转绿。 | 测试(R203 实测取证) | 2026-11-14 21:55 | **待研发修复(P0 阻断部署)** |
 | **B-203-2(新增 P0)** | `HealthDataSourceBridgeService.dimensionScoreService` | 研发 | 同源第二枚雷:`@Resource HealthDimensionScoreService dimensionScoreService` 撞 `DimensionScoreService` 默认 Bean 名。尚未被上下文实例化故线上未爆,D/X 桥接功能一上线即触发。**修法**:字段改名 `healthDimensionScoreService` 或显式 `name=`。由新增守卫 `ResourceBeanNameCollisionGuardTest` 扫出(该守卫毫秒级、不加载上下文)。 | 测试(R203 守卫扫出) | 2026-11-14 21:55 | 待研发修复(P0 预防) |
 | **B-203-3(新增 P1)** | `origin` fetch 通道 | 运维 | `git fetch origin` 恒失败:`git@git.iwintrue.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)`;`remote.origin.url=git@…` 与 `pushurl=http://…` 不一致,fetch 走 SSH 无密钥。本轮以 HTTP push URL 手工 fetch 兜底(`git fetch http://git.iwintrue.com/liaoxg/cfc.git cfclub:refs/remotes/origin/cfclub`)。风险 = 脚本化流程漏拉窗口提交(R191 曾漏记 39 例)。 | 测试(R203 实测) | 2026-11-14 21:55 | 待运维修通道(P1) |

+ 3 - 0
docs/tdd/test/notice-2026-11-14-R203-研发通知.md

@@ -32,6 +32,8 @@
 
 **影响面**:**后端 478 个测试类全部不可执行** → G1/G2/G4/G5 四项门禁当前全部无法判定。
 
+**为何没被闸门拦住**:`githooks/pre-push` 只跑 `mvn -DskipTests compile`(不编译测试源),本轮 3 次推送闸门均报「✅ 编译通过」,而同一 HEAD 上 `mvn test-compile` 恒失败 —— 见 B-203-6。
+
 **验收**:`mvn -o test-compile` EXIT=0,且 9 个新类定向跑全绿。
 
 ## 二、同步必修(P0-②,1 行改动):Spring 上下文启动阻断
@@ -92,6 +94,7 @@ private ButlerResourceFollowUpMapper followUpMapper;
 
 | 编号 | 事项 | 需要谁 |
 |---|---|---|
+| B-203-6 | **`githooks/pre-push` 只跑 `compile` 不跑 `test-compile`** → 测试源码编译错误拦不住(本轮 3 次推送均「✅ 编译通过」,但同一 HEAD `mvn test-compile` 恒失败)。建议闸门改 `mvn -q -DskipTests test-compile`,多 3–5s 即可拦住 P0-① 这类问题 | 研发/流程 |
 | B-203-3 | `git fetch origin` SSH `Permission denied (publickey)` 长期失效(本轮用 HTTP push URL 兜底) | 运维 |
 | B-203-4 | Spring 层无上下文复用,失败类单类 220–461s,全量轮次无法收敛 | 研发 |
 | B-199-1 | langgraph 上游 LLM 配额耗尽 + `api key invalid` → 11 例环境红 | 运维轮换 key |