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

1.6 KiB

Flutter Schema 驱动表单卡片

目标

Flutter 页面不为每种 OA 表单重复编写固定控件。服务端返回版本化的 JSON Schema 和 UI Schema,客户端从受控组件目录中自动生成移动表单卡片。

表单定义 API
  ├─ JSON Schema:字段、类型、必填、枚举和数据约束
  └─ UI Schema:分组、顺序、标签、控件和移动端提示
          ↓
Flutter Schema 解析
          ↓
白名单控件渲染器
          ↓
Riverpod 草稿状态与本地校验
          ↓
用户确认卡片
          ↓
后端再次校验并执行写操作

已实现控件

  • text:单行文本
  • textArea:多行文本
  • select:受控枚举选择
  • dateTime:日期和时间选择

未知字段或未知控件不能执行动态代码,只显示安全错误提示。后续控件必须通过客户端版本发布进入白名单,例如人员选择、部门选择、附件、金额、定位和明细表格。

AI 边界

AI 可以根据自然语言生成表单字段建议值,但不能:

  • 生成或执行 Dart、JavaScript 等客户端代码。
  • 绕过 Schema 枚举和校验规则。
  • 绕过用户确认直接提交。
  • 自行增加后端未定义的字段。
  • 修改隐藏的租户、申请人、审批人或权限字段。

客户端校验用于交互体验,Kotlin 后端仍必须重新执行权限、数据、状态、幂等和业务规则校验。

当前演示

工作台点击“发起请假”后,请假类型、开始时间、结束时间和原因均由 Schema 渲染。点击“AI 自动填写”只更新草稿状态,点击“检查并确认”后才展示最终确认卡片。