跳转到主要内容
Clinford Jordano Valencia
全部项目
平台Web移动端

配置即代码的 Schema 驱动流程

一个由配置驱动的 UI 平台,配合基于 Git 的配置即代码,让规则变更在数小时内上线,无需前端发布。

技术栈
TypeScript · jsonform · Git · CI/CD · Schema validation

问题

面向众多市场的流程意味着重复的代码,每当产品或合规想调整某个地区的规则,就要开一张工程工单。

方案

  • 用 schema 渲染表单。 UI 通过 jsonform 读取 JSON 或 YAML 配置:schema 生成字段和校验规则。自定义动作,例如启动原生桥接,仍保留在代码中。
  • 同一步骤,不同结果。 配置决定每个市场和平台上某一步骤的行为。在支持原生能力的地方,该步骤显示引导和扫描按钮;否则显示普通表单字段和“继续”按钮。产品团队在配置里调整,而不是改代码。
  • 配置即代码。 变更通过 Git 提交。每次变更都会自动创建 pull request,并运行带严格 schema 校验的 CI,校验由 TypeScript 类型支撑,因此有问题的配置在上线前就会失败。

两个值得说明的决定

渲染交给 jsonform,动作交给代码。 完全由服务端驱动、执行服务端下发的任意逻辑的 UI,会带来远程代码执行风险和性能问题。数据驱动渲染加上绑定到预编译处理函数的动作,既保留灵活性,又避免了这些风险。

用 Git,而不是管理后台表单。 没有治理的轻松编辑会弄坏生产流程。pull request、类型检查和 CI 让每次变更可追溯、经过评审、易于回滚。

结果

配置发布不再依赖前端发布,多市场更新从数周缩短到数小时,地区性的代码重复也不再增长。