# ERR-20260519-009 测试数据库 enum 滞后于新迁移导致 22P02

## 症状

集成测试运行时遇到：

```
ConnectorError(ConnectorError { ... QueryError(PostgresError {
  code: "22P02",
  message: "invalid input value for enum platform_audit.\"AuditAction\": \"SSO_LOGIN_SUCCESS\""
}) })
```

新增的 audit action enum 值（`SSO_LOGIN_SUCCESS` / `SSO_BINDING_FILLED` /
`SSO_JIT_CREATED` / `SSO_BINDING_UPGRADED_FROM_LDAP` / `SSO_BINDING_CONFLICT`）
PG 端 enum 不识别，业务代码塞值时 Postgres 拒绝。

## 根因

`testing/scripts/run-backend-integration.sh` 的逻辑：

> 仅在首次（schema 不存在）时重建，避免每次清空模块种子数据。
> 用 `--force-reset` 参数可以强制重建。

测试容器 `ffoa-test-postgres` 是**共享/复用**的（CI 跑测试一次跑一遍上百个 suite，
每次都全量重建会爆 8 分钟）。所以增量 schema 变更不会自动应用——新建迁移
（PR 引入新 enum 值 / 新表 / 新列）后必须显式 `--force-reset` 刷新一次测试 schema。

## 解决

```bash
cd testing
bash scripts/run-backend-integration.sh --force-reset backend/integration/organization/sso.api.test.ts
```

## 触发场景

- 任何引入新 prisma migration（schema 变更）的 PR 第一次跑 L1 集成测试。
- 别人本机有 ffoa-test-postgres 容器留存（schema 是上次 force-reset 时的快照）。
- CI 复用 runner（容器跨 job 复用 docker volume）。

## 工程化保险

可选改进：在 `scripts/dev/agent-pool/agent-claim.sh` 或 setup-worktree 时检查
`prisma/migrations/` 最新目录的 mtime 与测试 schema 的应用时间戳，自动触发
`--force-reset`——但成本不低（每次 claim 多几秒）。当前手动 `--force-reset` 可接受，
只需开发记得"新迁移 = 第一次跑 L1 加 --force-reset"。
