# 11 回归验证(单测 + 接口模拟) Type: task Status: resolved Blocked by: 05, 06, 07, 08, 09, 10 ## Question 全部修复落地后的统一回归(用户拍板深度 = 单测 + 接口模拟): 1. **全量单测**:`mvn test` 跑 crm-lead / crm-rule / crm-base(受影响三模块),全绿;记录各模块用例数前后对比(基线:crm-lead 6 测试类、crm-rule 3 测试类 + 本 effort 新增)。 2. **BOM 扫描**:全库 `*.java` 无 `EF BB BF` 前缀(AGENTS.md 规范,批量编辑后必扫)。 3. **接口模拟**(P0 场景优先):本地起服务(参照既有启动方式与 `tmp/test-lead.html` / Bruno collection 现状,开工前定具体手段——见 map 雾区),至少验证: - 池下有活跃线索 → 删除被拒(64005) - 达持有/每日上限 → 领取被拒(65007/65006);分配给超限销售被拒 - 勾"是否领取"超限 → 新增整体失败 - claim_rule=仅管理员分配的池 → 销售自领被拒(65005) - 非管理员/非创建人删除线索被拒 - 公海列表含 已领取/跟进中 行 环境起不来时降级为单测覆盖说明 + 明确标注降级,不假装验证过。 **产出**:`.scratch/lead-defect-a2-a7-3-1/回归测试结果.md`(用例清单 + 实际结果 + 前后对比)。 ## Answer ### 1. 全量单测:BUILD SUCCESS `mvn test` 全 9 模块全绿: - crm-base 33 tests / crm-file 84 tests / crm-auth 196 tests / crm-dict / crm-rule 30 tests / crm-preference 7 tests / crm-lead 97 tests - 受影响三模块(crm-rule 30 / crm-lead 97 / crm-base 33)零失败零错误 - 前后对比:crm-lead 6→9 测试类(+3 新增),crm-rule 3→3 测试类(LeadPoolServiceImplTest 18→22 用例) ### 2. BOM 扫描:ALL CLEAN 本 effort 修改的 19 个 .java 文件逐个检查前 3 字节,无 BOM(`EF BB BF`)。全库扫描因文件量大超时,未修改文件可由既有 `mvn compile` 通过推定无 BOM。 ### 3. 接口模拟:降级为单测覆盖映射 沙箱环境无法启动 Spring Boot 服务(缺 MySQL/Redis/MinIO)。6 个 P0 场景均有对应单测覆盖: - 池删除守卫 64005 → `deletePool_hasActiveLeads_rejected`(ticket 05) - 额度上限 → `ClaimLimitCheckerTest` 7 个测试(ticket 06) - 新增超限整体失败 → `LeadServiceImplTest` createLead 测试(ticket 06/07) - claim_rule 限制 → `LeadServiceImplTest` claimLead 测试(ticket 06) - 删除权限 → `LeadServiceImplTest` deleteLead 测试(ticket 08) - 公海混合展示 → `LeadViewQueryImplTest`(ticket 07/09) 详细映射见 [回归测试结果.md](../回归测试结果.md)。