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.
 
 
 

3.5 KiB

W2-T6 独立评审报告

Verdict

FAIL

T6 生产实现的主流程与当前契约基本一致,但测试未满足本次评审明确要求的可证伪性,尤其无法发现 nameZh 匹配或别名匹配被删除的回归。必须先补齐隔离型测试并通过复审,才能进入 T7。

独立测试结果

环境:

  • JAVA_HOME=D:\java\jdk
  • Maven:D:\maven\apache-maven-3.9.7\bin\mvn.cmd
  • 工作目录:D:\1\zhi\zhilai\mydreamjob-server

命令:

$env:JAVA_HOME='D:\java\jdk'
& 'D:\maven\apache-maven-3.9.7\bin\mvn.cmd' '-Dtest=SkillTaxonomyMigrationTest,SkillCloudSeedDataIntegrationTest,SkillTaxonomyRepositoryTest,SkillCloudQueryServiceTest,SkillMatchServiceTest' test

结果:

Tests run: 37, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
Total time: 58.642 s

测试组成:迁移 2、种子数据 8、Repository 6、词云查询 8、个人匹配 13。

阻断项

Important:无法证伪 nameZh 与 alias 匹配遗漏

文件:

  • D:\1\zhi\zhilai\mydreamjob-server\src\test\java\com\mydreamjob\skill\SkillMatchServiceTest.java:212-235
  • D:\1\zhi\zhilai\mydreamjob-server\src\main\java\com\mydreamjob\skill\SkillMatchService.java:137-142

问题:

  • 测试方法 matchesNameZhNameEnSkillCodeAndAliasAndDeduplicatesStudentSkills 试图一次覆盖 nameZh、nameEn、skillCode 和别名,但没有隔离各候选来源。
  • 技能 1 的 nameZh 为“数据库”,同时注册别名 JVM Language。学生技能数组同时包含“数据库”和 jvm-language。
  • 如果删除 SkillMatchService.matches(...) 中的 nameZh 判断,技能 1 仍可通过别名命中,测试继续通过。
  • 如果删除 alias 查询、alias 分支或整个别名匹配链路,技能 1 仍可通过 nameZh 命中,测试同样继续通过。
  • 因此现有测试不能证明 REQ-SM-3 和 TO-5 中“标准名称 + 别名”匹配能力存在;这是本次评审明确要求验证的回归保护,不能仅依赖实现代码的静态正确性。

要求的修复方向:

  • 增加独立技能/独立场景,确保某个标准技能只能通过 nameZh 命中,另一个只能通过 alias 命中。
  • 保留现有 nameEn 和 skillCode 隔离断言。
  • 建议再断言 alias 必须归属于目标 skillId,避免别名被错误应用于其他标准技能时测试仍通过。

已核验且未发现阻断的行为

  • 匹配集合直接对 SkillCloudQueryService.query(...) 的结果取 subList(0, min(10, size)),服务内未重新排序。
  • 无 profile、空白 JSON、空数组和语法损坏 JSON 均按无技能处理;损坏 JSON 测试验证不抛 500 且日志不含原始 JSON。
  • 归一化覆盖 NFKC、trim、Locale.ROOT 小写、Unicode 连字符、空白折叠、句点移除,并保留 +、#。
  • nameEn 和 skillCode 在现有测试中有可区分断言;归一化后的学生技能使用 Set 去重。
  • 分数使用 Math.round(matched * 100.0 / actualTopSize),actualTopSize=0 返回 0,1/3=33,少于十条和恰好十条均有断言。
  • 命中/缺失列表按 TOP 顺序构建,并无额外排序;无匹配场景的并集顺序与词云 TOP10 对齐。
  • 响应 DTO 只包含技能投影,不包含原始 skills_json、手机号、邮箱或简历内容。
  • T6 为只读事务,无持久化;未实现 T7/T8。

未决问题

  • 无设计或接口语义待裁决。
  • 待修复 T6 测试可证伪性后,必须重新执行同一回归命令并进行独立复审;复审 PASS 前不得启动 T7。