# 测试 admin factory 维护独立权限列表 — 新增模块必须同步

## 现象

PR #218（flow-diagram）的 `backend-integration` CI 失败 11 分钟，但 build / contract / migration 等其他 quality-gates 全绿。本地测试代码看着完全正常。

## 根因

`testing/backend/helpers/factories/user.factory.ts` 的 `ensureAdminRoleAndPermissions()` 内**硬编码一份独立的权限列表**（30+ 个 `{ resource, action }`），分配给"集成测试 admin 角色"。新模块如果加了 `@RequirePermissions('flow:create')` 等检查，但忘了同步这份列表，集成测试用 admin 调接口就被 `PermissionsGuard` 直接 403 → 整套测试 fail。

production 端的种子文件 `backend/prisma/seeds/roles.seed.ts` 已经加了 `flow:*`（system admin 角色用），但**测试 factory 用的是独立权限列表**，两者不互通。

## 修复

往 `user.factory.ts` 的 `permissions` 数组里追加新模块的所有 `@RequirePermissions(...)` 用到的 `resource:action` 对：

```ts
const permissions = [
  // ... 现有
  // 新模块
  { resource: 'flow', action: 'create' },
  { resource: 'flow', action: 'read' },
  { resource: 'flow', action: 'update' },
  { resource: 'flow', action: 'delete' },
  { resource: 'flow', action: 'share' },
];
```

## 防御建议

新增带权限保护的模块时，**checklist 加一条**：
- [ ] `roles.seed.ts` 给生产 admin 加权限
- [ ] `testing/backend/helpers/factories/user.factory.ts` 同步加权限

或更彻底地：让测试 factory 直接读 `roles.seed.ts` 的 system admin 权限集（DRY），消除"两份权限列表"的双写问题。

## 排查路径

集成测试 fail 但 build/contract 全绿 → 怀疑权限/setup 问题：

```bash
# 1. 看 controller 用了哪些权限
git grep "@RequirePermissions" backend/src/modules/<new-module>/

# 2. 看测试 factory 是否覆盖
grep -A 5 "permissions = \[" testing/backend/helpers/factories/user.factory.ts | grep <new-module>
```

不匹配就是这个问题。

## 触发场景

- 新增带 `@RequirePermissions` 的 controller
- 测试 fail with 403 但代码逻辑无误
- "我明明在 roles.seed.ts 加了 flow:* 啊" 的困惑
