--- name: api-compatibility-review description: 对两版接口合同、DTO 或接口变更进行有方向的兼容性审查,输出受影响消费者、破坏条件、证据与迁移方案;适用于上线前评审,不是两份 JSON 示例的简单 Diff。 --- # 接口兼容性审查 以“旧客户端继续请求新服务端”为默认方向。用户要求其他升级方向时按其要求分析,并在报告开头写清。没有客户端或调用证据时可以判断合同风险,但不要声称已确认某客户端故障。 ## 确定比较范围 记录旧/新合同版本、方法与路径、请求与响应媒体类型、鉴权、状态码及已知消费者。定位 OpenAPI `$ref`、DTO 和序列化配置的实际定义;引用到的公共 schema 需追到它使用的每个请求和响应位置。 只给两份响应样例时,报告“观测变化”,不能把出现过当必填,把没出现当删除,也不能从一次返回推断枚举全集。请求与响应的同名字段分开审查。OpenAPI 3.0 / 3.1 的 null 表达需按版本解释。 ## 判定 阅读 [references/compatibility-rules.md](references/compatibility-rules.md)。先区分合同可确定的变化与依赖消费者的风险,再解释触发条件:哪一种以前有效的请求不再可用,或旧客户端以前不必处理的返回现在可能出现。 对每个重要变化提供: - 旧定义与新定义的文件位置或 schema 路径。 - 最小反例请求/响应,不用无关大对象掩盖差异。 - 受影响消费者与证据;未知时明确写未知。 - 迁移方式和回归用例。区分临时兼容与最终合同,不建议静默强转金额或长期双义字段。 用源码确认消费者时,追到解析、条件分支和实际使用点;生成类型、页面展示和服务端 DTO 不是同一层。不要仅凭同名字段就认定调用关系。 ## 交付 输出 `compatibility-report.md` 和 `regression-cases.md`,默认目录 `artifacts/api-compatibility/`: - 摘要:比较方向、材料覆盖、已确认的合同破坏、条件风险、观测差异、未知项分别计数;不提供无依据百分制评分。 - 变化表:证据位置、方向、旧/新约束、最小反例、影响条件、建议与验证状态。 - 发布建议:哪些消费者需同步迁移,哪些可保留旧字段或版本接口过渡;给出退出兼容层的可验证条件。 - 覆盖边界:未解析引用、没有比较的接口、未读取的消费者或运行配置。 没有阻断问题只能说“在已审范围内未发现”,不能替代上线验收。默认只审查、生成报告与用例,不自动发布、改库或修改调用方。 ## 验收 每个“破坏”都有方向和反例;新增字段、枚举扩展等条件风险不能一概判安全或一概阻断。样例不能冒充合同,报告不能把本地静态分析写成线上验证。 演示见 [examples/input.md](examples/input.md)、[examples/result.md](examples/result.md) 和 [examples/regression-cases.md](examples/regression-cases.md)。