低代码平台出码(完整前后端代码),支持ACM系统的普通主页、左右布局等模块开发。用户只需提供中文模块名和字段明细表,即可生成 PO、Form、VO、Service、Controller、Mapper 等后端代码,以及前端 React 页面组件。
text
lowcode-module-generator/
├── SKILL.md # 技能定义文档(Agent 必读)
├── README.md # 本文件(人读概览)
├── CHANGES.md # 变更记录
└── src/
├── config.json # 配置文件(microservice、frontend、database)
├── documents/ # 详细说明文档
│ ├── template/ # 模板约束与变量说明
│ │ ├── velocity-variables.md # Velocity 模板变量说明
│ │ └── template-constraints.md # 模板约束规则说明
│ ├── form-controls/ # 表单控件说明
│ ├── layout-types/ # 布局类型说明
│ │ ├── layout-labels.md # 标签页说明
│ │ └── layout-leftright.md # 左右布局说明
│ ├── examples/ # 使用示例(按需加载)
│ │ ├── example-common.md # 普通主页示例
│ │ ├── example-org.md # 组织下拉框示例
│ │ ├── example-user.md # 用户下拉框示例
│ │ ├── example-fileupload.md # 附件上传示例
│ │ ├── example-project.md # 选择项目示例
│ │ ├── example-leftright-action.md # 左右布局-普通列表
│ │ └── example-leftright-folder.md # 左右布局-树形列表
│ └── sql-generator.md # SQL生成说明
└── template/ # Velocity 模板文件(原始模板,禁止修改)
├── 说明.txt # 模板说明文档
├── java/ # 后端Java模板
│ ├── po/ # PO实体模板
│ │ └── po.java.vm
│ ├── vo/ # VO视图模板
│ │ ├── vo.java.vm
│ │ ├── treevo.java.vm
│ │ └── datavo.java.vm
│ ├── form/ # Form模板
│ │ ├── addform.java.vm
│ │ ├── updateform.java.vm
│ │ └── searchform.java.vm
│ ├── service/ # Service模板
│ │ ├── service.java.vm
│ │ └── serviceimpl.java.vm
│ ├── controller/ # Controller模板
│ │ ├── controller.java.vm
│ │ └── controller-wf.java.vm
│ ├── mapper/ # Mapper模板
│ │ ├── mapper.java.vm
│ │ └── mapper.xml.vm
│ └── feign/ # Feign模板
│ └── relevancyApiFeign.java.vm
└── web/ # 前端React模板
├── index/ # 主页模板
│ ├── web-index.jsx.vm
│ └── web-toptags.jsx.vm
├── form/ # 表单模板
│ ├── web-addform.jsx.vm
│ ├── web-updateform.jsx.vm
│ ├── web-searchform.jsx.vm
│ └── web-infoform.jsx.vm
├── labels/ # 标签页模板
│ ├── web-label-index.jsx.vm
│ └── web-label-toptags.jsx.vm
├── wf/ # 工作流模板
│ ├── web-wf-index.jsx.vm
│ └── web-wf-approval.jsx.vm
├── leftRight/ # 左右布局模板
│ ├── web-left-index.jsx.vm
│ ├── web-left-toptags.jsx.vm
│ └── web-index-right.jsx.vm
└── upDown/ # 上下布局模板
├── web-top-index.jsx.vm
├── web-index-top.jsx.vm
└── web-top-toptags.jsx.vm
src/template/ 目录下的 Velocity 模板,按模板变量填充,不得篡改用户只需提供:
AI自动推断:
parentId 或 parent_id → Tree(树形表)外键配置(可选):如关联EPS项目可额外说明
字段名(简体中文)字段名(英文)类型必填列表显示关联类型控件说明项目名称projectNameString✓✓dictproject_status项目编号projectCodeString✓责任主体orgIdTreeSelect✓✓org组织控件(OBS)责任人userIdSelect✓user用户控件(责任人)附件fileIdsFileUpload上传附件开始日期startDateDate✓日期筛选结束日期endDateDateTime日期时间筛选设备名称equipmentNameString✓✓设备编号equipmentCodeString✓供应商supplierIdLongrelevancytype:2,url:/api/base/supplier采购合同contractIdLongrelevancytype:3,url:/api/contract/select
关联类型说明关联配置格式dict数据字典dict:{dictType}org组织架构orguser用户userproject项目projectrelevancy数据关联relevancy:type:{1/2/3},url:{接口URL}
type值说明前端组件1枚举类型FormSelect + customDicts内嵌选项2远程搜索FormSelect + relevancySelectUrl远程数据3弹窗选择FormDataModel + SelectSingleModal弹窗
类型说明特征Tree树形表有parentId,支持父子结构Page分页数据表支持分页查询普通普通列表无分页,支持搜索左右结构左右联动布局左边表格/树形 + 右边表格/树形联动
布局类型说明生成文件普通主页单表格页面(默认)index.jsx, TopTags/index.jsx左右布局左右联动LeftIndex.jsx, RightIndex.jsx, TopTags/index.jsx标签页多标签页LabelIndex.jsx, LabelTopTags/index.jsx, Labels/{tab}/index.jsx工作流审批流程WfIndex.jsx, WfApproval.jsx
判断规则:
用户输入关键词自动判断为未提及"左右布局"普通主页提及"左右布局"(含左边描述 + 右边描述)左右布局提及"标签页"或"页签"标签页
内容包括:
内容包括:
类型生成文件后端-POXxxPo.java后端-FormXxxAddForm.java, XxxUpdateForm.java, XxxSearchForm.java后端-VOXxxVo.java, XxxTreeVo.java, XxxDataVo.java后端-ServiceXxxService.java, XxxServiceImpl.java后端-ControllerXxxController.java, XxxControllerWf.java后端-MapperXxxMapper.java, XxxMapper.xml前端-主页index.jsx前端-工具栏TopTags/index.jsx前端-表单AddForm.jsx, UpdateForm.jsx, SearchForm.jsx前端-标签页LabelIndex.jsx, LabelTopTags.jsx, Labels/{tab}/index.jsx前端-工作流WfIndex.jsx, WfApproval.jsx前端-左右布局LeftIndex.jsx, RightIndex.jsx数据库-初始化SQLdb/init.sql
内容包括:
所有代码生成任务必须严格按照以下工作流程执行,不得跳过任何步骤:
text
用户输入新模块信息
↓
步骤1:生成模块标识(简体中文→英文)[ ]
↓
步骤2:自动判断页面布局类型 [ ]
↓
步骤3:解析字段明细,构建模板变量 [ ]
↓
步骤4:替换Velocity模板变量 [ ]
↓
步骤5:生成后端代码(PO→Form→VO→Service→Controller→Mapper) [ ]
↓
步骤6:生成前端代码(根据布局类型生成对应页面) [ ]
↓
步骤7:生成数据库初始化SQL(根据配置的数据库类型,只生成一个SQL) [ ]
↓
步骤8:输出完整代码清单 [ ]
↓
步骤9:执行 check 检查,全部通过才能结束 [ ]
完整步骤清单:
步骤内容状态步骤1生成模块标识(简体中文→英文)[ ]步骤2自动判断页面布局类型[ ]步骤3解析字段明细,构建模板变量[ ]步骤4替换Velocity模板变量[ ]步骤5生成后端代码(PO→Form→VO→Service→Controller→Mapper)[ ]步骤6生成前端代码(根据布局类型生成对应页面)[ ]步骤7生成数据库初始化SQL(根据配置的数据库类型)[ ]步骤8输出完整代码清单[ ]步骤9执行 check 检查,全部通过才能结束[ ]
执行要求:
[x] 表示已执行配置来源优先级:自然语言 > config.json
src/config.json 中的默认配置步骤内容输出步骤1生成模块标识buildBizName, buildClassName, buildPackage, buildTableName步骤2判断布局类型普通主页 / 左右布局 / 标签页 / 工作流步骤3解析字段构建变量buildColumns, buildAddforms, buildUpdateforms, buildSearchForms步骤4Velocity模板替换处理所有 .vm 模板文件步骤5生成后端代码PO, Form, VO, Service, Controller, Mapper步骤6生成前端代码index.jsx, TopTags, AddForm, UpdateForm步骤7生成SQL根据数据库类型生成一个SQL(init.sql)步骤8输出代码清单完整文件列表 + 存放路径步骤9执行 check 检查全部通过才能完成工作流程
读取环境变量(config.json):
{microservice.name}{microservice.package}{microservice.path}{frontend.path}{database.type}生成模块标识清单:
变量值说明buildBizName{模块英文名}模块英文名(驼峰)buildClassName{ClassName}类名前缀(首字母大写)buildPackage{microservice.package}JAVA包路径buildTableName{database.tablePrefix}{模块名}表名frontend{frontend.path}前端模块生成路径microservice{microservice.path}后端微服务生成路径databaseType{database.type}数据库类型
生成路径对照:
类型路径后端代码{microservice.path}/前端代码{frontend.path}/SQL文件以 {microservice.path} 中 {microservice.name} 的位置为基准,即 {microservice.path}中{microservice.name}之前的路径/{microservice.name}/db/init.sql
路径计算示例:
若 {microservice.path} = /Users/hadoop/.../adp-modules/wsd-aiagent/src/main/java/com/wisdom/acm/aiagent
则 {microservice.name} = wsd-aiagent 出现在路径中
SQL文件 = /Users/hadoop/.../adp-modules/wsd-aiagent/db/init.sql
⚠️ 重要:步骤1必须将模块标识清单打印输出后,才能按工作流程继续执行。
⚠️ 强制要求:若用户输入包含繁体中文,AI必须先将其转换为简体中文,再生成代码。禁止直接使用繁体中文。
执行时机:步骤8(输出完整代码清单)完成后,必须执行 check 检查,全部通过才能结束工作流程。
check 检查是强制步骤:若有任何检查项未通过,必须修复后重新检查,直到全部通过才能完成工作流程。
检查清单来源:根据当前生成模块的布局类型,加载对应的检查清单。不同布局类型对应不同的检查点组合。
示例文件说明example-common.md普通主页示例example-org.md组织下拉框示例example-user.md用户下拉框示例example-project.md选择项目示例example-fileupload.md附件上传示例example-leftright-action.md左右布局-普通列表example-leftright-folder.md左右布局-树形列表
序号检查项检查内容标准1包名路径${buildPackage} 是否正确必须与微服务 package 一致,如 com.wisdom.acm.aiagent2类名命名所有类名是否遵循驼峰命名首字母大写,如 EquipmentPo,方法名首字母小写如 equipmentName3继承关系-POPO 是否继承 BasePo 或 BaseCustomPo根据 buildEnableCustomField 判断4继承关系-FormForm 是否继承 BaseForm / BaseSearchFormAddForm/UpdateForm 继承 BaseForm,SearchForm 继承 BaseSearchForm5继承关系-VOVO 是否继承 BaseInfoVo / BaseVoVo 继承 BaseInfoVo,DataVo 继承 BaseVo6继承关系-ServiceService 是否继承 CommService<Po>类型参数只有1个(Po)7继承关系-ServiceImplServiceImpl 是否继承 BaseService<Mapper, Po>类型参数只有2个(Mapper, Po),不是5个8继承关系-ControllerController 是否继承 BaseController必须继承 BaseController9关联类型-orgorg 类型字段 VO 中是否为 GeneralVo如 private GeneralVo orgId;10关联类型-useruser 类型字段 VO 中是否为 GeneralVo如 private GeneralVo userId;11关联类型-dictdict 类型字段 VO 中是否为 DictionaryVo如 private DictionaryVo status;12关联类型-statusstatus 字段 DataVo 中是否为 StatusVo如 private StatusVo status;13日期类型格式化Date 类型字段是否有 @JsonFormat必须有 @JsonFormat(pattern = "yyyy-MM-dd") 或 "yyyy-MM-dd HH:mm:ss"14表名注解PO 类是否有 @Table(name = "...")表名必须与 buildTableName 一致15Column注解PO 字段是否有 @Column(name = "...")字段名必须大写,如 equipment_name16ApiModel注解Form/VO 类是否有 @ApiModel值必须为中文描述,如 设备管理17ApiModelProperty注解字段是否有 @ApiModelProperty值必须为中文描述18Required属性必填字段 required = true根据字段明细中是否必填来判断19Service方法签名方法签名是否符合模板addXxx(AddForm)、 updateXxx(UpdateForm)、 deleteXxx(List<Long>)20Controller注解是否有 @Api(tags = "...")tags 必须为中文描述21Controller注入Service 是否用 @Autowired 注入必须有 @Autowired private XxxService xxxService;22Mapper继承Mapper 是否继承 CommMapper<Po>类型参数只有1个(Po)23Mapper.xmlXML 声明和 DOCTYPE 是否正确必须有 <?xml version="1.0" encoding="UTF-8" ?> 和对应 DOCTYPE24Mapper.xml命名空间namespace 是否正确必须为 ${buildPackage}.mapper.${buildClassName}Mapper25Mapper.xml中间为空mapper 标签内是否为空<mapper> 和 </mapper> 之间不能有内容26buildColumns完整性列表显示字段是否完整只包含标记为"列表显示"的字段27buildAddforms完整性增加表单字段是否完整只包含增加时需要的字段28buildUpdateforms完整性修改表单字段是否完整包含所有可修改字段,status 字段已排除29buildSearchForms完整性搜索表单字段是否完整只包含需要搜索的字段30buildPos完整性PO字段是否完整包含所有数据库字段31Tree表类型Tree表是否有 parentId 字段必须有 private Long parentId;32Page表类型Page表无 parentId不生成 parentId 字段33ForeignKey处理有外键时是否正确处理有 buildForeignKey 时需在 Form/VO 中生成对应字段34前端import-关联前端关联字段 import 是否正确org/user 导入 GeneralVo,dict 导入 DictionaryVo35前端formType映射前端组件类型是否正确input→FormInput,select→FormSelect,date→FormDate 等36ServiceImpl-Override注解ServiceImpl中带有@Override注解的方法是否在Service接口中声明ServiceImpl中每个带有@Override注解的方法,必须在Service接口中有对应的方法声明
序号检查项关联类型检查内容1org关联-VO类型orgVO中org类型字段必须为 GeneralVo2org关联-前端组件org前端org类型字段必须使用 FormTreeSelect + getOrgSelectTree3org关联-数据加载org前端org字段必须有 loadDatas 加载树形数据4user关联-VO类型userVO中user类型字段必须为 GeneralVo5user关联-前端组件user前端user类型字段必须使用 FormSelect + allSelectGeneralUser6user关联-数据加载user前端user字段必须有 url 指定远程数据源7project关联-VO类型projectVO中project类型字段必须为 GeneralVo8project关联-前端组件project前端project类型字段必须使用 FormSelect + projectList9project关联-数据加载project前端project字段必须有 url 指定远程数据源10fileUpload关联-VO类型fileUploadVO中fileUpload类型字段必须为 String11fileUpload关联-前端组件fileUpload前端fileUpload字段必须使用 FormInputUpload12fileUpload关联-importfileUpload前端必须导入 FormInputUpload 组件
序号检查项检查内容1左右布局-整体模块名模块名为整体名称,如 actionManagement、 folderManage2左右布局-左边业务对象左边业务对象独立生成,如 ActionGroup、 Folder3左右布局-右边业务对象右边业务对象独立生成,如 ActionInfo、 Document4左右布局-前端同目录前端代码生成到同一模块目录,如 {frontend.path}/actionManagement/5左右布局-外键配置foreignKey 和 foreignTitle 必须正确配置6左右布局-左右联动左边选择后,右边根据 foreignKey 过滤数据
序号检查项检查内容1Tree表-parentId字段Tree表PO必须有 private Long parentId;2Tree表-VO-parentIdTree表VO必须有parentId字段3Tree表-树形查询方法Tree表Service必须有 queryXxxTreeList 方法
text
步骤8完成 → 识别示例类型 → 加载对应检查清单 → 逐项核对 → 如有未通过项 → 修复问题 → 重新 check → 全部通过 → 工作流程结束
执行时机:步骤8完成后,逐条列出检查项,每项记录文件名和检查结果。
⚠️ 铁律:不得少报、漏报任何检查不通过的事项,必须如实汇报给用户。
输出结构:按检查分类逐条检查项输出,每个分类显示检查项数统计
markdown
## check 检查结果
### 示例类型:example-leftright-action.md(左右布局-普通列表)
### 一、基础检查
| 序号 | 检查项 | 文件 | 结果 | 说明 |
|-----|-------|------|------|------|
| 1 | 包名路径 | ActionGroupPo.java | ✅ | buildPackage=com.wisdom.acm.aiagent |
| ... | ... | ... | ... | ... |
**基础检查:36项(23项相关,13项N/A)**
### 二、关联类型专项检查
| 序号 | 检查项 | 文件 | 结果 | 说明 |
|----|-------|---------|------|------|
| 1 | project关联-VO类型 | ActionInfoVo.java | ✅ | private GeneralVo projectId; |
| ... | ... | ... | ... | ... |
**关联类型专项:3项(全部通过)**
### 三、左右布局专项检查
| 序号 | 检查项 | 文件 | 结果 | 说明 |
|----|-------|---------|------|------|
| 1 | 左右布局-整体模块名 | 前端目录 | ✅ | actionManagement |
| ... | ... | ... | ... | ... |
**左右布局专项:6项(全部通过)**
重要:
{分类名}:{总项数}项({相关项数}项相关,{N/A项数}项N/A) 或 (全部通过)若有任何检查项未通过:
各示例文件的检查项数统计:
示例文件说明检查项数example-common.md普通主页示例基础36项example-org.md组织下拉框示例基础36项 + org关联3项 = 39项example-user.md用户下拉框示例基础36项 + user关联3项 = 39项example-project.md选择项目示例基础36项 + project关联3项 = 39项example-fileupload.md附件上传示例基础36项 + fileUpload关联3项 = 39项example-leftright-action.md左右布局-普通列表基础36项 + 左右布局专项6项 = 42项example-leftright-folder.md左右布局-树形列表基础36项 + 左右布局专项6项 + Tree专项3项 = 45项
详细内容请参见: src/documents/template/velocity-variables.md
内容包括:
表单类型Java类型InputStringInputNumberInteger / LongTreeSelectLongSelectStringDateDateDateTimeDateTextAreaStringCheckboxStringRadioStringFileUploadString
表单类型前端组件InputFormInputInputNumberFormNumberTreeSelectFormTreeSelectSelectFormSelectDateFormDateDateTimeFormDateTextAreaFormTextAreaCheckboxFormCheckGroupRadioFormRadioGroupFileUploadFormInputUpload
关联类型列表渲染表单渲染dictgetDictNameByProject()FormSelectorgname字段FormTreeSelectusername字段FormSelectprojectname字段FormSelectrelevancy:1customDicts查找FormSelectrelevancy:2name字段FormSelect远程relevancy:3name字段FormDataModel弹窗
内容包括:
详细说明请参见: src/documents/sql-generator.md
内容包括:
内容包括:
禁止行为正确做法凭记忆写import语句必须读取模板文件,复制模板中的import凭经验猜测变量类型必须查看模板中的变量定义凭直觉写代码逻辑必须按照模板的Velocity语法填充跳过模板直接写代码必须先读取模板,再基于模板生成
错误示例:
java
// ❌ 错误:凭记忆写import
import com.wisdom.base.common.vo.base.GeneralVo; // 记错了路径
// ✅ 正确:复制模板中的import
import com.wisdom.base.common.vo.GeneralVo;
核心原则:
#if、 #foreach 等Velocity指令,必须正确处理类型路径说明后端微服务工程{microservice.name}/后台微服务工程后端代码{microservice.path}后台工程代码生成路径前端页面{frontend.path}/{模块英文名}/前端工程代码生成路径
详细内容请参见: src/documents/layout-types/layout-leftright.md
类型路径说明SQL文件以 {microservice.path} 中 {microservice.name} 的位置为基准只生成一个SQL文件,根据微服务实际连接的数据库类型text
# 以microservice.name在microservice.path中的位置为基准
wsd-aiagent/ # microservice.name所在目录
├── db/
│ └── init.sql # Oracle初始化SQL(默认)
路径计算示例:
{microservice.path} = /Users/hadoop/.../adp-modules/wsd-aiagent/src/main/java/com/wisdom/acm/aiagent{microservice.path} 中找到 {microservice.name} = wsd-aiagent 的位置/Users/hadoop/.../adp-modules/wsd-aiagent/db/init.sql详细内容请参见: src/documents/examples/
SKILL 根据用户输入 自动按需加载 对应示例文件:
用户输入关键词加载示例文件说明"左右布局" + 有parentId/树形example-leftright-folder.md树形+普通列表左右布局"左右布局" + 无parentIdexample-leftright-action.md普通列表左右布局"组织"、"责任主体"、"项目团队"、"协作团队"example-org.md组织下拉框示例"用户"、"责任人"、"负责人"、"创建人"、"修改人"example-user.md用户下拉框示例"附件"、"上传"、"fileUpload"example-fileupload.md附件上传示例"项目"、projectIdexample-project.md选择项目示例默认(无上述关键词)example-common.md普通主页示例
text
src/documents/examples/
├── example-common.md # 普通主页示例
├── example-org.md # 组织下拉框示例
├── example-user.md # 用户下拉框示例
├── example-fileupload.md # 附件上传示例
├── example-project.md # 选择项目示例
├── example-leftright-action.md # 左右布局-普通列表
└── example-leftright-folder.md # 左右布局-树形列表
模板来源于 wsd-adp/src/main/resources/codebuilder/ 目录,共 30个 .vm 模板文件:
重要:模板文件禁止修改,如需调整功能请新建模板或使用配置参数。
{frontend.path}