ai-engineering-init 1.3.1 → 1.3.4

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.
@@ -16,20 +16,54 @@ description: |
16
16
 
17
17
  ## 概述
18
18
 
19
- 本指南用于在 RuoYi-Vue-Plus 框架中添加新的技能(Skill)。技能通过 UserPromptSubmit Hook 自动评估和激活,确保 AI 在编码前加载领域专业知识。
19
+ 本指南用于在 leniu-tengyun-core 项目中添加新的技能(Skill)。项目同时支持三个 AI 编码平台,技能需在所有平台保持一致。
20
20
 
21
- **技能系统工作原理**:
21
+ ### 三平台架构
22
22
 
23
+ | 平台 | 技能目录 | Hook 文件 | 激活方式 |
24
+ |------|---------|-----------|---------|
25
+ | **Claude Code** | `.claude/skills/{技能名}/SKILL.md` | `.claude/hooks/skill-forced-eval.js` | `Skill(技能名)` 工具调用 |
26
+ | **Codex CLI** | `.codex/skills/{技能名}/SKILL.md` | 无独立 hook | 依赖 AGENTS.md 引导 |
27
+ | **Cursor** | `.cursor/skills/{技能名}/SKILL.md` | `.cursor/hooks/cursor-skill-eval.js` | Read 文件读取 |
28
+
29
+ ### 技能系统工作原理
30
+
31
+ **Claude Code**:
23
32
  ```
24
33
  用户提交问题
25
34
  ↓ skill-forced-eval.js Hook 触发
26
- 注入技能评估指令
35
+ 注入技能评估指令(列出可用技能 + 触发词)
27
36
  ↓ AI 评估匹配的技能
28
37
  逐个调用 Skill(技能名)
29
38
  ↓ 读取 .claude/skills/{技能名}/SKILL.md
30
39
  AI 获得领域知识后开始实现
31
40
  ```
32
41
 
42
+ **Cursor**:
43
+ ```
44
+ 用户提交问题
45
+ ↓ cursor-skill-eval.js Hook 触发
46
+ 扫描 skillMap 关键词匹配
47
+ ↓ 注入读取指令
48
+ AI 读取 .cursor/skills/{技能名}/SKILL.md
49
+ ↓ 同时 skill-activation.mdc 规则也可触发读取
50
+ AI 获得领域知识后开始实现
51
+ ```
52
+
53
+ ### 各平台注册位置速查
54
+
55
+ 新建技能需要修改以下文件:
56
+
57
+ | # | 文件 | 作用 | 必须 |
58
+ |---|------|------|------|
59
+ | 1 | `.claude/skills/{技能名}/SKILL.md` | 技能主文件 | 是 |
60
+ | 2 | `.claude/hooks/skill-forced-eval.js` | Claude Code 触发词注册 | 是 |
61
+ | 3 | `AGENTS.md` | Codex 技能清单 | 是 |
62
+ | 4 | `.cursor/skills/{技能名}/SKILL.md` | Cursor 技能文件 | 是 |
63
+ | 5 | `.cursor/hooks/cursor-skill-eval.js` | Cursor 关键词映射 | 是 |
64
+ | 6 | `.cursor/rules/skill-activation.mdc` | Cursor 规则触发 | 是 |
65
+ | 7 | `.codex/skills/{技能名}/SKILL.md` | Codex 技能文件 | 是 |
66
+
33
67
  ---
34
68
 
35
69
  ## YAML 头部规范
@@ -60,58 +94,21 @@ description: |
60
94
  | **格式** | kebab-case(全小写,横线连接) | `json-serialization` |
61
95
  | **禁止** | 下划线、驼峰、空格 | ~~`json_serialization`~~, ~~`jsonSerialization`~~ |
62
96
  | **长度** | 1-4 个单词 | `ui-pc`, `crud-development`, `redis-cache` |
97
+ | **leniu 前缀** | leniu 专项技能加 `leniu-` 前缀 | `leniu-crud-development` |
63
98
 
64
99
  ### description 第一行风格
65
100
 
66
- 第一行没有强制格式,参考现有技能的两种常见风格:
67
-
68
101
  **风格 A:直述型**(多数技能采用)
69
102
  ```yaml
70
103
  description: |
71
- 后端 CRUD 开发规范。基于 RuoYi-Vue-Plus 三层架构。
72
- 后端安全开发规范。包含 Sa-Token 认证授权、数据脱敏。
73
- 后端工具类使用指南。包含 MapstructUtils、StringUtils 等。
104
+ 后端 CRUD 开发规范。基于四层架构(Controller Business → Service → Mapper)。
105
+ 后端安全开发规范。包含认证授权、数据脱敏。
74
106
  ```
75
107
 
76
108
  **风格 B:触发型**
77
109
  ```yaml
78
110
  description: |
79
111
  当需要进行技术选型、对比方案时自动使用此 Skill。
80
- 当需要为框架增加新技能时自动使用此 Skill。
81
- ```
82
-
83
- ### 实际技能 YAML 头部示例
84
-
85
- ```yaml
86
- ---
87
- name: crud-development
88
- description: |
89
- 后端 CRUD 开发规范。基于 RuoYi-Vue-Plus 三层架构(Controller → Service → Mapper),无独立 DAO 层。
90
-
91
- 触发场景:
92
- - 新建业务模块的 CRUD 功能
93
- - 创建 Entity、BO、VO、Service、Mapper、Controller
94
- - 分页查询、新增、修改、删除、导出
95
- - 查询条件构建(buildQueryWrapper)
96
-
97
- 触发词:CRUD、增删改查、新建模块、Entity、BO、VO、Service、Mapper、Controller、分页查询、buildQueryWrapper、@AutoMapper、BaseMapperPlus、TenantEntity
98
- ---
99
- ```
100
-
101
- ```yaml
102
- ---
103
- name: redis-cache
104
- description: |
105
- 当需要使用Redis缓存、分布式锁、限流等功能时自动使用此Skill。
106
-
107
- 触发场景:
108
- - 使用Redis缓存数据
109
- - 配置Spring Cache缓存注解
110
- - 实现分布式锁
111
- - 实现接口限流
112
-
113
- 触发词:Redis、缓存、Cache、@Cacheable、@CacheEvict、@CachePut、RedisUtils、CacheUtils、分布式锁、RLock、限流、RateLimiter
114
- ---
115
112
  ```
116
113
 
117
114
  ---
@@ -120,37 +117,26 @@ description: |
120
117
 
121
118
  ### 1.1 定义技能属性
122
119
 
123
- 创建前先明确:
124
-
125
120
  | 属性 | 说明 | 示例 |
126
121
  |------|------|------|
127
- | **名称** | kebab-case 格式 | `payment-gateway` |
128
- | **类别** | 后端/通用/前端(需 plus-ui) | 后端 |
122
+ | **名称** | kebab-case 格式 | `leniu-payment-gateway` |
123
+ | **类别** | 后端/通用/前端 | 后端 |
129
124
  | **触发场景** | 至少 3 个具体场景 | 支付接入、退款处理、对账 |
130
125
  | **触发词** | 至少 5 个关键词 | 支付、退款、订单、对账、Payment |
131
- | **参考代码** | 项目中的真实代码位置 | `ruoyi-modules/ruoyi-system/` |
126
+ | **参考代码** | 项目中的真实代码位置 | `sys-canteen/.../order/` |
132
127
 
133
128
  ### 1.2 检查范围冲突
134
129
 
135
130
  查看现有技能列表,确保不与已有技能重叠:
136
131
 
137
- **当前已有技能**(`.claude/skills/` 下 33 个):
138
-
139
- | 分类 | 技能 |
140
- |------|------|
141
- | 后端开发 | crud-development, api-development, database-ops, backend-annotations, utils-toolkit, error-handler |
142
- | 安全权限 | security-guard, data-permission, tenant-management |
143
- | 中间件 | redis-cache, json-serialization, scheduled-jobs, file-oss-management |
144
- | 通信集成 | websocket-sse, sms-mail, social-login, workflow-engine |
145
- | 质量保障 | test-development, bug-detective, performance-doctor, code-patterns |
146
- | 架构决策 | architecture-design, tech-decision, brainstorm, project-navigator |
147
- | 工具流程 | git-workflow, task-tracker, add-skill |
148
- | 前端(需 plus-ui) | ui-pc, store-pc |
149
- | 特殊功能 | banana-image, collaborating-with-codex, collaborating-with-gemini |
150
-
151
- 如果新技能与现有技能有交集,在 SKILL.md 中用"注意"段落说明边界:
132
+ ```bash
133
+ # 查看所有技能
134
+ ls .claude/skills/
135
+ ```
136
+
137
+ 如果新技能与现有技能有交集,在 SKILL.md 末尾用"注意"段落说明边界:
152
138
  ```markdown
153
- 注意:如果是认证授权(登录、Token、Sa-Token),请使用 security-guard。
139
+ 注意:如果是认证授权(登录、Token),请使用 leniu-security-guard。
154
140
  ```
155
141
 
156
142
  ---
@@ -196,27 +182,30 @@ description: |
196
182
  ### 2.3 内容质量要点
197
183
 
198
184
  - **代码示例必须来自项目实际代码**,不要虚构类名、方法名
199
- - **包名统一 `org.dromara.*`**,不要出现 `com.ruoyi.*`
200
- - **三层架构**:Controller → Service → Mapper,无 DAO 层
201
- - **对象转换用 `MapstructUtils.convert()`**,不要写 BeanUtils
185
+ - **包名统一 `net.xnzn.core.*`**,不要出现 `org.dromara.*` `com.ruoyi.*`
186
+ - **四层架构**:Controller → Business → Service → Mapper
187
+ - **对象转换用 `BeanUtil.copyProperties()`**(Hutool),不要写 MapstructUtils
188
+ - **异常用 `LeException`**,不要写 ServiceException
189
+ - **审计字段**:`crby/crtime/upby/uptime`,不要写 createBy/createTime
202
190
  - 技能不需要固定行数要求,以内容实用为准(实际范围 200-650 行)
203
191
 
204
192
  ### 2.4 不同类型技能的侧重
205
193
 
206
194
  | 类型 | 侧重 | 示例 |
207
195
  |------|------|------|
208
- | 后端开发类 | 代码模板、标准写法、禁止项 | crud-development |
209
- | 工具类 | API 列表、使用示例、返回值 | utils-toolkit |
210
- | 中间件类 | 配置方法、集成步骤、注意事项 | redis-cache |
211
- | 流程类 | 步骤说明、决策树、检查清单 | brainstorm |
196
+ | 后端开发类 | 代码模板、标准写法、禁止项 | leniu-crud-development |
197
+ | 工具类 | API 列表、使用示例、返回值 | leniu-utils-toolkit |
198
+ | 中间件类 | 配置方法、集成步骤、注意事项 | leniu-redis-cache |
199
+ | 流程类 | 步骤说明、决策树、检查清单 | leniu-brainstorm |
200
+ | 报表类 | SQL 模板、fix 模式、退款处理 | leniu-report-customization |
212
201
 
213
202
  ---
214
203
 
215
- ## 第 3 步:注册技能
204
+ ## 第 3 步:注册技能(Claude Code)
216
205
 
217
- 技能需要在两个位置注册,才能被系统识别和激活。
206
+ 技能需要在 **两个** 位置注册,才能被 Claude Code 识别和激活。
218
207
 
219
- ### 3.1 在 Hook 中注册
208
+ ### 3.1 在 Claude Hook 中注册
220
209
 
221
210
  **文件**:`.claude/hooks/skill-forced-eval.js`
222
211
 
@@ -228,43 +217,97 @@ description: |
228
217
 
229
218
  **示例**:
230
219
  ```javascript
231
- - payment-gateway: 支付/退款/对账/Payment/支付宝/微信支付
220
+ - leniu-payment-gateway: 支付/退款/对账/Payment/支付宝/微信支付
232
221
  ```
233
222
 
234
- **注意**:按逻辑分组插入,不是追加到末尾。
223
+ **注意**:按逻辑分组插入(leniu 专项技能放在一起),不是追加到末尾。
235
224
 
236
225
  ### 3.2 在 AGENTS.md 中注册
237
226
 
238
227
  **文件**:`AGENTS.md` 的"技能清单与触发条件"表格
239
228
 
240
- 在对应分类下添加一行:
241
-
242
229
  ```markdown
243
230
  | `{技能名}` | {触发条件简述} |
244
231
  ```
245
232
 
246
- **示例**:
247
- ```markdown
248
- | `payment-gateway` | 支付接入、退款、对账、支付宝/微信支付 |
233
+ ### 3.3 验证 Claude Code 注册
234
+
235
+ ```bash
236
+ grep "{技能名}" .claude/hooks/skill-forced-eval.js
237
+ grep "{技能名}" AGENTS.md
249
238
  ```
250
239
 
251
- ### 3.3 验证注册
240
+ ---
241
+
242
+ ## 第 4 步:注册技能(Cursor)
243
+
244
+ Cursor 有**三处**需要注册。
245
+
246
+ ### 4.1 复制 SKILL.md 到 Cursor
252
247
 
253
248
  ```bash
254
- # 检查 hook 文件
255
- grep "payment-gateway" .claude/hooks/skill-forced-eval.js
249
+ mkdir -p .cursor/skills/{技能名}
250
+ cp .claude/skills/{技能名}/SKILL.md .cursor/skills/{技能名}/SKILL.md
251
+ ```
252
+
253
+ ### 4.2 在 Cursor Hook 中注册
254
+
255
+ **文件**:`.cursor/hooks/cursor-skill-eval.js`
256
256
 
257
- # 检查 AGENTS.md
258
- grep "payment-gateway" AGENTS.md
257
+ `skillMap` 数组的对应分组中添加条目:
258
+
259
+ ```javascript
260
+ // 在 skillMap 数组中找到对应分组,添加:
261
+ {
262
+ name: '{技能名}',
263
+ keywords: ['关键词1', '关键词2', '关键词3', '关键词4', '关键词5']
264
+ },
259
265
  ```
260
266
 
261
- ---
267
+ **分组说明**(按注释标记):
268
+ - `// ========== leniu 专项技能 ==========` — leniu 前缀的技能
269
+ - `// ========== OpenSpec 工作流 ==========` — openspec 技能
270
+ - `// ========== 通用技能 ==========` — 通用技能(无 leniu 前缀)
262
271
 
263
- ## 第 4 步:Codex 同步
272
+ **示例**:
273
+ ```javascript
274
+ {
275
+ name: 'leniu-payment-gateway',
276
+ keywords: ['leniu-支付', 'leniu-退款', 'leniu-对账', '支付宝', '微信支付']
277
+ },
278
+ ```
279
+
280
+ ### 4.3 在 Cursor Rules 中注册
281
+
282
+ **文件**:`.cursor/rules/skill-activation.mdc`
283
+
284
+ 在对应分组的表格中添加一行:
285
+
286
+ ```markdown
287
+ | {触发词,用/分隔} | `.cursor/skills/{技能名}/SKILL.md` |
288
+ ```
289
+
290
+ **分组说明**:
291
+ - `### leniu 专项技能` — leniu 前缀的技能
292
+ - `### OpenSpec 工作流技能` — openspec 技能
293
+ - `### 通用技能` — 通用技能
294
+
295
+ **示例**:
296
+ ```markdown
297
+ | leniu-支付/leniu-退款/leniu-对账/支付宝/微信支付 | `.cursor/skills/leniu-payment-gateway/SKILL.md` |
298
+ ```
299
+
300
+ ### 4.4 验证 Cursor 注册
301
+
302
+ ```bash
303
+ grep "{技能名}" .cursor/hooks/cursor-skill-eval.js
304
+ grep "{技能名}" .cursor/rules/skill-activation.mdc
305
+ ls .cursor/skills/{技能名}/SKILL.md
306
+ ```
264
307
 
265
- 项目同时支持 Claude Code(`.claude/`)和 Codex CLI(`.codex/`)两个系统。
308
+ ---
266
309
 
267
- ### 同步步骤
310
+ ## 第 5 步:Codex 同步
268
311
 
269
312
  ```bash
270
313
  # 1. 创建 Codex 目录
@@ -279,46 +322,94 @@ diff .claude/skills/{技能名}/SKILL.md .codex/skills/{技能名}/SKILL.md
279
322
 
280
323
  **注意**:
281
324
  - `.codex/skills/` 中额外存放斜杠命令型技能(如 dev, crud, check 等),这些不需要在 `.claude/` 中创建
282
- - 普通技能(非斜杠命令)需要保持两个目录一致
325
+ - 普通技能(非斜杠命令)需要保持三个目录一致
283
326
 
284
327
  ---
285
328
 
286
- ## 第 5 步:验证
329
+ ## 第 6 步:验证
287
330
 
288
331
  ### 完整检查清单
289
332
 
290
- **文件**:
333
+ **主文件**:
291
334
  - [ ] `.claude/skills/{技能名}/SKILL.md` 已创建
335
+
336
+ **Claude Code 注册**:
337
+ - [ ] `.claude/hooks/skill-forced-eval.js` 已添加技能条目
338
+ - [ ] `AGENTS.md` 已添加技能条目
339
+
340
+ **Cursor 注册**:
341
+ - [ ] `.cursor/skills/{技能名}/SKILL.md` 已同步
342
+ - [ ] `.cursor/hooks/cursor-skill-eval.js` skillMap 已添加条目
343
+ - [ ] `.cursor/rules/skill-activation.mdc` 已添加触发行
344
+
345
+ **Codex 同步**:
292
346
  - [ ] `.codex/skills/{技能名}/SKILL.md` 已同步
293
347
 
294
348
  **YAML 头部**:
295
349
  - [ ] `name` 使用 kebab-case 格式
296
350
  - [ ] description 包含触发场景(至少 3 个)
297
351
  - [ ] description 包含触发词(至少 5 个)
298
- - [ ] 各部分之间有空行
299
-
300
- **注册**:
301
- - [ ] `.claude/hooks/skill-forced-eval.js` 已添加技能条目
302
- - [ ] `AGENTS.md` 已添加技能条目
303
352
 
304
353
  **内容**:
305
354
  - [ ] 代码示例来自项目实际代码,无虚构内容
306
- - [ ] 包名使用 `org.dromara.*`
355
+ - [ ] 包名使用 `net.xnzn.core.*`
307
356
  - [ ] 与现有技能无范围冲突(或已说明边界)
308
357
 
358
+ ### 一键验证命令
359
+
360
+ ```bash
361
+ SKILL_NAME="{技能名}"
362
+
363
+ echo "=== Claude ===" && \
364
+ ls .claude/skills/$SKILL_NAME/SKILL.md && \
365
+ grep "$SKILL_NAME" .claude/hooks/skill-forced-eval.js && \
366
+ grep "$SKILL_NAME" AGENTS.md && \
367
+ echo "" && echo "=== Cursor ===" && \
368
+ ls .cursor/skills/$SKILL_NAME/SKILL.md && \
369
+ grep "$SKILL_NAME" .cursor/hooks/cursor-skill-eval.js && \
370
+ grep "$SKILL_NAME" .cursor/rules/skill-activation.mdc && \
371
+ echo "" && echo "=== Codex ===" && \
372
+ ls .codex/skills/$SKILL_NAME/SKILL.md && \
373
+ echo "" && echo "=== 三平台一致性 ===" && \
374
+ diff .claude/skills/$SKILL_NAME/SKILL.md .cursor/skills/$SKILL_NAME/SKILL.md && \
375
+ diff .claude/skills/$SKILL_NAME/SKILL.md .codex/skills/$SKILL_NAME/SKILL.md && \
376
+ echo "全部通过"
377
+ ```
378
+
309
379
  ---
310
380
 
311
381
  ## 常见陷阱
312
382
 
313
- ### 1. 遗漏注册
383
+ ### 1. 遗漏注册(最常见)
314
384
 
315
385
  **症状**:技能文件存在但从不被激活
316
386
 
317
- **原因**:只创建了 SKILL.md,没有在 Hook 和 AGENTS.md 中注册
387
+ **原因**:只创建了 SKILL.md,没有完成注册。三平台共 **7 处**需要操作。
388
+
389
+ **解决**:对照第 6 步检查清单逐项确认
390
+
391
+ ### 2. Cursor Hook 遗漏
392
+
393
+ **症状**:Claude Code 中正常,Cursor 中技能不激活
394
+
395
+ **原因**:只注册了 `.cursor/rules/skill-activation.mdc`,忘了注册 `.cursor/hooks/cursor-skill-eval.js`(或反之)
396
+
397
+ **解决**:Cursor 有两处需要注册——Hook 负责编程匹配触发,Rules 负责规则文本触发,**两处都需要**
318
398
 
319
- **解决**:完成第 3 步的两处注册
399
+ ### 3. 三平台 SKILL.md 不一致
320
400
 
321
- ### 2. 触发词过于宽泛
401
+ **症状**:不同平台的 AI 给出不同的代码建议
402
+
403
+ **原因**:修改了 `.claude/` 中的 SKILL.md 后,忘记同步到 `.cursor/` 和 `.codex/`
404
+
405
+ **解决**:修改后执行同步:
406
+ ```bash
407
+ SKILL_NAME="{技能名}"
408
+ cp .claude/skills/$SKILL_NAME/SKILL.md .cursor/skills/$SKILL_NAME/SKILL.md
409
+ cp .claude/skills/$SKILL_NAME/SKILL.md .codex/skills/$SKILL_NAME/SKILL.md
410
+ ```
411
+
412
+ ### 4. 触发词过于宽泛
322
413
 
323
414
  **症状**:技能在不相关场景被频繁误触发
324
415
 
@@ -326,27 +417,25 @@ diff .claude/skills/{技能名}/SKILL.md .codex/skills/{技能名}/SKILL.md
326
417
 
327
418
  **解决**:使用具体术语(如"CRUD开发"、"支付接入")
328
419
 
329
- ### 3. 代码示例虚构
420
+ ### 5. 代码示例虚构
330
421
 
331
422
  **症状**:AI 参考技能生成的代码使用了不存在的类或方法
332
423
 
333
- **原因**:编写技能时没有验证引用的类名、方法名在项目中真实存在
334
-
335
424
  **解决**:编写前用 Grep/Glob 搜索确认引用的类和方法确实存在
336
425
 
337
- ### 4. 忘记同步到 Codex
426
+ ### 6. 技能范围重叠
338
427
 
339
- **症状**:Claude Code 中正常,Codex CLI 中找不到技能
428
+ **症状**:同一个问题触发多个技能,指导矛盾
340
429
 
341
- **原因**:只在 `.claude/skills/` 创建,未复制到 `.codex/skills/`
430
+ **解决**:在 SKILL.md 末尾添加"注意"段落说明边界:
431
+ ```
432
+ 注意:如果是行级数据权限(@DataPermission),请使用 leniu-data-permission。
433
+ ```
342
434
 
343
- **解决**:`cp .claude/skills/{技能名}/SKILL.md .codex/skills/{技能名}/SKILL.md`
435
+ ### 7. 包名写错
344
436
 
345
- ### 5. 技能范围与现有技能重叠
437
+ **症状**:生成的代码编译失败
346
438
 
347
- **症状**:同一个问题触发多个技能,指导矛盾
439
+ **原因**:技能中写了 `org.dromara.*`(旧包名)
348
440
 
349
- **解决**:在 SKILL.md 末尾添加"注意"段落说明边界,例如:
350
- ```
351
- 注意:如果是行级数据权限(@DataPermission),请使用 data-permission。
352
- ```
441
+ **解决**:leniu 项目统一使用 `net.xnzn.core.*`
@@ -75,11 +75,23 @@ git commit -m "feat(system): 新增xxx功能"
75
75
  ### 不要提交的文件
76
76
 
77
77
  ```bash
78
- # ❌ 配置文件(绝对不提交)
78
+ # ❌ 团队项目配置文件(绝对不提交,包含数据库/中间件/环境信息)
79
+ core-base/src/main/resources/bootstrap.yml
80
+ core-base/src/main/resources/bootstrap-dev.yml
81
+ core-base/src/main/resources/ConfigSource.properties
82
+ core-base/src/main/resources/license.dat
83
+ core-base/src/main/resources/logback-spring.xml
84
+ core-base/src/main/resources/message_*.properties
85
+
86
+ # ❌ 通用配置文件(绝对不提交)
79
87
  ruoyi-admin/src/main/resources/application.yml
80
88
  ruoyi-admin/src/main/resources/application-*.yml
81
89
  ruoyi-common/**/resources/*.yml
82
90
 
91
+ # ❌ 测试/迁移基础设施文件(包含本地数据源配置,不提交)
92
+ **/WebMvcTestConfig.java
93
+ **/DataSourceMigration.java
94
+
83
95
  # ❌ IDE 配置
84
96
  .idea/
85
97
  .vscode/
@@ -335,14 +347,15 @@ git log --author="作者名"
335
347
 
336
348
  1. **不要强制推送到主分支**
337
349
  ```bash
338
- # ❌ 禁止
339
- git push --force origin 5.X
350
+ # ❌ 禁止(团队主分支为 master)
351
+ git push --force origin master
352
+ git push --force origin main
340
353
  ```
341
354
 
342
355
  2. **不要在主分支直接开发**
343
356
  ```bash
344
- # ❌ 禁止
345
- git checkout 5.X
357
+ # ❌ 禁止(团队主分支为 master,不在此分支直接提交)
358
+ git checkout master
346
359
  # 直接修改代码...
347
360
  ```
348
361
 
@@ -352,8 +365,17 @@ git log --author="作者名"
352
365
  application.yml
353
366
  application-dev.yml
354
367
  application-prod.yml
368
+ bootstrap.yml
369
+ bootstrap-dev.yml
370
+ ConfigSource.properties
371
+ license.dat
372
+ logback-spring.xml
373
+ message_*.properties
355
374
  credentials.json
356
375
  password.txt
376
+ # ❌ 禁止提交(包含本地数据源/测试环境配置)
377
+ WebMvcTestConfig.java
378
+ DataSourceMigration.java
357
379
  ```
358
380
 
359
381
  4. **不要自动 push(除非用户明确要求)**
@@ -13,11 +13,51 @@ description: |
13
13
  触发词:定制报表、汇总报表、report_order_info、report_order_detail、report_account_flow、退款汇总、消费金额统计、订单报表、流水报表
14
14
  ---
15
15
 
16
- # leniu 定制报表开发指南
16
+ # leniu 定制报表开发指南(v5.29+版包含5.29)
17
+
18
+ ## ⚠️ 版本识别(必读)
19
+
20
+ **本 skill 仅适用于 v5.29+ 版本包含5.29**。开始前必须确认项目版本。
21
+
22
+ ### 如何判断当前项目版本
23
+
24
+ **方法一:查看目录结构**
25
+ ```bash
26
+ # 若报表代码在 sys-canteen 内 → v5.29 版本(使用本 skill)
27
+ ls leniu-tengyun-core/sys-canteen/src/main/java/.../report/statistics/
28
+
29
+ # 若存在独立的 core-report 模块 → 标准版(使用 leniu-report-standard-customization)
30
+ ls leniu-tengyun-core/core-report/
31
+ ```
32
+
33
+ **方法二:查看 git tag**
34
+ ```bash
35
+ git tag --sort=-v:refname | head -5
36
+ # v5.29.x tag → v5.29 版本,使用本 skill
37
+ ```
38
+
39
+ **方法三:检查 report_order_info 表字段**
40
+ - 有 `consume_type` 字段(1=消费,2=退款)→ v5.29 版本,使用本 skill
41
+ - 无 `consume_type`,有独立 `report_refund` 表 → 标准版,使用 `leniu-report-standard-customization`
42
+
43
+ ### 两版本核心差异速查
44
+
45
+ | 特性 | v5.29 版本(本指南) | 标准版 |
46
+ |------|------------------|--------|
47
+ | 模块位置 | `sys-canteen` 内嵌 | `core-report` 独立模块 |
48
+ | 退款存储 | 合并入 `report_order_info`,`consumeType=2` | 独立 `report_refund` 表 |
49
+ | 退款金额 | **负数**存储,直接 SUM 即净额 | **正数**存储,需手动减退 |
50
+ | 第二阶段消费 | 用 `batchConsume()` 增量累加 | 用 `fix()` 按日重算 |
51
+ | report_order_info.consumeType | **1=消费,2=退款** | 无此字段 |
52
+ | 分析模块 | 无独立分析模块 | 完整引擎(6 大分析维度) |
53
+
54
+ > **标准版报表开发**请使用 `leniu-report-standard-customization` skill。
55
+
56
+ ---
17
57
 
18
58
  ## 概述
19
59
 
20
- 本项目的定制报表基于**报表基础表**(由 MQ 消息写入)进行二次汇总。核心数据源有两类:
60
+ 本项目(v5.29)的定制报表基于**报表基础表**(由 MQ 消息写入)进行二次汇总。核心数据源有两类:
21
61
  1. **订单类**:`report_order_info` + `report_order_detail`(消费/退款数据)
22
62
  2. **账户流水类**:`report_account_flow` + `report_account_flow_detail`(钱包变动数据)
23
63