---
name: regression-and-isolation-rules
description: 回归防护规则、变更影响分析规则和测试数据隔离规则。
---

# 回归防护与数据隔离规则

## 回归防护规则

> 每个手工发现的 bug 必须在修复的同时补一个测试用例。

- 用户手工测试发现问题 → 修复代码 → **同时在 `describe('回归测试')` 中添加对应用例**
- 回归用例必须精确复现问题场景
- 禁止"只修 bug 不加测试"——没有回归用例的修复视为未完成
- 每轮手工测试结束后，检查修复的问题数 vs 新增回归用例数，两者必须一致

## 变更影响分析规则

> 修改后端返回值后，必须验证前端 interface 仍然匹配。

- 修改 service 层的 return 字段（增/删/改名）→ 必须运行 `npx ts-node testing/scripts/response-snapshot-check.ts`
- 修改 DTO 字段名 → 必须运行 `npx ts-node testing/scripts/contract-check.ts`
- 修改权限种子 → 必须运行 `npx ts-node testing/scripts/permission-matrix-check.ts`
- 建议纳入 pre-commit hook 或 CI 流程

## 测试数据隔离规则

> 测试必须自带数据、自清理数据，不破坏种子数据。

- **禁止依赖种子数据**：测试用例必须自己创建需要的用户、组织、部门等数据
- **禁止 TRUNCATE CASCADE**：只清理测试创建的数据，不清理种子表
- **时间戳标识**：测试创建的数据名称必须含时间戳（如 `测试组织_${Date.now()}`），便于识别和清理
- **afterAll 清理**：每个 describe 块的 afterAll 中，按创建的逆序删除测试数据
- **清理顺序**：先清理业务数据 → 再清理用户部门关联 → 最后清理用户/组织（注意外键约束）
- **验证隔离**：测试运行前后，检查种子账号（itadmin, test.dev1 等）是否仍然存在
