Appearance
本文是 AI 模块生成器 的技术参考,包含字段类型、CLI 命令和生成产物说明。
21 种支持的字段类型
| 类型 | Java 类型 | 数据库类型 | 前端组件 | 说明 |
|---|---|---|---|---|
string | String | varchar(100) | Input | 短文本 |
text | String | text | Input.TextArea | 长文本 |
integer | Integer | int | InputNumber | 整数 |
decimal | BigDecimal | decimal(18,2) | InputNumber | 金额/小数 |
boolean | Integer | tinyint | Switch | 开关 |
date | LocalDate | date | DatePicker | 日期 |
datetime | LocalDateTime | datetime | DatePicker (show-time) | 日期时间 |
enum | String | varchar(100) | Select | 固定枚举 |
dict | String | varchar(100) | Select | 系统字典 |
file | String | varchar(100) | FileField | 附件上传 |
document | String | varchar(100) | DocumentField | ONLYOFFICE 文档 |
richtext | String | longtext | RichTextField | 富文本 |
multiSelect | String | varchar(500) | MultiSelectField | 多选标签 |
userSelect | String | varchar(100) | UserSelectField | 用户选择 |
deptSelect | String | varchar(100) | DeptSelectField | 部门选择 |
transfer | String | text | TransferField | 穿梭框 |
treeSelect | String | varchar(100) | TreeSelectField | 树选择 |
dictSelect | String | varchar(100) | DictSelectField | 字典选择 |
jsonEditor | String | text | JsonEditorField | JSON 配置编辑 |
user | Integer | int | — | 用户 ID(旧版兼容) |
dept | Integer | int | — | 部门 ID(旧版兼容) |
复杂字段(file、document、richtext、multiSelect、transfer、treeSelect、userSelect、deptSelect、dictSelect、jsonEditor)使用平台已有的 generated-fields 组件,不手写组件代码。
子表(主从结构)
ModuleSpec 支持 childTables 定义一对多关系:
- 子表字段限制为简单类型:
string、text、integer、decimal、boolean、date、datetime、enum - 自动生成子表 Entity/Mapper/Service/ServiceImpl
- 主表 Controller 包含子表的批量保存(先删后插)和级联加载
- 前端表单中子表以内联可编辑表格呈现
CLI 工具参考
oars-tools CLI 位于 oars-tools/src/cli/index.js,可通过 node src/cli/index.js <command> 直接调用。
| 命令 | 说明 |
|---|---|
ai:app-brief --prompt <text> --out <file> [--stream] | 将模糊需求分析为 AppBrief JSON |
ai:module-spec --prompt <text> [--out <file>] | 根据自然语言生成单个 ModuleSpec JSON |
ai:prompt-suggestions [--count <N>] | 生成提示词示例 |
ai:config | 显示 AI 提供商配置状态 |
create:module <name> --title <title> --out <file> | 创建默认 ModuleSpec |
create:module --spec <file> [--root <dir>] [--source-mode plugin|core] [--dry-run] [--force] | 从 ModuleSpec 生成源码 |
create:module --spec <file> --source-mode plugin --plugin-version <version> --module-version <version> --base-oars-version <version> --customer-code <code> | 生成带交付元数据的源码插件 |
plugin:remove --manifest <file> [--force] | 根据插件清单删除生成的文件 |
plugin:delivery-check --manifest <file> | 校验源码插件交付 manifest、descriptor 和生成文件 |
AI 配置
AI 配置通过环境变量或 oars-tools/.env 文件设置:
| 变量 | 说明 | 默认值 |
|---|---|---|
OARS_AI_API_KEY | AI 服务 API 密钥 | — |
OARS_AI_BASE_URL | 自定义 API 地址(代理/自托管) | — |
OARS_AI_MODEL | 模型名称 | — |
OARS_AI_PROVIDER | 提供商 | openai |
生成产物一览
源码插件模式文件清单
oars-plugins/<pluginKey>/
├── delivery/
│ └── <module>.delivery.json # 客户源码交付描述
├── sql/
│ ├── <module>.install.sql # 建表+菜单+权限+选项源
│ ├── <module>.uninstall.sql # 禁用菜单和权限(不删数据表)
│ └── upgrade/
│ └── README.md # 后续前向升级脚本目录说明
├── modules/
│ └── <module>.json # 插件模块清单
oars-java/oars-app/src/main/java/com/oars/plugins/<pluginKey>/
├── entity/
│ ├── <Entity>.java # 主表实体
│ └── <ChildEntity>.java # 子表实体(可选)
├── mapper/
│ ├── <Entity>Mapper.java # 主表 Mapper
│ └── <ChildEntity>Mapper.java # 子表 Mapper(可选)
├── service/
│ ├── <Entity>Service.java # 主表 Service 接口
│ └── <ChildEntity>Service.java # 子表 Service 接口(可选)
├── service/impl/
│ ├── <Entity>ServiceImpl.java # 主表 Service 实现
│ └── <ChildEntity>ServiceImpl.java # 子表 Service 实现(可选)
└── controller/
└── <Entity>Controller.java # REST 控制器
oars-web/apps/web-antd/src/plugins/<pluginKey>/
├── api/
│ └── <module>.ts # TypeScript API 客户端
└── views/
└── <module>/
└── index.vue # 管理列表页
└── <module>/
└── form.vue # 移动端表单页(可选)源码插件交付元数据
源码插件模式会生成两个 JSON 元数据文件:
| 文件 | 说明 |
|---|---|
modules/<module>.json | 插件模块清单,记录生成文件、菜单、表、插件版本、模块版本和产品基线 |
delivery/<module>.delivery.json | 交付描述,记录 Git commit、生成器版本、ModuleSpec 哈希、SQL、源码边界和检查命令 |
生成命令可传入交付参数:
bash
node oars-tools/src/cli/index.js create:module \
--spec ./expense.module.json \
--source-mode plugin \
--plugin-key acme-expense \
--plugin-version 1.0.0 \
--module-version 1.0.0 \
--base-oars-version oars-v1.4.0 \
--customer-code acme交付检查命令:
bash
node oars-tools/src/cli/index.js plugin:delivery-check \
--manifest oars-plugins/acme-expense/modules/expense.json源码交付、客户分支、升级 SQL 和回滚边界见源码交付与版本控制。
DSL 模式产物
无源码文件。数据库写入:
| 表 | 内容 |
|---|---|
biz_runtime_app | 应用定义(appKey、appName、generationMode) |
biz_runtime_module | 模块定义(moduleKey、tableName、specJson) |
biz_runtime_field | 字段定义(fieldName、fieldType、flags) |
sys_menu | 菜单入口(/runtime/biz/{moduleKey}) |
sys_mobile_entry | 移动端入口(可选) |
权限体系
生成器自动创建 4 个菜单/按钮权限条目:
| 权限码 | 类型 | 说明 |
|---|---|---|
biz:<name> | menu | 模块列表页入口 |
biz:<name>:create | button | 新增 |
biz:<name>:update | button | 编辑 |
biz:<name>:delete | button | 删除 |
同时自动授权给超级管理员角色(roleId=1)。
