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.
5.4 KiB
5.4 KiB
N03 SDD W3 最终独立复审报告
复审对象
- 变更:
n03-skill-cloud - 基线:
df7238b - 复审焦点:
W3-N-I1修复及其对W3-I1、W3-I2的回归影响。 - 工作区对象:
docs/openapi-rc.json、docs/verify_openapi.py,并核对SkillCloudController和权限测试中的既有修复。 - 环境:JDK 17(
D:\java\jdk)、Maven 3.9.7(D:\maven\apache-maven-3.9.7\bin\mvn.cmd)。 - 前轮报告:
changes/n03-skill-cloud/.superpowers/sdd/reviews/W3-wave-rereview.md。
Verdict
PASS
W3-N-I1 已关闭。两个既有 cancel operationId 已恢复,静态 OpenAPI 不再受无关历史契约变更影响;Skill Cloud 三个 operationId 的冲突检查仍有效。W3-I1、W3-I2 保持关闭。W3 代码可以进入收尾和提交阶段。
该 PASS 仅针对 W3/N-I1 代码与契约修复,不代表完整项目回归通过。完整 mvn test 仍有 2 failures + 9 errors,变更最终关闭或 TO-11 前仍需修复或正式豁免。
N-I1 关闭证据
既有 cancel 契约已恢复
当前 docs/openapi-rc.json:
POST /interviews/{interviewId}/cancel:operationId = cancelPOST /profile/me/deletion/cancel:operationId = cancel
对三个 Git 状态进行了全量 operationId 对比:
df7238b -> HEAD
新增:
/skills/word-cloud getWordCloud
/skills/match getMatch
/skills/learning-path getLearningPath
HEAD -> 当前工作区
仅:
/skills/match getMatch -> getSkillMatch
df7238b -> 当前工作区
仅三个新增 Skill Cloud operationId,其中 /skills/match 为 getSkillMatch
因此:
- 两个历史
cancel值已恢复,没有再次被改名为cancelInterview或cancelAccountDeletion。 - 除三个 Skill Cloud operationId 外,没有其他 operationId 在基线
df7238b到当前工作区之间发生变化。 docs/verify_openapi.py已移除全文档唯一性要求,只对三个 Skill Cloud operationId 逐个执行全文档“恰好出现于对应路径”的断言。- 历史重复值
cancel不再阻断校验,但 Skill Cloud 的新 operationId 仍不能与其他 operation 冲突。
结论:N-I1 已关闭。
W3-I1 保持关闭
当前契约与运行时测试保持一致:
/skills/word-cloud->getWordCloud/skills/match->getSkillMatch/skills/learning-path->getLearningPath
SkillCloudControllerTest 在运行时 /v3/api-docs 上校验三个 operationId 的精确值及其唯一归属;docs/verify_openapi.py 对静态 OpenAPI 执行同等约束。前轮的 getMatch 重复冲突没有回退。
结论:W3-I1 保持关闭。
W3-I2 保持关闭
401 契约未回退:
- 运行时匿名请求和非法 JWT 均返回
code=401、message=not authenticated、timestamp=""。 - 响应不包含
requestId或data。 SkillCloudAuthorizationIntegrationTest同时覆盖匿名和Bearer invalid-token。- 静态 OpenAPI 中三个 Skill Cloud 接口的 401 均引用
UnauthorizedResponse,示例与运行时一致。 docs/verify_openapi.py继续校验 401 schema、精确响应字段和示例内容。
结论:W3-I2 保持关闭。
独立验证结果
静态 OpenAPI 校验
命令:
python docs\verify_openapi.py
结果:
paths: 129
All checks passed!
通过。
T2-T9 指定测试组
命令:
$env:JAVA_HOME='D:\java\jdk'
& 'D:\maven\apache-maven-3.9.7\bin\mvn.cmd' '-Dtest=SkillTaxonomyMigrationTest,SkillCloudSeedDataIntegrationTest,SkillTaxonomyRepositoryTest,SkillCloudQueryServiceTest,SkillMatchServiceTest,SkillLearningPathServiceTest,SkillCloudControllerTest,SkillCloudAuthorizationIntegrationTest,SkillCloudEndToEndIntegrationTest' test
结果:
Tests run: 73, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
Total time: 54.628 s
通过。
打包
命令:
$env:JAVA_HOME='D:\java\jdk'
& 'D:\maven\apache-maven-3.9.7\bin\mvn.cmd' -DskipTests package
结果:
BUILD SUCCESS
Total time: 2.387 s
通过。
项目级 blocker
完整回归命令:
$env:JAVA_HOME='D:\java\jdk'
& 'D:\maven\apache-maven-3.9.7\bin\mvn.cmd' test
结果:
Tests run: 1395, Failures: 2, Errors: 9, Skipped: 0
BUILD FAILURE
Total time: 01:50 min
失败项:
CareerProgressServiceTest.fullAggregation_returnsCorrectSummaries:期望 1,实际 0,时间依赖问题。JobReviewDimensionControllerTest.listReviews_shouldReturnDimensionScores:期望 200,实际 500,旧 Mock 签名问题。JobReviewDimensionServiceTest.listReviews_shouldReturnDimensionScoresWithoutN1:返回结果 null 导致 NPE,旧 Repository stub 问题。LocalResumeStorageServiceTest:8 项错误,Windows JUnit 临时目录清理阶段异常。
Skill Cloud 目标测试在完整套件中均通过,但完整 mvn test 未全绿。上述 2 failures + 9 errors 仍是项目级 blocker;在修复或正式豁免前,不得声称完整回归通过,也不得进入最终变更关闭或 TO-11。
收尾结论
- W3-N-I1:关闭
- W3-I1:保持关闭
- W3-I2:保持关闭
- 是否允许 W3 代码收尾:允许
- 是否允许最终变更关闭:不允许,完整
mvn test仍有 2 failures + 9 errors,需修复或正式豁免。 - 提交范围要求:仓库中存在与本复审无关的暂存、修改和未跟踪文件;W3 收尾提交时必须只包含 N03 范围内的文件,避免混入无关变更。