Skip to content

Commit d374140

Browse files
author
piexlMax(奇淼
committed
Merge branch 'main' into v2.8.4-dev
2 parents 655c08a + add1708 commit d374140

File tree

2 files changed

+932
-0
lines changed

2 files changed

+932
-0
lines changed

server/mcp/execution_plan_schema.md

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
# ExecutionPlan 结构体格式说明
2+
3+
## 概述
4+
ExecutionPlan 是用于自动化模块创建的执行计划结构体,包含了创建包和模块所需的所有信息。
5+
6+
## 完整结构体定义
7+
8+
```go
9+
type ExecutionPlan struct {
10+
PackageName string `json:"packageName"` // 包名,如:"user", "order", "product"
11+
ModuleName string `json:"moduleName"` // 模块名,通常与结构体名相同
12+
PackageType string `json:"packageType"` // "plugin" 或 "package"
13+
NeedCreatedPackage bool `json:"needCreatedPackage"` // 是否需要创建包
14+
NeedCreatedModules bool `json:"needCreatedModules"` // 是否需要创建模块
15+
PackageInfo *request.SysAutoCodePackageCreate `json:"packageInfo,omitempty"` // 包信息(当NeedCreatedPackage=true时必需)
16+
ModulesInfo *request.AutoCode `json:"modulesInfo,omitempty"` // 模块信息(当NeedCreatedModules=true时必需)
17+
Paths map[string]string `json:"paths,omitempty"` // 路径信息
18+
}
19+
```
20+
21+
## 子结构体详细说明
22+
23+
### 1. SysAutoCodePackageCreate 结构体
24+
25+
```go
26+
type SysAutoCodePackageCreate struct {
27+
Desc string `json:"desc"` // 描述,如:"用户管理模块"
28+
Label string `json:"label"` // 展示名,如:"用户管理"
29+
Template string `json:"template"` // 模板类型:"plugin" 或 "package"
30+
PackageName string `json:"packageName"` // 包名,如:"user"
31+
Module string `json:"-"` // 模块名(自动填充,无需设置)
32+
}
33+
```
34+
35+
### 2. AutoCode 结构体(核心字段)
36+
37+
```go
38+
type AutoCode struct {
39+
Package string `json:"package"` // 包名
40+
TableName string `json:"tableName"` // 数据库表名
41+
BusinessDB string `json:"businessDB"` // 业务数据库名
42+
StructName string `json:"structName"` // 结构体名称
43+
PackageName string `json:"packageName"` // 文件名称
44+
Description string `json:"description"` // 结构体中文名称
45+
Abbreviation string `json:"abbreviation"` // 结构体简称
46+
HumpPackageName string `json:"humpPackageName"` // 驼峰命名的包名
47+
GvaModel bool `json:"gvaModel"` // 是否使用GVA默认Model
48+
AutoMigrate bool `json:"autoMigrate"` // 是否自动迁移表结构
49+
AutoCreateResource bool `json:"autoCreateResource"` // 是否自动创建资源标识
50+
AutoCreateApiToSql bool `json:"autoCreateApiToSql"` // 是否自动创建API
51+
AutoCreateMenuToSql bool `json:"autoCreateMenuToSql"` // 是否自动创建菜单
52+
AutoCreateBtnAuth bool `json:"autoCreateBtnAuth"` // 是否自动创建按钮权限
53+
OnlyTemplate bool `json:"onlyTemplate"` // 是否只生成模板
54+
IsTree bool `json:"isTree"` // 是否树形结构
55+
TreeJson string `json:"treeJson"` // 树形结构JSON字段
56+
IsAdd bool `json:"isAdd"` // 是否新增
57+
Fields []*AutoCodeField `json:"fields"` // 字段列表
58+
GenerateWeb bool `json:"generateWeb"` // 是否生成前端代码
59+
GenerateServer bool `json:"generateServer"` // 是否生成后端代码
60+
Module string `json:"-"` // 模块(自动填充)
61+
DictTypes []string `json:"-"` // 字典类型(自动填充)
62+
}
63+
```
64+
65+
### 3. AutoCodeField 结构体(字段定义)
66+
67+
```go
68+
type AutoCodeField struct {
69+
FieldName string `json:"fieldName"` // 字段名
70+
FieldDesc string `json:"fieldDesc"` // 字段中文描述
71+
FieldType string `json:"fieldType"` // 字段类型:string, int, bool, time.Time等
72+
FieldJson string `json:"fieldJson"` // JSON标签名
73+
DataTypeLong string `json:"dataTypeLong"` // 数据库字段长度
74+
Comment string `json:"comment"` // 数据库字段注释
75+
ColumnName string `json:"columnName"` // 数据库列名
76+
FieldSearchType string `json:"fieldSearchType"` // 搜索类型:EQ, LIKE, BETWEEN等
77+
FieldSearchHide bool `json:"fieldSearchHide"` // 是否隐藏查询条件
78+
DictType string `json:"dictType"` // 字典类型
79+
Form bool `json:"form"` // 是否在表单中显示
80+
Table bool `json:"table"` // 是否在表格中显示
81+
Desc bool `json:"desc"` // 是否在详情中显示
82+
Excel bool `json:"excel"` // 是否支持导入导出
83+
Require bool `json:"require"` // 是否必填
84+
DefaultValue string `json:"defaultValue"` // 默认值
85+
ErrorText string `json:"errorText"` // 校验失败提示
86+
Clearable bool `json:"clearable"` // 是否可清空
87+
Sort bool `json:"sort"` // 是否支持排序
88+
PrimaryKey bool `json:"primaryKey"` // 是否主键
89+
DataSource *DataSource `json:"dataSource"` // 数据源
90+
CheckDataSource bool `json:"checkDataSource"` // 是否检查数据源
91+
FieldIndexType string `json:"fieldIndexType"` // 索引类型
92+
}
93+
```
94+
95+
## 使用示例
96+
97+
### 示例1:创建新包和模块
98+
99+
```json
100+
{
101+
"packageName": "user",
102+
"moduleName": "User",
103+
"packageType": "package",
104+
"needCreatedPackage": true,
105+
"needCreatedModules": true,
106+
"packageInfo": {
107+
"desc": "用户管理模块",
108+
"label": "用户管理",
109+
"template": "package",
110+
"packageName": "user"
111+
},
112+
"modulesInfo": {
113+
"package": "user",
114+
"tableName": "sys_users",
115+
"businessDB": "",
116+
"structName": "User",
117+
"packageName": "user",
118+
"description": "用户",
119+
"abbreviation": "user",
120+
"humpPackageName": "user",
121+
"gvaModel": true,
122+
"autoMigrate": true,
123+
"autoCreateResource": true,
124+
"autoCreateApiToSql": true,
125+
"autoCreateMenuToSql": true,
126+
"autoCreateBtnAuth": true,
127+
"onlyTemplate": false,
128+
"isTree": false,
129+
"treeJson": "",
130+
"isAdd": true,
131+
"generateWeb": true,
132+
"generateServer": true,
133+
"fields": [
134+
{
135+
"fieldName": "Username",
136+
"fieldDesc": "用户名",
137+
"fieldType": "string",
138+
"fieldJson": "username",
139+
"dataTypeLong": "50",
140+
"comment": "用户名",
141+
"columnName": "username",
142+
"fieldSearchType": "LIKE",
143+
"fieldSearchHide": false,
144+
"dictType": "",
145+
"form": true,
146+
"table": true,
147+
"desc": true,
148+
"excel": true,
149+
"require": true,
150+
"defaultValue": "",
151+
"errorText": "请输入用户名",
152+
"clearable": true,
153+
"sort": false,
154+
"primaryKey": false,
155+
"dataSource": null,
156+
"checkDataSource": false,
157+
"fieldIndexType": ""
158+
},
159+
{
160+
"fieldName": "Email",
161+
"fieldDesc": "邮箱",
162+
"fieldType": "string",
163+
"fieldJson": "email",
164+
"dataTypeLong": "100",
165+
"comment": "邮箱地址",
166+
"columnName": "email",
167+
"fieldSearchType": "EQ",
168+
"fieldSearchHide": false,
169+
"dictType": "",
170+
"form": true,
171+
"table": true,
172+
"desc": true,
173+
"excel": true,
174+
"require": true,
175+
"defaultValue": "",
176+
"errorText": "请输入邮箱",
177+
"clearable": true,
178+
"sort": false,
179+
"primaryKey": false,
180+
"dataSource": null,
181+
"checkDataSource": false,
182+
"fieldIndexType": "index"
183+
}
184+
]
185+
}
186+
}
187+
```
188+
189+
### 示例2:仅在现有包中创建模块
190+
191+
```json
192+
{
193+
"packageName": "system",
194+
"moduleName": "Role",
195+
"packageType": "package",
196+
"needCreatedPackage": false,
197+
"needCreatedModules": true,
198+
"packageInfo": null,
199+
"modulesInfo": {
200+
"package": "system",
201+
"tableName": "sys_roles",
202+
"businessDB": "",
203+
"structName": "Role",
204+
"packageName": "system",
205+
"description": "角色",
206+
"abbreviation": "role",
207+
"humpPackageName": "system",
208+
"gvaModel": true,
209+
"autoMigrate": true,
210+
"autoCreateResource": true,
211+
"autoCreateApiToSql": true,
212+
"autoCreateMenuToSql": true,
213+
"autoCreateBtnAuth": true,
214+
"onlyTemplate": false,
215+
"isTree": false,
216+
"generateWeb": true,
217+
"generateServer": true,
218+
"fields": [
219+
{
220+
"fieldName": "RoleName",
221+
"fieldDesc": "角色名称",
222+
"fieldType": "string",
223+
"fieldJson": "roleName",
224+
"dataTypeLong": "50",
225+
"comment": "角色名称",
226+
"columnName": "role_name",
227+
"fieldSearchType": "LIKE",
228+
"form": true,
229+
"table": true,
230+
"desc": true,
231+
"require": true
232+
}
233+
]
234+
}
235+
}
236+
```
237+
238+
## 重要注意事项
239+
240+
1. **PackageType**: 只能是 "plugin" 或 "package"
241+
2. **NeedCreatedPackage**: 当为true时,PackageInfo必须提供
242+
3. **NeedCreatedModules**: 当为true时,ModulesInfo必须提供
243+
4. **字段类型**: FieldType支持的类型包括:string, int, int64, float64, bool, time.Time, enum, picture, video, file, pictures, array, richtext, json等
244+
5. **搜索类型**: FieldSearchType支持:EQ, NE, GT, GE, LT, LE, LIKE, BETWEEN等
245+
6. **索引类型**: FieldIndexType支持:index, unique等
246+
7. **GvaModel**: 设置为true时会自动包含ID、CreatedAt、UpdatedAt、DeletedAt字段
247+
248+
## 常见错误避免
249+
250+
1. 确保PackageName和ModuleName符合Go语言命名规范
251+
2. 字段名使用大写开头的驼峰命名
252+
3. JSON标签使用小写开头的驼峰命名
253+
4. 数据库列名使用下划线分隔的小写命名
254+
5. 必填字段不要遗漏
255+
6. 字段类型要与实际需求匹配

0 commit comments

Comments
 (0)