模型与字段

模型管理

Model 是每个 AuraBoot 应用的基础。一个 Model 描述你希望存储或展示的业务数据。基于这份定义,AuraBoot 可以创建表、暴露动态 API、渲染表单字段、校验输入并绑定权限。

Model 类型

AuraBoot 针对不同的数据职责使用不同的 Model 类型:

类型物理表典型用途
entity客户、订单、任务、发票、Lead
view由查询支撑的只读列表或详情投影
tree层级树形数据(分类、组织结构)
virtual无物理表的虚拟模型

大多数业务模块从 entity 模型起步。当你需要读优化的页面、报表、Dashboard 或来自多个来源的组合数据时,view 模型才会派上用场。

Model 定义

一个简单的 entity 模型如下:

{
  "code": "crm_lead",
  "name": "Lead",
  "modelType": "entity",
  "tableName": "mt_crm_lead",
  "description": "Sales lead tracking",
  "fields": [
    { "code": "lead_name", "name": "Lead Name", "dataType": "string", "required": true },
    { "code": "email", "name": "Email", "dataType": "string", "unique": true },
    { "code": "status", "name": "Status", "dataType": "enum", "dictCode": "crm_lead_status" }
  ]
}
属性必填说明
code稳定的 Model 标识,通常为 snake_case
name人类可读的标签
modelTypeentity、view、tree 或 virtual
tableName物理表名;可自动生成
description业务用途与使用说明
fields由 API 与 UI 渲染的 Field 定义

Field 类型

字段库中的字段类型、状态和使用情况入口

数据类型存储UI 行为示例
stringvarchar单行输入名称、标题
texttext多行输入备注、描述
integerbigint数字输入数量
decimalnumeric小数输入金额、价格
moneynumeric多币种金额价格、合同金额
booleanboolean开关或复选框启用标识
datedate日期选择器到期日期
datetimetimestamp日期-时间选择器事件时间
enumvarchar下拉、单选、徽章(配 dictCode)状态
referencebigint可搜索的 picker负责人
jsonjsonb结构化对象扩展属性
computedvirtual只读展示总金额

Field 类型不仅是数据库层面的决定,也影响校验、生成的 UI 控件、过滤、排序、显示格式与 API 负载处理。

Dictionary

当某个字段的取值集合受控时,使用 Dictionary:

{
  "code": "crm_lead_status",
  "name": "Lead Status",
  "items": [
    { "value": "new", "label": "New", "sortNo": 1 },
    { "value": "contacted", "label": "Contacted", "sortNo": 2 },
    { "value": "qualified", "label": "Qualified", "sortNo": 3 },
    { "value": "lost", "label": "Lost", "sortNo": 4 }
  ]
}

Dictionary 取值适用于状态、分类、优先级、来源、地区等需要在表单、列表、过滤器、Dashboard 和 Workflow 之间保持一致的取值。

Reference 字段

Reference 字段连接 Model:

{
  "code": "assigned_to",
  "name": "Assigned To",
  "dataType": "reference",
  "referenceModelCode": "sys_user",
  "refDisplayField": "display_name"
}

Reference 用于列表列、详情页、子表、权限、Workflow 与报表。一种常见模式是一个父 Model 携带子记录:

crm_account
  -> crm_contact.account_id
  -> crm_opportunity.account_id
  -> crm_activity.account_id

系统字段

AuraBoot 会向托管的 entity 表添加标准系统字段:

字段用途
id内部主键
pid稳定的公开标识
tenant_idTenant 隔离
created_at创建时间戳
updated_at最后更新时间戳
created_by创建者用户
updated_by最后修改者

不要在 Model JSON 里重复定义这些字段。在过滤、审计视图与集成中按需使用即可。

设计建议

  • 倾向使用稳定、业务可读的 Model code,例如 crm_leadpm_task
  • 数据存在后保持 Field code 稳定。重命名字段属于一次迁移。
  • 对驱动 Workflow 的状态使用 Dictionary。
  • 使用 Reference 字段,而不是在记录间复制显示名。
  • 为含有超出标签业务含义的字段补充描述。
  • 从 entity 模型起步;只有当某个页面或报表需要组合投影时才引入 view 模型。

下一步