# 表单管理 - 数据模型文档

> **版本**: v1.0  
> **最后更新**: 2026-01-11  
> **维护者**: FFOA 开发团队  
> **状态**: 🚧 Draft（基于现有文档与代码实现推导）

---

## ✅ 机器读取区（必填）

### Schema 摘要

| 字段 | 内容 |
|------|------|
| Schema 名称 | `platform_form`（主） + `corp_approval`（审批引擎） |
| 业务域 | 表单设计、流程配置、审核发布 |
| 核心实体 | FormDefinition、FormVersion、ReleaseSnapshot |

### 实体字段清单（最小）

| 实体 | 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|------|
| FormDefinition | id | UUID | ✅ | 表单定义 ID |
| FormDefinition | key | string | ✅ | 表单标识 |
| FormDefinition | status | enum | ✅ | DRAFT/PUBLISHED/DISABLED/ARCHIVED |
| FormVersion | id | UUID | ✅ | 表单版本 ID |
| FormVersion | definitionId | UUID | ✅ | 关联表单定义 |
| FormVersion | version | number | ✅ | 版本号 |
| FormVersion | status | enum | ✅ | DRAFT/PENDING_REVIEW/PUBLISHED/REJECTED/DEPRECATED |
| ReleaseSnapshot | id | UUID | ✅ | 发布快照 ID |
| ReleaseSnapshot | formDefinitionId | UUID | ✅ | 关联表单定义 |
| ReleaseSnapshot | formVersionId | UUID | ✅ | 关联表单版本 |
| ReleaseSnapshot | processVersionId | UUID | ❌ | 关联流程版本 |
| ReleaseSnapshot | status | enum | ✅ | DRAFT/PENDING/REJECTED/ACTIVE/ARCHIVED |

### 关系与约束

| 关系/约束 | 说明 |
|-----------|------|
| FormDefinition 1:N FormVersion | 表单定义与版本 |
| FormDefinition.organizationId → Organization | 组织专属表单的归属（v2.0；platform 级表单为 null） |
| ReleaseSnapshot 绑定表单与流程 | 设计态发布快照（**全局唯一 ACTIVE 快照**，不再分区域） |
| FormInstance.regionId | 提交时由 `user.regionId` 写入，仅作环境标记 |
| 表单可用范围 | `Organization.organizationRegions[]` 决定，间接映射；FormDefinition 本身**没有 regionId 列** |

> ⚠️ **v2.0 架构**：FormDefinition / ReleaseSnapshot / FormWebhook 的 `regionId` / `regionScope` /
> `allowedRegions` 字段已彻底删除。事实源：
> [`backend/prisma/schema/FORM_ORGANIZATION_ARCHITECTURE.md`](../../../backend/prisma/schema/FORM_ORGANIZATION_ARCHITECTURE.md)。
> 核心原则："**组织决定范围，快照管理版本，实例记录环境**"。

---

## 🧭 人类阅读区（可选）

### 说明

- 表单管理使用 `platform_form` 中的表单定义/版本/快照数据。  
- 审批流程数据来自审批引擎（`corp_approval`），详见审批模块文档。
- 区域可见性通过 `Organization → OrganizationRegion → Region` 的多对多关系间接表达，
  service 层在查询时基于 `user.regionId` 过滤；详见
  [FORM_ORGANIZATION_ARCHITECTURE.md](../../../backend/prisma/schema/FORM_ORGANIZATION_ARCHITECTURE.md)。
