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.
 
 
 

4.3 KiB

W2-T5 聚焦修复独立复审报告

  • 评审对象:T5 I-1 聚焦修复工作区差异(基于 e3eecfe)
  • 前次评审:changes/n03-skill-cloud/.superpowers/sdd/reviews/W2-T5.md,结论 FAIL
  • 复审范围:仅检查 SkillCloudItem.java、SkillCloudQueryService.java、SkillCloudQueryServiceTest.java 及其对既有行为的影响
  • 结论:PASS
  • 剩余阻断项:无

Finding 关闭状态

[I-1] 响应项遗漏技能来源标识:已关闭

修复已同时补齐 DTO 字段和 Service 映射:

  • D:\1\zhi\zhilai\mydreamjob-server\src\main\java\com\mydreamjob\skill\dto\SkillCloudItem.java:11-12
    • 新增 sourceType
    • 新增 sourceCode
  • D:\1\zhi\zhilai\mydreamjob-server\src\main\java\com\mydreamjob\skill\SkillCloudQueryService.java:102-117
    • toItem(...) 在 nameEn 后依次映射 projection.sourceType() 和 projection.sourceCode()(第 109-110 行)
    • 热度来源仍独立映射为 heatSourceCode、heatElementId、heatProxy(第 114-116 行)

字段语义未混淆:技能自身来源是 sourceType/sourceCode,O*NET Importance 来源是 heatSourceCode/heatElementId/heatProxy。

双来源测试与可证伪性:已关闭

D:\1\zhi\zhilai\mydreamjob-server\src\test\java\com\mydreamjob\skill\SkillCloudQueryServiceTest.java:198-236 同时锁定两类来源:

  • O*NET 技术来源:第 219-220 行精确断言
    • sourceType = "O*NET"
    • sourceCode = "15-1254.00|React|2.E.7.h"
  • ESCO 技能来源:第 232-234 行精确断言
    • sourceType = "ESCO"
    • sourceCode = "http://data.europa.eu/esco/skill/3cd569a2-4f88-4c1e-9995-8dce8c5e51a7"
  • 来源隔离:第 235 行额外断言 JavaScript 的 heatSourceCode = "15-1254.00",与 ESCO sourceCode 明显不同。

因此:

  • 若 sourceType 或 sourceCode 映射被遗漏并传为 null,上述精确断言会失败。
  • 若二者被交换,O*NET 与 ESCO 的精确值断言会失败。
  • 若技能来源与热度来源混用,React 的完整 O*NET 三元组断言及 JavaScript 的 URI/SOC 对照断言会失败。

原有行为回归

独立执行指定环境与命令:

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

结果:

Tests run: 24, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

Surefire 分类计数:

  • SkillTaxonomyMigrationTest:2
  • SkillCloudSeedDataIntegrationTest:8
  • SkillTaxonomyRepositoryTest:6
  • SkillCloudQueryServiceTest:8

已核验原有行为:

  • 全量查询、连续排名:SkillCloudQueryServiceTest.java:62-81
  • 热度降序、同热度名称排序、null heat 末位:SkillCloudQueryServiceTest.java:84-107
  • 同值排序的 skillId 稳定性:SkillCloudQueryServiceTest.java:109-145
  • 分类过滤及缺省分类:SkillCloudQueryServiceTest.java:166-179
  • 合法空分类返回空列表:SkillCloudQueryServiceTest.java:181-196
  • 必填/正整数/未知节点/跨行业职位/跨职位分类校验:SkillCloudQueryServiceTest.java:238-264
  • provenance 字段映射:SkillCloudQueryServiceTest.java:198-236

本次修复没有改变排序、过滤、校验或热度来源映射逻辑,仅扩展响应字段与测试断言。

变更范围

自 e3eecfe 起,T5 实现差异仅包含:

  • SkillCloudQueryService.java
  • SkillCloudItem.java
  • SkillCloudQueryServiceTest.java

共 20 insertions, 3 deletions。未修改 V35/V36、Repository、安全配置或应用配置;未发现 T6/T7/T8 的 Controller、匹配度 Service、学习路径 Service 或权限配置实现。

非阻断备注

  • M-1 仍为 Minor:设计文档中的 heatSource 嵌套形态与当前三个扁平热度来源字段尚未统一,按前次评审要求留待 T8 明确 OpenAPI 和接口文档。
  • M-2 仍为 Minor:Service 层未单独断言无 heat 技能的 sourceType/sourceCode;Repository 层已在该场景断言 Figma 保留来源(SkillTaxonomyRepositoryTest.java:183-188),且 Service 映射无条件执行,不构成阻断。

最终裁决

PASS。I-1 已关闭,指定联合回归全部通过,未发现新的 Critical 或 Important 问题;T5 可进入后续任务门禁。