多环境管理

April 7, 2026 · View on GitHub

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

功能概述

支持 DEV / STAGING / PRODUCTION 三套环境,每套环境拥有独立的规则集。支持环境间规则克隆(发布),实现规则从开发→预发布→生产的渐进式上线流程。

数据模型

environments 表

字段类型说明
idBIGINT主键
nameVARCHAR(255)环境名称(唯一)
typeVARCHAR(20)环境类型:DEV / STAGING / PRODUCTION
descriptionTEXT环境描述
created_atTIMESTAMP创建时间
updated_atTIMESTAMP更新时间

默认三条记录由迁移脚本 V7__create_environments.sql 初始化。

规则与环境的关联

rules 表和 decision_flows 表均有 environment_id 外键字段(由 V7 和 V9 迁移脚本添加),关联到 environments.id

API 接口

方法路径说明
GET/api/v1/environments获取所有环境列表
GET/api/v1/environments/{id}获取环境详情
GET/api/v1/environments/{id}/rules获取环境下的规则
POST/api/v1/environments/{from}/clone/{to}克隆环境规则

克隆规则请求示例

POST /api/v1/environments/DEV/clone/STAGING
Content-Type: application/json

{
  "overwrite": true,
  "operator": "admin"
}

响应:

{
  "success": true,
  "clonedCount": 12,
  "skippedCount": 3,
  "message": "克隆完成: 12 条已克隆, 3 条已跳过"
}

前端页面

路由:/environments,侧边栏菜单项「多环境」。

页面展示:

  • 三张环境卡片(DEV / STAGING / PRODUCTION),显示环境类型、描述、规则数量
  • 「克隆到」按钮,弹出克隆配置弹窗(目标环境 + 是否覆盖)

已知限制(待完善)

限制说明
无环境切换器没有全局环境下拉框,规则列表页不支持按环境筛选
无环境 CRUD API后端 Service 有 createEnvironment 方法,但 Controller 未暴露
克隆仅覆盖规则DecisionFlow 也支持 environment_id,但克隆操作未包含决策流
执行未隔离规则执行时未按环境过滤,所有环境的规则混在一起查
缓存未隔离RuleCacheService 缓存 key 不包含环境维度

配置开关

application.yml 中:

rule-engine:
  features:
    multi-environment:
      enabled: false   # 设为 true 启用多环境功能

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