## [ERR-20260425-005] 测试 cleanup 关闭 FK 后 cascade 失效，新增子表必须显式清理

**日期**: 2026-04-25
**类别**: 测试基础设施

### 问题
新加的 `corp_hr.adp_pto_schedules` 表有 FK 到 `users(id)` ON DELETE CASCADE。集成测试中创建 schedule + user，afterEach 调 `cleanupDatabase` 清 user，下一轮测试查询 schedule 时报：
```
Inconsistent query result: Field user is required to return data, got null instead.
```

### 根因
`testing/backend/helpers/cleanup.helper.ts:cleanupAllData` 为了避免 50+ FK 引用 users 表的链式问题，主动执行：
```sql
SET session_replication_role = 'replica';   -- 禁用 FK
DELETE FROM platform_iam.users WHERE ...
SET session_replication_role = 'origin';
```
FK 被禁用后 cascade delete 不生效。新加的 `adp_pto_schedules` 没在 cleanup 列表里 → user 删了，schedule 留下指向 null 的 userId → 下次查询带 `include user` 触发"required relation null"。

### 解决方案（短期）
在测试用例的 `beforeEach` + `afterEach` 显式 `prisma.adpPtoSchedule.deleteMany({})`。

### 解决方案（长期，建议沉淀到 cleanup helper）
新加跨 schema 的子表（FK → users）时，要么：
1. 把 deleteMany 加到 `cleanupAllData` 的"关联表"列表里
2. 或者在 `cleanup.helper.ts` 里对该表做"按时间戳过滤的精准清理"

### 启示
任何 FK 到 users 的新表，必须同步检查 `cleanup.helper.ts:cleanupAllData` 是否会清理它，否则集成测试会出现 inconsistent query 错误。

---
