实战:让 CC 修复后端接口 Bug
后端接口 Bug 不要直接改 Service。要先让 CC 复现现象、梳理调用链、区分参数、权限、数据、缓存和历史问题,再做最小修复。
后端接口 Bug 比前端文案风险更高,因为它可能影响数据、权限、调用方和线上兼容性。让 CC 修后端 Bug 时,要先定位,再最小修复。
先描述 Bug
不要只说“接口坏了”。至少给出:
- 接口路径或方法名。
- 当前现象。
- 期望结果。
- 复现步骤。
- 请求参数。
- 返回结果或错误信息。
- 是否只在某个环境出现。
如果信息不全,先把能确认的写出来,不要自己补猜测。可以用这个格式:
| 信息 | 当前情况 |
|---|---|
| 接口 | 路径、方法名或功能入口 |
| 请求 | 参数、Body、Header、登录状态 |
| 响应 | 状态码、错误码、错误信息、返回字段 |
| 环境 | 本地、测试、预发、生产 |
| 范围 | 所有人出现,还是某个账号、某类数据出现 |
| 最近变化 | 最近改过接口、数据、权限、配置还是依赖 |
第 1 步:只读定位
/plan 请帮我排查一个后端接口 Bug,但先不要修改文件。 接口: 【接口路径或方法名】 当前现象: 【现在发生了什么】 期望结果: 【应该发生什么】 请只读分析: 1. 路由入口在哪里。 2. Controller / Handler 在哪里。 3. Service 或业务逻辑在哪里。 4. 数据访问层在哪里。 5. 是否涉及权限、缓存、队列或第三方服务。 6. 可能原因有哪些,哪些有文件依据。 7. 最小修复方案是什么。
如果 Bug 已经在线上出现,更要加限制:
这是线上相关问题,请更谨慎处理。 要求: 1. 不要连接生产数据库。 2. 不要要求我提供真实用户隐私数据。 3. 不要直接写修数据 SQL。 4. 先判断是否需要回滚、降级或临时止血。 5. 只给分析和最小修复建议,执行前必须确认。
第 2 步:让 CC 区分根因类型
请先判断这个 Bug 更像哪一类: 1. 参数校验问题。 2. 权限判断问题。 3. 数据查询问题。 4. 状态流转问题。 5. 缓存或异步任务问题。 6. 调用方传参问题。 7. 历史数据问题。 每一类都说明依据,不要猜。
根因分类可以这样看:
| 类型 | 常见表现 | 优先检查 |
|---|---|---|
| 参数校验 | 缺字段、类型错、边界值失败 | DTO、schema、validator |
| 权限判断 | 某些用户失败,管理员正常 | auth、role、policy、中间件 |
| 数据查询 | 返回空、数量不对、排序不对 | where 条件、join、分页、软删除 |
| 状态流转 | 某个状态下不能操作 | 状态机、枚举、业务分支 |
| 缓存异步 | 刷新后才好、延迟生效 | cache key、队列、定时任务 |
| 调用方传参 | 后端逻辑没变但前端传错 | 请求封装、接口文档、字段名 |
| 历史数据 | 新数据正常,旧数据异常 | 旧记录字段、迁移、默认值 |
第 3 步:确认最小修复
请给出最小修复方案。 要求: 1. 只修改和这个 Bug 直接相关的代码。 2. 不改数据库结构。 3. 不重构整个 Service。 4. 不改变旧接口兼容性,除非我确认。 5. 说明是否需要补测试。 6. 说明如何验证正常流程和异常流程。
最小修复方案要能说清“只改哪里”和“为什么够用”。如果 CC 的方案太大,直接收窄:
这个方案范围太大,请缩小。 请重新给最小方案: 1. 只修触发这个 Bug 的必要分支。 2. 不改公共接口设计。 3. 不改数据库结构。 4. 不重构无关模块。 5. 说明为什么这个小改动能解决复现步骤里的问题。
第 4 步:执行修复
可以按最小方案修复。 限制: 1. 只改计划中确认的文件。 2. 不顺手优化其他接口。 3. 不改生产配置。 4. 不连接生产数据库。 5. 修改后解释 diff。
执行后让 CC 解释本次行为变化:
请解释这次后端 Bug 修复的行为变化。 请说明: 1. 修复前什么输入会失败。 2. 修复后同样输入会怎样。 3. 哪些旧行为保持不变。 4. 是否影响错误码、响应字段或权限判断。 5. 是否需要同步更新接口文档或前端调用。
第 5 步:验收接口
/verify 请验收这个接口 Bug 修复。 要求覆盖: 1. 正常请求。 2. 缺少参数。 3. 参数错误。 4. 权限不足。 5. 数据不存在。 6. 旧调用方兼容性。 7. 日志或错误信息是否合理。
如果没有自动测试,让 CC 给手动验证方案:
如果当前项目没有相关测试,请给出人工验证方案。 要求: 1. 请求路径。 2. 请求参数示例。 3. 预期响应。 4. 异常场景。 5. 不能在生产环境执行的步骤。
特别注意历史数据
后端 Bug 有时不是代码错,而是历史数据不符合现在的规则。遇到这类情况,不要直接让 CC 写更新语句:
请判断这个问题是否可能由历史数据导致。 要求: 1. 只分析代码和字段规则,不连接生产库。 2. 说明需要检查哪些字段。 3. 如果需要修数据,只给出方案和风险,不要直接执行。 4. 说明是否需要备份、回滚和人工审批。
看到这些要拦住
- 一次性重构整个后端模块。
- 为了修接口顺手改数据库结构。
- 删除旧字段或修改错误码。
- 跳过权限和异常流程验收。
- 连接生产数据库验证。
- 把真实用户数据贴进对话。
收尾结论
请给出后端 Bug 修复收尾结论。 请输出: 1. 根因是什么。 2. 修复了哪条路径。 3. 哪些正常和异常场景已经验收。 4. 是否影响数据库、权限、缓存或调用方。 5. 是否建议进入 /code-review。
验收结果
- 你知道后端 Bug 要先梳理调用链。
- 你知道要区分参数、权限、数据、缓存和历史问题。
- 你知道修复要保持最小范围。
- 你知道后端接口必须验收正常和异常流程。