Files
AIOA/docs/engineering/mobile-schema-forms.md
T
2026-07-18 09:13:27 +08:00

47 lines
1.6 KiB
Markdown

# Flutter Schema 驱动表单卡片
## 目标
Flutter 页面不为每种 OA 表单重复编写固定控件。服务端返回版本化的 JSON Schema 和 UI Schema,客户端从受控组件目录中自动生成移动表单卡片。
```text
表单定义 API
├─ JSON Schema:字段、类型、必填、枚举和数据约束
└─ UI Schema:分组、顺序、标签、控件和移动端提示
Flutter Schema 解析
白名单控件渲染器
Riverpod 草稿状态与本地校验
用户确认卡片
后端再次校验并执行写操作
```
## 已实现控件
- `text`:单行文本
- `textArea`:多行文本
- `select`:受控枚举选择
- `dateTime`:日期和时间选择
未知字段或未知控件不能执行动态代码,只显示安全错误提示。后续控件必须通过客户端版本发布进入白名单,例如人员选择、部门选择、附件、金额、定位和明细表格。
## AI 边界
AI 可以根据自然语言生成表单字段建议值,但不能:
- 生成或执行 Dart、JavaScript 等客户端代码。
- 绕过 Schema 枚举和校验规则。
- 绕过用户确认直接提交。
- 自行增加后端未定义的字段。
- 修改隐藏的租户、申请人、审批人或权限字段。
客户端校验用于交互体验,Kotlin 后端仍必须重新执行权限、数据、状态、幂等和业务规则校验。
## 当前演示
工作台点击“发起请假”后,请假类型、开始时间、结束时间和原因均由 Schema 渲染。点击“AI 自动填写”只更新草稿状态,点击“检查并确认”后才展示最终确认卡片。