# 表单引擎 - 错误码文档

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

---

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

### 错误码清单（最小）

| 错误码 | HTTP | 说明 | 处理建议 |
|--------|------|------|----------|
| VALIDATION_ERROR | 400 | 请求参数验证失败 | 校验请求参数 |
| UNAUTHORIZED | 401 | 未授权访问 | 重新登录获取 Token |
| FORBIDDEN | 403 | 无权限执行操作 | 检查权限 |
| NOT_FOUND | 404 | 资源不存在 | 确认标识是否正确 |
| FORM_NOT_FOUND | 404 | 表单不存在 | 校验 formIdentifier |
| FORM_KEY_EXISTS | 409 | 表单 Key 已存在 | 更换表单 Key |
| FORM_SLUG_EXISTS | 409 | 表单 Slug 已存在 | 更换表单 Slug |
| FORM_HAS_INSTANCES | 409 | 表单已有实例，无法删除 | 先处理实例或归档 |
| FORM_NOT_PUBLISHED | 400 | 表单未发布 | 先发布表单 |
| FORM_NO_PUBLISHED_DEFAULT_VERSION | 400 | 无已发布默认版本 | 发布并设为默认 |
| FORM_NOT_AVAILABLE_IN_REGION | 403 | 区域不可用 | 检查区域权限 |
| VERSION_NOT_FOUND | 404 | 版本不存在 | 校验版本号 |
| VERSION_NOT_EDITABLE | 400 | 版本不可编辑 | 仅草稿可编辑 |
| VERSION_NOT_DRAFT | 400 | 仅草稿可提交审核 | 回到草稿状态 |
| VERSION_NOT_PENDING_REVIEW | 400 | 仅待审核可审核 | 检查状态 |
| VERSION_ALREADY_PUBLISHED | 400 | 版本已发布 | 选择其他版本 |
| INSTANCE_NOT_FOUND | 404 | 实例不存在 | 校验实例 ID |
| INSTANCE_NOT_EDITABLE | 400 | 实例不可编辑 | 检查实例状态 |
| INSTANCE_VERSION_MISMATCH | 400 | 版本不匹配 | 重新获取实例 |
| FORM_DATA_VALIDATION_FAILED | 400 | 表单数据校验失败 | 按字段提示修复 |
| DUPLICATE_BUSINESS_KEY | 409 | 业务单号重复 | 重新生成单号 |

---

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

### 分类说明（如需）

- 验证错误 / 权限错误 / 资源错误 / 冲突错误 / 业务错误

### 示例响应（如需）

```json
{
  "success": false,
  "error": {
    "code": "FORM_NOT_FOUND",
    "message": "表单不存在"
  },
  "statusCode": 404
}
```
