规则导入导出

April 7, 2026 · View on GitHub

功能状态:开发中(默认关闭,需通过配置开关启用)

功能概述

支持将规则(含版本历史)导出为 JSON 文件,以及从 JSON 文件导入规则。适用于规则备份、跨系统迁移、批量配置等场景。

导出格式

{
  "formatVersion": "1.0",
  "exportedAt": "2026-04-08T10:30:00",
  "exportedBy": "admin",
  "rules": [
    {
      "rule": {
        "ruleKey": "test-rule-001",
        "ruleName": "测试规则",
        "ruleDescription": "用于测试的示例规则",
        "groovyScript": "def amount = input.amount...",
        "version": 3,
        "enabled": true,
        "environmentId": null
      },
      "versions": [
        {
          "version": 3,
          "groovyScript": "...",
          "changeReason": "修改阈值",
          "changedBy": "admin"
        },
        {
          "version": 2,
          "groovyScript": "...",
          "changeReason": "新增条件",
          "changedBy": "admin"
        }
      ]
    }
  ]
}

API 接口

方法路径说明
GET/api/v1/export/rules导出所有规则
GET/api/v1/export/rules/{ruleKey}导出单条规则
POST/api/v1/export/rules/batch批量导出(body: ruleKey 列表)
POST/api/v1/import/rules导入规则(body: RuleExportData JSON)

导入响应示例

{
  "success": true,
  "importedCount": 8,
  "skippedCount": 2,
  "failedCount": 0,
  "failures": [],
  "message": "导入完成: 8 条成功, 2 条跳过, 0 条失败"
}

前端页面

路由:/import-export,侧边栏菜单项「导入导出」。

页面分两个区域:

导出区域

  • 「导出全部规则」按钮:一键导出所有规则
  • 单条导出:输入 ruleKey 导出指定规则
  • 批量导出:多行输入多个 ruleKey,批量导出

导入区域

  • 拖拽上传 JSON 文件
  • 解析后显示预览表格(规则 Key、名称、状态、版本数量)
  • 确认导入按钮
  • 导入结果统计(成功/跳过/失败数量 + 失败详情)

导入规则

  • 跳过已存在:如果目标系统已有相同 ruleKey 的规则,默认跳过
  • 保留版本历史:导入时会同时写入版本记录
  • 不覆盖:暂不支持覆盖模式,已有规则不会被更新

已知限制(待完善)

限制说明
仅支持规则不支持决策流的导入导出
无覆盖模式已存在的规则只能跳过,不能更新
无环境定向导入时保留源环境的 environmentId,无法指定目标环境
不含关联数据导出内容不包含灰度配置、名单数据、审计日志

配置开关

application.yml 中:

rule-engine:
  features:
    import-export:
      enabled: false   # 设为 true 启用导入导出功能

前端侧边栏菜单项会根据此配置自动隐藏/显示。