推荐架构:业务块协议 2.0

不是另造一套后台设计器,而是在现有业务块体系上增加“适用端、块类型、单表聚合数据集、分端模板”。

设计态 → 保存校验 → 代码生成 → 后台运行态
DESIGNER

后台页面设计器

后台素材面板仅展示 surfaces: ["admin"] 的业务块。

指标卡 折线图 柱状图 饼图
CONTRACT

统一块定义与布局 JSON

kind: chartsurfacesdatasetcharttemplates

数据表 + 维度 + 指标 + 筛选 + 排序 + Top N
GENERATOR

注册、校验与生成

现有 BusinessBlockRegistryService 继续负责定义加载和字段校验。

生成 Vue + ECharts 组件 生成 Controller / Service / Mapper
RUNTIME

生成后的 RuoYi 后台

每个块调用自己的只读聚合接口,返回统一 dimensions + series

权限注解 + 参数白名单 + 空态/错误态
业务块定义(平台内置)
{
  "code": "admin_line_chart",
  "kind": "chart",
  "surfaces": ["admin"],
  "placement": "embedded",
  "chartType": "line",
  "datasetSchema": "single-table-aggregate-v1",
  "templates": {
    "adminComponent": "...",
    "backend": "..."
  }
}
页面中的块实例(用户配置)
{
  "blockCode": "admin_line_chart",
  "title": "近 30 天销售趋势",
  "dataset": {
    "table": "shop_order",
    "dimension": { "field": "create_time", "timeUnit": "day" },
    "metrics": [{ "field": "amount", "aggregate": "sum" }],
    "filters": [{ "field": "status", "operator": "eq", "value": "PAID" }]
  }
}

关键边界

建议结论:业务块仍是一套注册表,但模板和可见范围按端分开;数据集能力作为图表块的公共子协议,而不是复制到四个块里。