pdd-skills 3.1.13 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/LICENSE +21 -21
  2. package/package.json +1 -1
  3. package/scaffolds/python-fullstack/.github/workflows/ci.yml +1 -1
  4. package/scaffolds/python-fullstack/Dockerfile +1 -1
  5. package/scaffolds/python-fullstack/docker-compose.yml +1 -1
  6. package/scaffolds/python-fullstack/frontend/Dockerfile +1 -1
  7. package/scaffolds/python-fullstack/frontend/nginx.conf +1 -1
  8. package/scaffolds/python-fullstack/frontend/postcss.config.js +1 -1
  9. package/scaffolds/python-fullstack/frontend/src/api/client.ts +1 -1
  10. package/scaffolds/python-fullstack/frontend/src/composables/useResponsive.ts +1 -1
  11. package/scaffolds/python-fullstack/frontend/src/router/index.ts +1 -1
  12. package/scaffolds/python-fullstack/frontend/src/stores/user.ts +1 -1
  13. package/scaffolds/python-fullstack/frontend/src/styles/responsive.css +1 -1
  14. package/scaffolds/python-fullstack/frontend/src/styles/variables.css +1 -1
  15. package/scaffolds/python-fullstack/frontend/src/views/DashboardView.vue +1 -1
  16. package/scaffolds/python-fullstack/frontend/src/views/HomeView.vue +1 -1
  17. package/scaffolds/python-fullstack/frontend/src/views/LoginView.vue +1 -1
  18. package/scaffolds/python-fullstack/frontend/tailwind.config.js +1 -1
  19. package/skills/core/official-doc-writer/README.md +232 -232
  20. package/skills/core/official-doc-writer/SKILL.md +4 -7
  21. package/skills/core/official-doc-writer/fonts/FONTS_LIST.md +44 -44
  22. package/skills/core/official-doc-writer/references/GBT_9704-2012_/345/205/232/346/224/277/346/234/272/345/205/263/345/205/254/346/226/207/346/240/274/345/274/217.md +422 -422
  23. package/skills/core/pdd-ba/SKILL.md +1 -11
  24. package/skills/core/pdd-entropy-reduction/SKILL.md +1 -9
  25. package/skills/core/pdd-extract-features/SKILL.md +1 -10
  26. package/skills/core/pdd-generate-spec/SKILL.md +1 -10
  27. package/skills/core/pdd-main/evals/evals.json +215 -215
  28. package/skills/core/pdd-verify-feature/SKILL.md +1 -10
  29. package/skills/core/pdd-vm/SKILL.md +1 -11
  30. package/skills/entropy/expert-arch-enforcer/SKILL.md +292 -292
  31. package/skills/entropy/expert-auto-refactor/SKILL.md +316 -327
  32. package/skills/entropy/expert-code-quality/SKILL.md +468 -468
  33. package/skills/entropy/expert-entropy-auditor/SKILL.md +276 -276
  34. package/skills/expert/expert-activiti/SKILL.md +488 -497
  35. package/skills/expert/expert-bug-fixer/SKILL.md +1 -26
  36. package/skills/expert/expert-mysql/SKILL.md +832 -832
  37. package/skills/expert/expert-ruoyi/SKILL.md +664 -674
  38. package/skills/expert/expert-springcloud/SKILL.md +1 -10
  39. package/skills/expert/expert-vue3/SKILL.md +1 -10
  40. package/skills/expert/testcase-agent/SKILL.md +5 -0
  41. package/skills/expert/testcase-modeler/SKILL.md +40 -2
  42. package/skills/pr/pdd-multi-review/SKILL.md +534 -534
  43. package/skills/pr/pdd-pr-batch/SKILL.md +303 -303
  44. package/skills/pr/pdd-pr-create/SKILL.md +344 -344
  45. package/skills/pr/pdd-pr-merge/SKILL.md +286 -286
  46. package/skills/pr/pdd-pr-review/SKILL.md +217 -217
  47. package/skills/pr/pdd-task-manager/SKILL.md +636 -636
  48. package/skills/pr/pdd-template-engine/SKILL.md +386 -386
  49. package/tests/login_manager.py +5 -30
  50. package/tests/recorder.py +362 -294
  51. package/tests/testcase-ai.py +1184 -11
@@ -1,386 +1,386 @@
1
- ---
2
- name: pdd-template-engine
3
- description: |
4
- PDD模板引擎技能,根据功能点规格自动选择和渲染代码模板。当用户需要生成代码、使用模板快速开发、自动生成代码、批量生成、脚手架、代码骨架、快速生成、模板生成、基础代码框架、生成脚手架等场景时自动触发。支持若依框架CRUD和Activiti工作流场景,可将代码有效率从50%提升至75%+。即使用户只说"生成代码"、"用模板"、"脚手架生成"、"生成脚手架"等简短表述,也应触发此Skill。
5
- license: MIT
6
- compatibility: 需要模板库 (.trae/templates/)
7
- metadata:
8
- author: "neuqik@hotmail.com"
9
- version: "1.0"
10
- ---
11
-
12
- # PDD模板引擎技能
13
-
14
- ## 技能描述
15
-
16
- PDD模板引擎是一个代码生成工具,根据功能点规格自动选择和渲染代码模板,生成符合项目规范的代码文件。支持若依框架和Activiti工作流的代码生成。
17
-
18
- ## 触发条件
19
-
20
- - 用户请求"生成代码"、"使用模板生成"等
21
- - pdd-implement-feature技能调用
22
- - 用户指定使用特定场景模板
23
-
24
- ## 核心能力
25
-
26
- ### 1. 模板选择
27
-
28
- 根据功能点特征自动选择合适的模板组合:
29
-
30
- | 场景类型 | 判断条件 | 使用模板 |
31
- |---------|---------|---------|
32
- | 简单CRUD | 无审批流程 | scenarios/crud |
33
- | 工作流+CRUD | 需要审批流程 | scenarios/workflow-crud |
34
-
35
- ### 2. 变量提取
36
-
37
- 从spec.md中提取模板变量:
38
-
39
- ```yaml
40
- 提取规则:
41
- 基础变量:
42
- - entityName: 从数据模型中提取实体名称
43
- - tableName: 从数据模型中提取表名
44
- - businessName: 从功能描述中提取业务名称
45
- - moduleName: 根据模块编号转换
46
-
47
- 字段变量:
48
- - fields: 从数据模型字段列表提取
49
- - searchFields: 从查询条件提取
50
- - formFields: 从表单设计提取
51
- - requiredFields: 从验证规则提取
52
-
53
- 工作流变量:
54
- - processKey: 从流程设计提取
55
- - approvalRules: 从审批规则提取
56
- - processVariables: 从流程变量定义提取
57
- ```
58
-
59
- ### 3. 模板渲染
60
-
61
- 使用Handlebars语法渲染模板:
62
-
63
- ```yaml
64
- 渲染规则:
65
- 变量替换: {{variableName}}
66
- 条件渲染: {{#if condition}}...{{/if}}
67
- 循环渲染: {{#each items}}...{{/each}}
68
- 辅助函数:
69
- - pascalCase: 转换为PascalCase
70
- - camelCase: 转换为camelCase
71
- - kebabCase: 转换为kebab-case
72
- - snakeCase: 转换为snake_case
73
- ```
74
-
75
- ### 4. 代码生成
76
-
77
- 生成符合项目规范的代码文件:
78
-
79
- ```yaml
80
- 输出结构:
81
- 后端:
82
- - Controller.java
83
- - Service.java / ServiceImpl.java
84
- - Mapper.java / Mapper.xml
85
- - Entity.java
86
- - SQL脚本
87
-
88
- 前端:
89
- - Vue组件 (list/form/detail)
90
- - API接口文件
91
- - 工作流组件 (approval-panel)
92
-
93
- 工作流:
94
- - BPMN流程定义文件
95
- - ProcessService.java
96
- - TaskListener.java
97
- ```
98
-
99
- ## 执行流程
100
-
101
- ```
102
- 输入: spec.md + feature-matrix.md
103
-
104
-
105
- ┌─────────────────────────────────┐
106
- │ 1. 解析规格文档 │
107
- │ - 提取实体定义 │
108
- │ - 提取字段列表 │
109
- │ - 提取业务规则 │
110
- │ - 提取流程定义 │
111
- └─────────────────────────────────┘
112
-
113
-
114
- ┌─────────────────────────────────┐
115
- │ 2. 选择场景模板 │
116
- │ - 判断是否需要工作流 │
117
- │ - 加载场景配置 │
118
- │ - 确定模板列表 │
119
- └─────────────────────────────────┘
120
-
121
-
122
- ┌─────────────────────────────────┐
123
- │ 3. 构建变量字典 │
124
- │ - 基础变量 │
125
- │ - 字段变量 │
126
- │ - 条件变量 │
127
- └─────────────────────────────────┘
128
-
129
-
130
- ┌─────────────────────────────────┐
131
- │ 4. 渲染模板文件 │
132
- │ - 读取模板内容 │
133
- │ - 替换变量 │
134
- │ - 处理条件渲染 │
135
- │ - 处理循环渲染 │
136
- └─────────────────────────────────┘
137
-
138
-
139
- ┌─────────────────────────────────┐
140
- │ 5. 输出代码文件 │
141
- │ - 确定输出路径 │
142
- │ - 写入文件 │
143
- │ - 记录生成日志 │
144
- └─────────────────────────────────┘
145
-
146
-
147
- 输出: 生成的代码文件列表
148
- ```
149
-
150
- ## 模板变量参考
151
-
152
- ### 基础变量
153
-
154
- | 变量名 | 说明 | 示例 |
155
- |-------|------|------|
156
- | package | 包路径 | com.sjjk.equity.transfer |
157
- | entityName | 实体类名称 | EquityTransferApply |
158
- | entityNameLower | 实体类名称(小写) | equityTransferApply |
159
- | tableName | 数据库表名 | equity_transfer_apply |
160
- | moduleName | 模块名称 | equity-transfer |
161
- | businessName | 业务名称 | 国有产权转让申请 |
162
- | permissionPrefix | 权限前缀 | equity:transfer |
163
- | author | 作者 | sjjk |
164
- | datetime | 日期时间 | 2026-03-31 |
165
-
166
- ### 字段变量
167
-
168
- | 变量名 | 说明 | 类型 |
169
- |-------|------|------|
170
- | fields | 字段列表 | array |
171
- | fields[].name | 字段名称 | string |
172
- | fields[].type | 字段类型 | string |
173
- | fields[].label | 字段标签 | string |
174
- | fields[].comment | 字段注释 | string |
175
- | fields[].required | 是否必填 | boolean |
176
- | fields[].dictType | 字典类型 | string |
177
-
178
- ### 工作流变量
179
-
180
- | 变量名 | 说明 | 示例 |
181
- |-------|------|------|
182
- | processKey | 流程定义Key | equity-transfer-approval |
183
- | processName | 流程名称 | 国有产权转让审批流程 |
184
- | candidateGroups | 候选组 | manager,leader |
185
- | approvalRules | 审批规则 | array |
186
- | processVariables | 流程变量 | array |
187
-
188
- ## 使用示例
189
-
190
- ### 示例1: 生成简单CRUD代码
191
-
192
- ```yaml
193
- 输入:
194
- spec.md: |
195
- # 国有产权转让申请
196
-
197
- ## 数据模型
198
- 实体: EquityTransferApply
199
- 表名: equity_transfer_apply
200
-
201
- 字段:
202
- - name: transferType
203
- type: string
204
- label: 转让方式
205
- - name: transferReason
206
- type: string
207
- label: 转让原因
208
-
209
- 执行:
210
- 场景: crud
211
- 模板: scenarios/crud
212
-
213
- 输出:
214
- - EquityTransferApplyController.java
215
- - IEquityTransferApplyService.java
216
- - EquityTransferApplyServiceImpl.java
217
- - EquityTransferApplyMapper.java
218
- - EquityTransferApplyMapper.xml
219
- - EquityTransferApply.java
220
- - equity_transfer_apply.sql
221
- - menu_equity_transfer_apply.sql
222
- - index.vue
223
- - form.vue
224
- - detail.vue
225
- - equity-transfer.js
226
- ```
227
-
228
- ### 示例2: 生成工作流代码
229
-
230
- ```yaml
231
- 输入:
232
- spec.md: |
233
- # 资产处置审批
234
-
235
- ## 数据模型
236
- 实体: AssetDisposalApply
237
- 表名: asset_disposal_apply
238
-
239
- ## 流程定义
240
- 流程Key: asset-disposal-approval
241
- 审批类型: multi-level
242
-
243
- ## 审批规则
244
- - 金额 >= 500万: 集团审批
245
- - 金额 >= 30万: 子公司审批
246
- - 金额 < 30万: 自动通过
247
-
248
- 执行:
249
- 场景: workflow-crud
250
- 模板: scenarios/workflow-crud
251
-
252
- 输出:
253
- 后端:
254
- - AssetDisposalApplyController.java
255
- - IAssetDisposalApplyService.java
256
- - AssetDisposalApplyServiceImpl.java
257
- - AssetDisposalApplyMapper.java
258
- - AssetDisposalApplyMapper.xml
259
- - AssetDisposalApply.java
260
- - AssetDisposalApplyProcessService.java
261
- - AssetDisposalTaskListener.java
262
- - asset-disposal-approval.bpmn20.xml
263
-
264
- 前端:
265
- - index.vue
266
- - form.vue
267
- - detail.vue
268
- - ApprovalPanel.vue
269
- - asset-disposal.js
270
-
271
- SQL:
272
- - asset_disposal_apply.sql
273
- - menu_asset_disposal_apply.sql
274
- ```
275
-
276
- ## 协作关系
277
-
278
- ```yaml
279
- 被调用:
280
- - pdd-implement-feature: 实现功能点时调用
281
-
282
- 咨询:
283
- - expert-ruoyi: 若依框架规范验证
284
- - expert-activiti: 工作流规范验证
285
-
286
- 输出给:
287
- - pdd-code-reviewer: 生成的代码需要审查
288
- ```
289
-
290
- ## 注意事项
291
-
292
- 1. **变量完整性**: 确保所有必需变量都有值
293
- 2. **条件渲染**: 正确处理条件渲染逻辑
294
- 3. **输出路径**: 确保输出路径符合项目规范
295
- 4. **编码规范**: 生成的代码需符合项目编码规范
296
- 5. **安全检查**: 文本字段需要添加@Xss注解
297
- 6. **权限配置**: 菜单配置需要包含所有页面
298
-
299
- ## PRD感知动态模板(关键改进)
300
-
301
- ### 脚手架感知选择
302
-
303
- 根据项目脚手架类型自动选择不同的模板集:
304
-
305
- | 脚手架类型 | 判断条件 | 模板集 | 关键差异 |
306
- |-----------|---------|--------|---------|
307
- | Python Fullstack | 项目含FastAPI/requirements.txt | scenarios/crud-python | SQLAlchemy Model + Pydantic Schema + FastAPI Router |
308
- | 若依(RuoYi) | 项目含pom.xml/SpringBoot | scenarios/crud-ruoyi | MyBatis Mapper + Service + Controller + sys_menu SQL |
309
-
310
- ### PRD约定注入
311
-
312
- 从PRD文档中提取约定并注入模板变量:
313
-
314
- ```yaml
315
- PRD约定提取:
316
- 枚举编码约定:
317
- 来源: PRD第5.3节
318
- 注入: fields[].enumCase = "snake_case"
319
- 效果: 枚举值自动转为snake_case小写
320
-
321
- 类型映射约定:
322
- 来源: PRD第5.4节
323
- 注入: fields[].pythonType / fields[].javaType / fields[].tsType
324
- 效果: 字段类型自动按映射表转换
325
-
326
- 表单组件映射:
327
- 来源: PRD第4.4节
328
- 注入: fields[].component = "el-select" / "el-date-picker" / "el-input"
329
- 效果: 前端表单自动使用正确组件
330
-
331
- Options API数据源:
332
- 来源: PRD第4.5节
333
- 注入: fields[].optionsApi = "/departments/options"
334
- 效果: 下拉框自动关联Options API
335
- ```
336
-
337
- ### Python Fullstack模板变量
338
-
339
- | 变量名 | 说明 | 示例 |
340
- |-------|------|------|
341
- | modelName | SQLAlchemy模型名 | EquityTransferApply |
342
- | schemaName | Pydantic Schema名 | EquityTransferApplyResponse |
343
- | optionSchemaName | Option Schema名 | EquityTransferApplyOption |
344
- | routerPrefix | API路由前缀 | /api/v1/equity-transfers |
345
- | fields[].saType | SQLAlchemy类型 | String(36), Numeric(12,2), DateTime |
346
- | fields[].pydanticType | Pydantic类型 | str, float, datetime |
347
- | fields[].tsType | TypeScript类型 | string, number, string(ISO8601) |
348
-
349
- ### 若依模板变量
350
-
351
- | 变量名 | 说明 | 示例 |
352
- |-------|------|------|
353
- | packageName | Java包路径 | com.sjjk.equity.transfer |
354
- | entityName | 实体类名 | EquityTransferApply |
355
- | mapperName | Mapper名 | EquityTransferApplyMapper |
356
- | serviceName | Service名 | IEquityTransferApplyService |
357
- | controllerName | Controller名 | EquityTransferApplyController |
358
- | permissionPrefix | 权限前缀 | equity:transfer |
359
- | menuParentId | 父菜单ID | 2000 |
360
- | fields[].javaType | Java类型 | String, BigDecimal, Date |
361
- | fields[].mybatisType | MyBatis JDBC类型 | VARCHAR, DECIMAL, TIMESTAMP |
362
- | fields[].dictType | 字典类型 | sys_transfer_type |
363
-
364
- ### Bug模式库防护
365
-
366
- > 完整模式定义: `config/bug-patterns.yaml`
367
-
368
- 模板渲染完成后,自动检查生成的代码是否触犯Bug模式库:
369
-
370
- | 检查项 | 对应模式 | 检查方法 |
371
- |--------|---------|---------|
372
- | datetime字段类型 | PATTERN-001 | 检查Schema中datetime字段是否使用field_serializer |
373
- | /options路由顺序 | PATTERN-002 | 检查router.py中/options是否在/{id}之前 |
374
- | 枚举编码规范 | PATTERN-003 | 检查枚举值是否遵循snake_case约定 |
375
- | safeAlert使用 | PATTERN-004 | 检查前端Vue组件是否使用safeAlert而非alert |
376
- | 若依权限注解 | PATTERN-R001 | 检查Controller方法是否有@PreAuthorize |
377
- | 若依菜单配置 | PATTERN-R002 | 检查是否生成sys_menu INSERT SQL |
378
-
379
- ## 错误处理
380
-
381
- | 错误类型 | 处理方式 |
382
- |---------|---------|
383
- | 变量缺失 | 提示用户补充必需变量 |
384
- | 模板不存在 | 检查模板路径,提示可用模板 |
385
- | 渲染失败 | 记录错误日志,返回详细错误信息 |
386
- | 文件已存在 | 提示用户确认是否覆盖 |
1
+ ---
2
+ name: pdd-template-engine
3
+ description: |
4
+ PDD模板引擎技能,根据功能点规格自动选择和渲染代码模板。当用户需要生成代码、使用模板快速开发、自动生成代码、批量生成、脚手架、代码骨架、快速生成、模板生成、基础代码框架、生成脚手架等场景时自动触发。支持若依框架CRUD和Activiti工作流场景,可将代码有效率从50%提升至75%+。即使用户只说"生成代码"、"用模板"、"脚手架生成"、"生成脚手架"等简短表述,也应触发此Skill。
5
+ license: MIT
6
+ compatibility: 需要模板库 (.trae/templates/)
7
+ metadata:
8
+ author: "neuqik@hotmail.com"
9
+ version: "1.0"
10
+ ---
11
+
12
+ # PDD模板引擎技能
13
+
14
+ ## 技能描述
15
+
16
+ PDD模板引擎是一个代码生成工具,根据功能点规格自动选择和渲染代码模板,生成符合项目规范的代码文件。支持若依框架和Activiti工作流的代码生成。
17
+
18
+ ## 触发条件
19
+
20
+ - 用户请求"生成代码"、"使用模板生成"等
21
+ - pdd-implement-feature技能调用
22
+ - 用户指定使用特定场景模板
23
+
24
+ ## 核心能力
25
+
26
+ ### 1. 模板选择
27
+
28
+ 根据功能点特征自动选择合适的模板组合:
29
+
30
+ | 场景类型 | 判断条件 | 使用模板 |
31
+ |---------|---------|---------|
32
+ | 简单CRUD | 无审批流程 | scenarios/crud |
33
+ | 工作流+CRUD | 需要审批流程 | scenarios/workflow-crud |
34
+
35
+ ### 2. 变量提取
36
+
37
+ 从spec.md中提取模板变量:
38
+
39
+ ```yaml
40
+ 提取规则:
41
+ 基础变量:
42
+ - entityName: 从数据模型中提取实体名称
43
+ - tableName: 从数据模型中提取表名
44
+ - businessName: 从功能描述中提取业务名称
45
+ - moduleName: 根据模块编号转换
46
+
47
+ 字段变量:
48
+ - fields: 从数据模型字段列表提取
49
+ - searchFields: 从查询条件提取
50
+ - formFields: 从表单设计提取
51
+ - requiredFields: 从验证规则提取
52
+
53
+ 工作流变量:
54
+ - processKey: 从流程设计提取
55
+ - approvalRules: 从审批规则提取
56
+ - processVariables: 从流程变量定义提取
57
+ ```
58
+
59
+ ### 3. 模板渲染
60
+
61
+ 使用Handlebars语法渲染模板:
62
+
63
+ ```yaml
64
+ 渲染规则:
65
+ 变量替换: {{variableName}}
66
+ 条件渲染: {{#if condition}}...{{/if}}
67
+ 循环渲染: {{#each items}}...{{/each}}
68
+ 辅助函数:
69
+ - pascalCase: 转换为PascalCase
70
+ - camelCase: 转换为camelCase
71
+ - kebabCase: 转换为kebab-case
72
+ - snakeCase: 转换为snake_case
73
+ ```
74
+
75
+ ### 4. 代码生成
76
+
77
+ 生成符合项目规范的代码文件:
78
+
79
+ ```yaml
80
+ 输出结构:
81
+ 后端:
82
+ - Controller.java
83
+ - Service.java / ServiceImpl.java
84
+ - Mapper.java / Mapper.xml
85
+ - Entity.java
86
+ - SQL脚本
87
+
88
+ 前端:
89
+ - Vue组件 (list/form/detail)
90
+ - API接口文件
91
+ - 工作流组件 (approval-panel)
92
+
93
+ 工作流:
94
+ - BPMN流程定义文件
95
+ - ProcessService.java
96
+ - TaskListener.java
97
+ ```
98
+
99
+ ## 执行流程
100
+
101
+ ```
102
+ 输入: spec.md + feature-matrix.md
103
+
104
+
105
+ ┌─────────────────────────────────┐
106
+ │ 1. 解析规格文档 │
107
+ │ - 提取实体定义 │
108
+ │ - 提取字段列表 │
109
+ │ - 提取业务规则 │
110
+ │ - 提取流程定义 │
111
+ └─────────────────────────────────┘
112
+
113
+
114
+ ┌─────────────────────────────────┐
115
+ │ 2. 选择场景模板 │
116
+ │ - 判断是否需要工作流 │
117
+ │ - 加载场景配置 │
118
+ │ - 确定模板列表 │
119
+ └─────────────────────────────────┘
120
+
121
+
122
+ ┌─────────────────────────────────┐
123
+ │ 3. 构建变量字典 │
124
+ │ - 基础变量 │
125
+ │ - 字段变量 │
126
+ │ - 条件变量 │
127
+ └─────────────────────────────────┘
128
+
129
+
130
+ ┌─────────────────────────────────┐
131
+ │ 4. 渲染模板文件 │
132
+ │ - 读取模板内容 │
133
+ │ - 替换变量 │
134
+ │ - 处理条件渲染 │
135
+ │ - 处理循环渲染 │
136
+ └─────────────────────────────────┘
137
+
138
+
139
+ ┌─────────────────────────────────┐
140
+ │ 5. 输出代码文件 │
141
+ │ - 确定输出路径 │
142
+ │ - 写入文件 │
143
+ │ - 记录生成日志 │
144
+ └─────────────────────────────────┘
145
+
146
+
147
+ 输出: 生成的代码文件列表
148
+ ```
149
+
150
+ ## 模板变量参考
151
+
152
+ ### 基础变量
153
+
154
+ | 变量名 | 说明 | 示例 |
155
+ |-------|------|------|
156
+ | package | 包路径 | com.sjjk.equity.transfer |
157
+ | entityName | 实体类名称 | EquityTransferApply |
158
+ | entityNameLower | 实体类名称(小写) | equityTransferApply |
159
+ | tableName | 数据库表名 | equity_transfer_apply |
160
+ | moduleName | 模块名称 | equity-transfer |
161
+ | businessName | 业务名称 | 国有产权转让申请 |
162
+ | permissionPrefix | 权限前缀 | equity:transfer |
163
+ | author | 作者 | sjjk |
164
+ | datetime | 日期时间 | 2026-03-31 |
165
+
166
+ ### 字段变量
167
+
168
+ | 变量名 | 说明 | 类型 |
169
+ |-------|------|------|
170
+ | fields | 字段列表 | array |
171
+ | fields[].name | 字段名称 | string |
172
+ | fields[].type | 字段类型 | string |
173
+ | fields[].label | 字段标签 | string |
174
+ | fields[].comment | 字段注释 | string |
175
+ | fields[].required | 是否必填 | boolean |
176
+ | fields[].dictType | 字典类型 | string |
177
+
178
+ ### 工作流变量
179
+
180
+ | 变量名 | 说明 | 示例 |
181
+ |-------|------|------|
182
+ | processKey | 流程定义Key | equity-transfer-approval |
183
+ | processName | 流程名称 | 国有产权转让审批流程 |
184
+ | candidateGroups | 候选组 | manager,leader |
185
+ | approvalRules | 审批规则 | array |
186
+ | processVariables | 流程变量 | array |
187
+
188
+ ## 使用示例
189
+
190
+ ### 示例1: 生成简单CRUD代码
191
+
192
+ ```yaml
193
+ 输入:
194
+ spec.md: |
195
+ # 国有产权转让申请
196
+
197
+ ## 数据模型
198
+ 实体: EquityTransferApply
199
+ 表名: equity_transfer_apply
200
+
201
+ 字段:
202
+ - name: transferType
203
+ type: string
204
+ label: 转让方式
205
+ - name: transferReason
206
+ type: string
207
+ label: 转让原因
208
+
209
+ 执行:
210
+ 场景: crud
211
+ 模板: scenarios/crud
212
+
213
+ 输出:
214
+ - EquityTransferApplyController.java
215
+ - IEquityTransferApplyService.java
216
+ - EquityTransferApplyServiceImpl.java
217
+ - EquityTransferApplyMapper.java
218
+ - EquityTransferApplyMapper.xml
219
+ - EquityTransferApply.java
220
+ - equity_transfer_apply.sql
221
+ - menu_equity_transfer_apply.sql
222
+ - index.vue
223
+ - form.vue
224
+ - detail.vue
225
+ - equity-transfer.js
226
+ ```
227
+
228
+ ### 示例2: 生成工作流代码
229
+
230
+ ```yaml
231
+ 输入:
232
+ spec.md: |
233
+ # 资产处置审批
234
+
235
+ ## 数据模型
236
+ 实体: AssetDisposalApply
237
+ 表名: asset_disposal_apply
238
+
239
+ ## 流程定义
240
+ 流程Key: asset-disposal-approval
241
+ 审批类型: multi-level
242
+
243
+ ## 审批规则
244
+ - 金额 >= 500万: 集团审批
245
+ - 金额 >= 30万: 子公司审批
246
+ - 金额 < 30万: 自动通过
247
+
248
+ 执行:
249
+ 场景: workflow-crud
250
+ 模板: scenarios/workflow-crud
251
+
252
+ 输出:
253
+ 后端:
254
+ - AssetDisposalApplyController.java
255
+ - IAssetDisposalApplyService.java
256
+ - AssetDisposalApplyServiceImpl.java
257
+ - AssetDisposalApplyMapper.java
258
+ - AssetDisposalApplyMapper.xml
259
+ - AssetDisposalApply.java
260
+ - AssetDisposalApplyProcessService.java
261
+ - AssetDisposalTaskListener.java
262
+ - asset-disposal-approval.bpmn20.xml
263
+
264
+ 前端:
265
+ - index.vue
266
+ - form.vue
267
+ - detail.vue
268
+ - ApprovalPanel.vue
269
+ - asset-disposal.js
270
+
271
+ SQL:
272
+ - asset_disposal_apply.sql
273
+ - menu_asset_disposal_apply.sql
274
+ ```
275
+
276
+ ## 协作关系
277
+
278
+ ```yaml
279
+ 被调用:
280
+ - pdd-implement-feature: 实现功能点时调用
281
+
282
+ 咨询:
283
+ - expert-ruoyi: 若依框架规范验证
284
+ - expert-activiti: 工作流规范验证
285
+
286
+ 输出给:
287
+ - pdd-code-reviewer: 生成的代码需要审查
288
+ ```
289
+
290
+ ## 注意事项
291
+
292
+ 1. **变量完整性**: 确保所有必需变量都有值
293
+ 2. **条件渲染**: 正确处理条件渲染逻辑
294
+ 3. **输出路径**: 确保输出路径符合项目规范
295
+ 4. **编码规范**: 生成的代码需符合项目编码规范
296
+ 5. **安全检查**: 文本字段需要添加@Xss注解
297
+ 6. **权限配置**: 菜单配置需要包含所有页面
298
+
299
+ ## PRD感知动态模板(关键改进)
300
+
301
+ ### 脚手架感知选择
302
+
303
+ 根据项目脚手架类型自动选择不同的模板集:
304
+
305
+ | 脚手架类型 | 判断条件 | 模板集 | 关键差异 |
306
+ |-----------|---------|--------|---------|
307
+ | Python Fullstack | 项目含FastAPI/requirements.txt | scenarios/crud-python | SQLAlchemy Model + Pydantic Schema + FastAPI Router |
308
+ | 若依(RuoYi) | 项目含pom.xml/SpringBoot | scenarios/crud-ruoyi | MyBatis Mapper + Service + Controller + sys_menu SQL |
309
+
310
+ ### PRD约定注入
311
+
312
+ 从PRD文档中提取约定并注入模板变量:
313
+
314
+ ```yaml
315
+ PRD约定提取:
316
+ 枚举编码约定:
317
+ 来源: PRD第5.3节
318
+ 注入: fields[].enumCase = "snake_case"
319
+ 效果: 枚举值自动转为snake_case小写
320
+
321
+ 类型映射约定:
322
+ 来源: PRD第5.4节
323
+ 注入: fields[].pythonType / fields[].javaType / fields[].tsType
324
+ 效果: 字段类型自动按映射表转换
325
+
326
+ 表单组件映射:
327
+ 来源: PRD第4.4节
328
+ 注入: fields[].component = "el-select" / "el-date-picker" / "el-input"
329
+ 效果: 前端表单自动使用正确组件
330
+
331
+ Options API数据源:
332
+ 来源: PRD第4.5节
333
+ 注入: fields[].optionsApi = "/departments/options"
334
+ 效果: 下拉框自动关联Options API
335
+ ```
336
+
337
+ ### Python Fullstack模板变量
338
+
339
+ | 变量名 | 说明 | 示例 |
340
+ |-------|------|------|
341
+ | modelName | SQLAlchemy模型名 | EquityTransferApply |
342
+ | schemaName | Pydantic Schema名 | EquityTransferApplyResponse |
343
+ | optionSchemaName | Option Schema名 | EquityTransferApplyOption |
344
+ | routerPrefix | API路由前缀 | /api/v1/equity-transfers |
345
+ | fields[].saType | SQLAlchemy类型 | String(36), Numeric(12,2), DateTime |
346
+ | fields[].pydanticType | Pydantic类型 | str, float, datetime |
347
+ | fields[].tsType | TypeScript类型 | string, number, string(ISO8601) |
348
+
349
+ ### 若依模板变量
350
+
351
+ | 变量名 | 说明 | 示例 |
352
+ |-------|------|------|
353
+ | packageName | Java包路径 | com.sjjk.equity.transfer |
354
+ | entityName | 实体类名 | EquityTransferApply |
355
+ | mapperName | Mapper名 | EquityTransferApplyMapper |
356
+ | serviceName | Service名 | IEquityTransferApplyService |
357
+ | controllerName | Controller名 | EquityTransferApplyController |
358
+ | permissionPrefix | 权限前缀 | equity:transfer |
359
+ | menuParentId | 父菜单ID | 2000 |
360
+ | fields[].javaType | Java类型 | String, BigDecimal, Date |
361
+ | fields[].mybatisType | MyBatis JDBC类型 | VARCHAR, DECIMAL, TIMESTAMP |
362
+ | fields[].dictType | 字典类型 | sys_transfer_type |
363
+
364
+ ### Bug模式库防护
365
+
366
+ > 完整模式定义: `config/bug-patterns.yaml`
367
+
368
+ 模板渲染完成后,自动检查生成的代码是否触犯Bug模式库:
369
+
370
+ | 检查项 | 对应模式 | 检查方法 |
371
+ |--------|---------|---------|
372
+ | datetime字段类型 | PATTERN-001 | 检查Schema中datetime字段是否使用field_serializer |
373
+ | /options路由顺序 | PATTERN-002 | 检查router.py中/options是否在/{id}之前 |
374
+ | 枚举编码规范 | PATTERN-003 | 检查枚举值是否遵循snake_case约定 |
375
+ | safeAlert使用 | PATTERN-004 | 检查前端Vue组件是否使用safeAlert而非alert |
376
+ | 若依权限注解 | PATTERN-R001 | 检查Controller方法是否有@PreAuthorize |
377
+ | 若依菜单配置 | PATTERN-R002 | 检查是否生成sys_menu INSERT SQL |
378
+
379
+ ## 错误处理
380
+
381
+ | 错误类型 | 处理方式 |
382
+ |---------|---------|
383
+ | 变量缺失 | 提示用户补充必需变量 |
384
+ | 模板不存在 | 检查模板路径,提示可用模板 |
385
+ | 渲染失败 | 记录错误日志,返回详细错误信息 |
386
+ | 文件已存在 | 提示用户确认是否覆盖 |