status: propose created: 2026-05-25 complexity: 🔴复杂
当前 Forge 的低代码与代码生成能力已经形成多条入口:
低代码应用管理:围绕业务领域、数据模型、应用搭建、预览、发布运行。模型设计:维护 ai_lowcode_model,支持模型字段、DDL 预览和应用选择模型。AI 表单生成 / 应用配置管理:围绕 ai_crud_config 直接生成 searchSchema/columnsSchema/editSchema/apiConfig,并支持高级 JSON 编辑和代码下载。旧代码生成 / 表模型管理:围绕 gen_table/gen_table_column 导入数据库表、配置字段、预览代码、下载代码。这些能力底层都服务于同一个目标:用户描述需求后,平台生成业务模型、应用页面和可运行/可二次开发的代码。但目前入口分散,业务用户需要理解“模型设计、JSON 配置、表模型、代码生成、应用发布”等多个概念,开发者也需要在 ai_crud_config 与 gen_table 两套模型之间切换。
本次目标是整合为一条应用交付主链路,并保留模型管理作为独立资产入口:
用户需求输入 → AI 业务模型自动生成 → 模型确认/设计 → 应用设计 → 预览发布 → 代码预览/下载 → 二次开发
完成后应达到:
generator/table 的表导入、字段配置、AI Schema 生成能力。forge-admin-ui/src/views/ai/lowcode-apps.vue:低代码应用列表页,按业务领域组织应用,支持新建应用、进入搭建器、打开运行态、迁移领域、导入/导出配置、删除。forge-admin-ui/src/views/ai/lowcode-models.vue:数据模型设计页,调用 lowcodeModelPage/detail/create/update/delete,使用 LowcodeModelDesigner 编辑 modelSchema,支持 lowcodeDdlPreview 预览建表 DDL。forge-admin-ui/src/views/ai/lowcode-builder.vue:应用搭建器,选择领域和模型,维护应用基础信息、页面配置、预览和发布。forge-admin-ui/src/api/lowcode-crud.js:低代码 API 已包含 app/domain/model 接口,也已经临时暴露 genTablePage/genTableColumnList/genDatasourceEnabled,说明模型设计与旧代码生成已有局部交叉。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/LowcodeAppController.java:提供 /ai/lowcode/app/page、详情、草稿、预览、发布、版本、回滚、迁移领域。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/LowcodeModelController.java:提供 /ai/lowcode/model/page/list/{id}、新增修改、启停、删除、校验、DDL 预览。forge-admin-ui/src/views/ai/crud-config.vue:应用配置管理页,面向 ai_crud_config,提供“高级 JSON”“AI 生成”“预览”“下载”等操作。forge-admin-ui/src/views/ai/crud-generator.vue:AI 辅助生成页,使用流式对话生成 searchSchema/columnsSchema/editSchema/apiConfig/createTableSql,仍以纯 JSON 配置为核心产物。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/AiCrudConfigController.java:提供 /ai/crud-config/page、CRUD、/render/{configKey}、/ai/generate、/ai/generateFromTable、/codegen/download/{configKey}。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/AiCrudConfigGenerateService.java:AI 生成服务已能解析 modelSchema/pageSchema,并通过 LowcodeRuntimeConfigBuilder 补齐运行时配置,是迁移到低代码协议的重要基础。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/CrudGeneratorController.java 与 CrudGeneratorStreamService.java:提供 /ai/crud-generator/stream-generate SSE,当前请求 DTO StreamGenerateRequest 仍围绕 configKey/tableName/description/existingSearchSchema/...。forge-admin-ui/src/views/generator/table.vue:旧表模型管理页,调用 /generator/list 展示已导入表模型,提供列配置、代码预览、代码下载。forge-admin-ui/src/views/generator/components/CodePreviewModal.vue:代码预览弹窗,调用 /generator/preview/{tableName},可复用于应用代码预览。forge-admin-ui/src/views/generator/components/ImportTableModal.vue:数据库表导入弹窗,调用 /generator/datasource/enabled、/generator/datasource/{id}/tables、/generator/importTable/{datasourceId}。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/GenController.java:提供旧代码生成主接口,包括 /generator/list、/importTable、/edit、/preview/{tableName}、/download/{tableName}、/executeSql、/ai/nlToSchema、/ai/importSchema。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/GenTable.java 与 GenTableColumn.java:旧代码生成表模型实体,仍承载导入表结构和字段配置。forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/util/VelocityUtils.java:旧代码生成模板上下文工具,围绕 GenTable/GenTableColumn 构建前后端代码所需变量。AiCrudConfigController#downloadCode 已提供 /ai/crud-config/codegen/download/{configKey},输出 {configKey}-code.zip。AiCrudCodegenService#generateZip 根据 configKey 读取 AiCrudConfig,再按 AiPageTemplate.codegenType 选择 CodegenStrategy 生成 ZIP。VelocityCodegenStrategy#generate 已能基于 AiCrudConfig 和模板生成后端 Entity/Mapper/XML/Service/Controller/DTO/Query、SQL、前端 index.vue/api.js、配置 JSON。GenController#download 和 GenController#preview 基于 GenTable 生成旧 ZIP 和预览代码。forge/db/migration/V1.0.4__add_visual_lowcode_crud_builder.sql 为 ai_crud_config 增加低代码字段,并初始化低代码应用、搭建器、发布、在线 DDL 等菜单。forge/db/migration/V1.0.9__add_lowcode_data_model.sql 新增低代码数据模型菜单和模型表能力。forge/db/migration/V1.0.11__reparent_lowcode_menus.sql 已将低代码菜单统一挂到原“AI 代码生成/AI 低代码”目录,并将“数据模型设计”指向 /ai/lowcode-models。ai_crud_config 仍是运行时事实来源,不能直接删除;应用管理应继续写入它,但不再把纯 JSON 编辑暴露为主流程。GenTable 和新 LowcodeModelSchema 字段语义接近但不等价,本期不把 GenTable 作为新模型导入来源,避免引入额外适配复杂度。GenTableColumn,应用级代码生成若直接复用 VelocityCodegenStrategy,必须先补齐从 LowcodeModelSchema/pageSchema 到模板上下文的转换。sys_resource,并保留旧路由兼容一段时间。generator/table 表模型管理从菜单隐藏;数据库表导入、字段初始化迁移到模型设计,代码预览/下载迁移到应用管理,不再从旧表模型页发起。ai/crud-config 应用配置管理从菜单隐藏或仅保留开发者诊断入口,普通用户不能再新增/编辑纯 JSON 配置。ai/crud-generator 不再作为独立“AI 表单生成”入口,能力迁移为应用管理内的“AI 新建应用/AI 优化应用”。ai_lowcode_model.model_schema 保存。LowcodeModelSchema → 用户确认保存。GenTable 选择,直接读取数据源对应的数据表结构;GenTable 旧数据在新流程中忽略。LowcodeModelDesigner:字段名、列名、数据类型、长度、小数位、必填、默认值、字典、脱敏、加密、导入导出、显示规则。generator/column 的字段推荐能力迁移到模型设计器,输入当前字段列表和领域上下文后返回字段优化建议。domainSuggestiondomains[]models[]apps[]steps[]decisions[]appDraft(兼容旧单应用调用)modelSchemapageSchemaddlPreviewgenerationNotes/ai/crud-page/{configKey} 和 /ai/crud/{configKey},不破坏已发布链接。AiCrudConfig、版本快照、菜单资源和动态 CRUD 配置。DRAFT,作为默认来源PUBLISHEDVERSIONCodePreviewModal。{configKey}-code.zip。/ai/crud-config/codegen/download/{configKey} 保留兼容,内部委托新的应用级代码生成服务。/generator/preview/{tableName}、/generator/download/{tableName} 保留接口兼容,但菜单隐藏;后续版本再评估删除。ai/crud-config 页面仅允许拥有开发者权限的用户访问,用于排障和历史配置查看,不再作为新增入口。ai/crud-generator 页面隐藏菜单,入口迁移到应用管理;路由可保留跳转到新 AI 应用生成面板。GenTable 数据不删除,但不进入新模型设计导入流程;旧数据可忽略,仅保留旧接口兼容。GenTable 不作为导入来源,仅保留旧接口兼容或历史数据。ai_crud_config 仍是运行时配置存储,不作为用户直接编辑的产品概念。DRAFT,发布版本 PUBLISHED 和历史版本 VERSION 作为可选来源;不允许基于浏览器未保存状态直接下载。tenant_id 必须为 1,权限资源插入必须 NOT EXISTS 防重复。sys_dict_type/sys_dict_data,禁止生成前端硬编码选项。AuthImage 或现有文件访问归一化工具。/ai/lowcode/**,不再扩展 /generator/** 的业务语义。本变更优先复用现有表,减少结构变更。
| 操作 | 表名 | 字段/索引 | 说明 |
|---|---|---|---|
| 复用 | ai_lowcode_model |
model_schema |
作为唯一模型资产,承载从 AI/数据库表导入后的模型协议 |
| 复用 | ai_lowcode_domain |
domain_schema |
增加 codegen 领域配置,保存默认 groupId、Java 基础包名、代码模块名、前端路径等代码生成默认值 |
| 复用 | ai_crud_config |
model_schema, page_schema, options, build_mode, publish_status |
作为低代码应用草稿和运行时配置,不再面向用户做纯 JSON 编辑 |
| 复用 | ai_crud_config_version |
现有版本字段 | 作为发布版本和代码生成 VERSION 来源 |
| 复用 | gen_table, gen_table_column |
全量保留 | 只作为旧接口兼容和历史数据,不作为新模型设计导入来源 |
| 修改 | sys_resource |
菜单/按钮资源 | 通过新 Flyway 脚本隐藏或重定向旧入口,新增应用级代码预览/下载/AI 生成权限 |
| 可选新增 | sys_dict_type/sys_dict_data |
ai_prompt_usage_scene 新场景 |
如现有字典缺少“应用生成/模型生成/代码生成”场景,则新增字典项 |
ai/lowcode-apps。/ai/lowcode-builder/:id?,通过应用管理进入。| 操作 | 接口 | 方法 | 说明 |
|---|---|---|---|
| 新增 | /ai/lowcode/app/ai/stream-generate |
POST SSE | 从用户需求生成模型建议和应用草稿,替代旧 /ai/crud-generator/stream-generate 用户入口 |
| 新增 | /ai/lowcode/app/{id}/ai/refine |
POST SSE | 基于已有应用草稿进行 AI 优化 |
| 新增 | /ai/lowcode/app/{id}/code/preview |
GET | 基于应用草稿/发布版本预览代码文件 Map |
| 新增 | /ai/lowcode/app/{id}/code/download |
GET | 下载应用代码 ZIP |
| 新增 | /ai/lowcode/app/{id}/code/options |
GET/PUT | 查询/保存应用代码生成参数,存入 options.codegen |
| 操作 | 接口 | 方法 | 说明 |
|---|---|---|---|
| 新增 | /ai/lowcode/model/import-db-table |
POST | 从数据源表结构生成并保存低代码模型 |
| 新增 | /ai/lowcode/model/preview-db-table |
POST | 从数据源表结构预览模型,不保存 |
| 新增 | /ai/lowcode/model/ai/stream-generate |
POST SSE | 从自然语言生成模型协议 |
| 新增 | /ai/lowcode/model/{id}/ai/recommend-fields |
POST | 字段推荐/优化,迁移旧 recommendColumns 能力 |
| 操作 | 接口 | 方法 | 变更内容 |
|---|---|---|---|
| 修改 | /ai/lowcode/app/page |
GET | 增加 sourceType、hasCodegen、modelId 过滤;返回代码生成状态摘要 |
| 修改 | /ai/lowcode/app/draft |
POST | 支持保存 options.codegen 和 AI 生成来源元数据 |
| 修改 | /ai/lowcode/app/{id} |
GET | 返回模型快照、代码生成选项、可下载状态 |
| 修改 | /ai/lowcode/model/page |
GET | 增加 importSource、tableName 过滤,展示是否由数据源表或 AI 生成 |
| 接口 | 兼容策略 |
|---|---|
/ai/crud-config/codegen/download/{configKey} |
保留,内部按 configKey 查应用并委托应用级代码生成;找不到低代码应用时走旧逻辑 |
/ai/crud-generator/stream-generate |
保留,前端入口隐藏;后续只用于历史页面或开发者调试 |
/generator/preview/{tableName} |
保留旧表模型预览 |
/generator/download/{tableName} |
保留旧表模型下载 |
/generator/importTable/** |
保留底层能力,但新前端从 /ai/lowcode/model/import-db-table 进入 |
LowcodeAiGenerateService:统一 AI 需求生成、模型生成、应用生成和应用优化。LowcodeCodegenService:应用级代码预览/下载入口,封装草稿/发布/版本来源选择。LowcodeModelImportService:从数据库表和 AI Schema 转换为 LowcodeModelSchema;不从旧 GenTable 导入。LowcodeCodegenContextBuilder:把 LowcodeModelSchema + LowcodePageSchema + AiCrudConfig 转换为模板引擎上下文,替代直接依赖 GenTableColumn。AiCrudCodegenService,但逐步改造成底层策略服务;应用级接口不直接暴露 configKey 下载。VelocityCodegenStrategy,第一期优先通过上下文适配复用模板,不重写全部模板。lowcode-apps.vue:应用管理主工作台,新增 AI 创建应用、代码预览、下载代码、选择/关联模型入口。lowcode-builder.vue:应用设计器新增“代码输出”区域,可选择草稿/发布版本预览和下载。lowcode-models.vue:保留为独立模型管理入口,新增从数据库表导入、AI 生成模型。lowcode-crud.js:新增应用级 AI、代码生成、模型导入接口。CodePreviewModal.vue:改造为可接收 files 或应用 ID,避免只绑定 tableName。ImportTableModal.vue:将结果落到 ai_lowcode_model,不再只创建 gen_table。crud-config.vue、crud-generator.vue、generator/table.vue 普通菜单入口;路由保留兼容。代码生成源统一为:
AiCrudConfig
├─ modelSchema: LowcodeModelSchema
├─ pageSchema: LowcodePageSchema
├─ searchSchema / columnsSchema / editSchema / apiConfig
├─ dictConfig / desensitizeConfig / encryptConfig / transConfig
└─ options.codegen
生成服务必须支持两种上下文:
AiCrudPage 动态运行。模型导入只读取数据源表结构:
数据源 → 数据库表结构
→ LowcodeModelImportService
→ LowcodeModelSchema
→ LowcodeDataModel
旧 GenTable/GenTableColumn 不进入新模型导入流程,仅保留旧接口兼容。
用户需求描述
→ 选择领域/AI模型
→ LowcodeAiGenerateService 构建 Prompt
→ AI 输出模型和应用协议
→ LowcodeSchemaValidator 校验
→ LowcodeRuntimeConfigBuilder 生成运行时配置
→ 用户确认保存模型和应用草稿
→ 进入应用设计器
→ 预览/发布/代码下载
失败降级:
forge-admin-ui/src/views/ai/lowcode-apps.vueforge-admin-ui/src/views/ai/lowcode-builder.vueforge-admin-ui/src/views/ai/lowcode-models.vueforge-admin-ui/src/api/lowcode-crud.jsforge-admin-ui/src/components/lowcode-builder/**forge-admin-ui/src/views/generator/components/CodePreviewModal.vueforge-admin-ui/src/views/generator/components/ImportTableModal.vueforge-admin-ui/src/views/ai/crud-config.vueforge-admin-ui/src/views/ai/crud-generator.vueforge-admin-ui/src/views/generator/table.vueLowcodeAppController / LowcodeAppServiceLowcodeModelController / LowcodeDataModelServiceLowcodeRuntimeConfigBuilderLowcodeSchemaValidatorAiCrudCodegenServiceVelocityCodegenStrategyAiCrudConfigGenerateServiceCrudGeneratorStreamServiceGenControllerGenTableServiceImplVelocityUtilssys_resource 菜单和按钮权限ai_prompt_usage_scene 字典项(如需要)gen_table/gen_table_column 只读兼容与迁移sys_resource,必须人工审查。/generator/executeSql 不能自动执行,必须二次确认。configKey、运行时 URL 和历史代码下载接口必须可用。GenTableColumn,迁移时必须建立明确上下文适配,不能在模板里塞低代码 JSON 后临时解析。GenTable 数据不进入新模型导入流程/apply 前补充 code-copilot/changes/unified-lowcode-app-codegen/test-spec.md。DRAFT;发布版本 PUBLISHED 和历史版本 VERSION 作为可选项。GenTable 中选取;GenTable 表旧数据可以忽略。ai_crud_config 和 gen_table 不再作为用户主工作台。ai_lowcode_model 模型资产;模型不强制绑定应用。ai_crud_config 继续作为运行时配置存储,避免重写动态 CRUD 内核。ai_lowcode_model 成为唯一模型资产,旧 GenTable 不作为新模型导入来源。| Task | 状态 | 实际改动文件 | 备注 |
|---|---|---|---|
| Spec 草案 | done | code-copilot/changes/unified-lowcode-app-codegen/spec.md |
仅设计 Spec,未写实现代码 |
待 /review unified-lowcode-app-codegen 后填写。
GenTable 选择。