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
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-235D:\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。