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.1 KiB
5.1 KiB
W3-T8 Review: OpenAPI、接口文档与前端联调
- Wave: W3
- Task: T8
- Base SHA:
73afd87 - Head SHA:
aad0ba6 - Review report:
.superpowers/sdd/reviews/W3-T8.md - Verdict: FAIL
Strengths
- T8 的交付范围正确:diff 仅涉及 OpenAPI、文档、验证脚本和 SDD 状态文件,没有修改 Java 生产代码或测试代码。
- 与
73afd87相比,OpenAPI 精确新增 6 个/onboarding路径、9 个 operation、20 个 schema;原有 129 个路径和 139 个 schema 的结构化内容均未变化。 - 9 个 operation 的
operationId唯一,全部声明bearerAuth;成功响应引用正确;9701-9706 均出现在对应错误响应中。 docs/onboarding-api.md覆盖角色、企业所有权、通用/企业清单合并、完成状态与版本、幂等创建、软删除、知识回退、3 条评价阈值、错误码和请求/响应示例。docs/frontend-integration.md第 22 节覆盖 Base URL、鉴权、9 个接口、请求示例、状态回退及 400/401/403/404/409 处理。- README 和 roadmap 已更新为 N04“实现完成,待真实 MySQL/Docker 验收”,并准确记录当前全量测试失败情况。
docs/verify_openapi.py是增强而非削弱:删除了旧的固定路径总数断言,改为更强的 135 paths / 172 operations 断言,并新增 N04 路径、operation、security、schema 和错误码检查。- N04 专项回归通过:
Tests run: 96, Failures: 0, Errors: 0, Skipped: 0,BUILD SUCCESS。
Blocking Findings
Important: OpenAPI 示例与运行时响应不一致
- File:
docs/openapi-rc.json:7430-7439 PUT /onboarding/company/knowledge的 200 示例data缺少version。- Runtime
CompanyKnowledgeView、OpenAPI schema 以及docs/onboarding-api.md都明确包含version;企业客户端必须使用该字段进行下一次乐观锁更新。 - 因此该示例会误导前端在对更新响应建模或联调时遗漏版本,直接违反 T8“字段、默认值与运行时 DTO 完全一致”的要求。
- Fix: 在 200 示例中补充一个与更新语义一致的
version,并在docs/verify_openapi.py中增加示例字段断言。
Important: 创建请求的 OpenAPI schema 未表达运行时默认值
- File:
docs/openapi-rc.json:11714-11722 CompanyChecklistItemCreateRequest.sortOrder缺少default: 1000。CompanyChecklistItemCreateRequest.required缺少default: false。- Runtime DTO 明确初始化了这两个默认值,文档正文也说明默认值,但静态 OpenAPI schema 没有表达,违反 T8 对默认值一致性的要求。
- Fix: 在对应 schema 属性中加入
default,并在docs/verify_openapi.py中断言这些默认值。
Minor Findings
docs/verify_openapi.py对 9704 的检查只验证响应描述或示例的序列化文本中存在该错误码;当前 9704 只出现在描述中。建议按 operation/status 精确断言错误码和示例结构,同时覆盖version默认值和响应示例,避免回归。- OpenAPI 200 响应当前沿用仓库既有的
*/*content type,而不是更明确的application/json。这不影响本次 T8 通过判定,但会给前端代码生成带来额外歧义。 changes/n04-onboard/.superpowers/sdd/progress.md尚未记录 T8 独立 review 结果,符合当前“review pending”状态,等待 receipt 后再更新。
Non-Blocking Verification
python .\docs\verify_openapi.py:paths: 135N04 onboarding endpoints and schemas present (9 operations / 6 paths)All checks passed!
- 结构化对比
73afd87..aad0ba6:- added paths: 6
- added operations: 9
- added schemas: 20
- existing paths changed: 0
- existing schemas changed: 0
- N04 regression:
mvn -Dtest=Onboarding*Test,CompanyKnowledge*Test testTests run: 96, Failures: 0, Errors: 0, Skipped: 0BUILD SUCCESS
- Reported full-suite failure set reproduced independently:
mvn -Dtest=CareerProgressServiceTest,JobReviewDimensionControllerTest,JobReviewDimensionServiceTest,LocalResumeStorageServiceTest testTests run: 69, Failures: 2, Errors: 9- failures are the reported CareerProgress/JobReviewDimension assertions and LocalResumeStorage temp-directory cleanup errors.
git diff --check 73afd87..aad0ba6passed.git diff --name-status 73afd87..aad0ba6contains no Java production or test changes, so the reported failures are unrelated to the T8 commit. The N04 branch's only changes touching those packages are additiveJobReviewrepository query methods that are not used by the failing paths; CareerProgress and LocalResumeStorage code is unchanged.
Assessment
Ready to merge? No
Reasoning: The OpenAPI structure, documentation coverage, security declarations, error-code coverage, and N04 regression are strong, but the static contract is not yet fully runtime-consistent. The missing knowledge-response version example and missing create-request defaults are actionable contract defects that must be fixed and re-reviewed before T8 can pass.
Receipt command:
ssf execution review changes/n04-onboard --wave W3-T8 --base 73afd87 --head aad0ba6 --report .superpowers/sdd/reviews/W3-T8.md --verdict fail