ai-engineering-init 1.4.0 → 1.4.2
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.
- package/.claude/skills/bug-detective/SKILL.md +19 -19
- package/.claude/skills/project-navigator/SKILL.md +164 -258
- package/.codex/skills/bug-detective/SKILL.md +19 -19
- package/.codex/skills/project-navigator/SKILL.md +164 -258
- package/.cursor/hooks/cursor-skill-eval.js +53 -1
- package/.cursor/hooks.json +3 -3
- package/.cursor/skills/project-navigator/SKILL.md +20 -20
- package/CLAUDE.md +58 -0
- package/package.json +1 -1
|
@@ -10,6 +10,8 @@ description: |
|
|
|
10
10
|
- 日志文件分析(./logs/sys-console.log)
|
|
11
11
|
- 前端页面不显示、API 调用异常
|
|
12
12
|
|
|
13
|
+
联动技能:数据问题自动联动 mysql-debug 查库验证
|
|
14
|
+
|
|
13
15
|
触发词:Bug、报错、异常、不工作、500错误、NullPointerException、SQLException、数据查不到、日志分析、排查、调试、debug、错误排查、精度丢失
|
|
14
16
|
---
|
|
15
17
|
|
|
@@ -204,31 +206,28 @@ XxxVO vo = BeanUtil.copyProperties(entity, XxxVO.class); // 源对象为 null
|
|
|
204
206
|
|
|
205
207
|
---
|
|
206
208
|
|
|
207
|
-
##
|
|
209
|
+
## 数据库排查(委托 mysql-debug)
|
|
208
210
|
|
|
209
|
-
|
|
211
|
+
当诊断结果指向数据问题时,**必须联动 `mysql-debug` 技能**进行数据库查询验证:
|
|
210
212
|
|
|
211
213
|
```
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
214
|
+
诊断决策树判定"数据相关问题"
|
|
215
|
+
↓
|
|
216
|
+
自动激活 mysql-debug 技能
|
|
217
|
+
↓
|
|
218
|
+
mysql-debug 执行:配置检查 → 日志提取数据库名 → 执行只读 SQL → 返回结果
|
|
219
|
+
↓
|
|
220
|
+
bug-detective 结合查询结果给出修复方案
|
|
215
221
|
```
|
|
216
222
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-- 最近数据
|
|
224
|
-
SELECT * FROM 表名 ORDER BY crtime DESC LIMIT 10;
|
|
223
|
+
**触发 mysql-debug 的信号**:
|
|
224
|
+
- 查询返回空/数据不存在
|
|
225
|
+
- 数据数量、金额、状态不对
|
|
226
|
+
- SQL 异常(DataIntegrityViolation、DuplicateKey)
|
|
227
|
+
- 关联数据不一致
|
|
228
|
+
- 特定租户才出现的问题
|
|
225
229
|
|
|
226
|
-
|
|
227
|
-
DESC 表名;
|
|
228
|
-
|
|
229
|
-
-- 执行计划
|
|
230
|
-
EXPLAIN SELECT ...;
|
|
231
|
-
```
|
|
230
|
+
> 如果 mysql-debug 配置未就绪(密码未设置/mysql CLI 未安装),仍可继续纯代码分析路径。
|
|
232
231
|
|
|
233
232
|
---
|
|
234
233
|
|
|
@@ -250,6 +249,7 @@ EXPLAIN SELECT ...;
|
|
|
250
249
|
|
|
251
250
|
| 排查发现 | 推荐 Skill |
|
|
252
251
|
|---------|-----------|
|
|
252
|
+
| 数据问题(查不到/不一致/状态异常) | `mysql-debug`(自动联动) |
|
|
253
253
|
| SQL 性能慢 | `performance-doctor` |
|
|
254
254
|
| 权限配置问题 | `security-guard` |
|
|
255
255
|
| BO/VO 映射错误 | `leniu-crud-development` |
|
|
@@ -1,305 +1,211 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project-navigator
|
|
3
3
|
description: |
|
|
4
|
-
当需要了解项目结构、查找文件、定位代码时自动使用此 Skill
|
|
4
|
+
当需要了解项目结构、查找文件、定位代码时自动使用此 Skill。提供 leniu 云食堂项目的精确导航。
|
|
5
5
|
|
|
6
6
|
触发场景:
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- 寻找参考代码
|
|
13
|
-
|
|
14
|
-
触发词:项目结构、文件在哪、目录、模块、代码位置、找、定位、结构、在哪里、哪个文件、参考、已有
|
|
15
|
-
---
|
|
7
|
+
- 询问某个功能/文件在哪里
|
|
8
|
+
- 新建模块时需要确认目录位置
|
|
9
|
+
- 查找参考代码(Controller/Service/Mapper/Entity 示例)
|
|
10
|
+
- 了解项目整体结构和模块划分
|
|
11
|
+
- 查找技能、命令、Hook 的位置
|
|
16
12
|
|
|
17
|
-
|
|
13
|
+
触发词:项目结构、文件在哪、代码位置、目录结构、模块在哪、参考代码、怎么找、哪个文件、路径、在哪里
|
|
14
|
+
---
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
# leniu 项目导航指南
|
|
20
17
|
|
|
21
|
-
##
|
|
18
|
+
## 工程化配置项目
|
|
22
19
|
|
|
23
20
|
```
|
|
24
|
-
|
|
25
|
-
├──
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
│
|
|
29
|
-
│
|
|
30
|
-
├──
|
|
31
|
-
│
|
|
32
|
-
|
|
33
|
-
│ ├── ruoyi-common-mybatis/ # MyBatis 扩展(BaseMapperPlus, TableDataInfo)
|
|
34
|
-
│ ├── ruoyi-common-tenant/ # 多租户(TenantEntity)
|
|
35
|
-
│ ├── ruoyi-common-redis/ # Redis 缓存
|
|
36
|
-
│ ├── ruoyi-common-satoken/ # 权限认证
|
|
37
|
-
│ ├── ruoyi-common-excel/ # Excel 导入导出
|
|
38
|
-
│ ├── ruoyi-common-oss/ # 对象存储
|
|
39
|
-
│ ├── ruoyi-common-doc/ # 接口文档
|
|
40
|
-
│ ├── ruoyi-common-encrypt/ # 数据加密
|
|
41
|
-
│ ├── ruoyi-common-idempotent/ # 幂等性
|
|
42
|
-
│ ├── ruoyi-common-job/ # 定时任务
|
|
43
|
-
│ ├── ruoyi-common-json/ # JSON 处理
|
|
44
|
-
│ ├── ruoyi-common-log/ # 日志记录
|
|
45
|
-
│ ├── ruoyi-common-mail/ # 邮件发送
|
|
46
|
-
│ ├── ruoyi-common-ratelimiter/ # 限流
|
|
47
|
-
│ ├── ruoyi-common-security/ # 安全
|
|
48
|
-
│ ├── ruoyi-common-sensitive/ # 敏感数据
|
|
49
|
-
│ ├── ruoyi-common-sms/ # 短信
|
|
50
|
-
│ ├── ruoyi-common-social/ # 社交登录
|
|
51
|
-
│ ├── ruoyi-common-sse/ # SSE 推送
|
|
52
|
-
│ ├── ruoyi-common-translation/ # 翻译
|
|
53
|
-
│ ├── ruoyi-common-web/ # Web 通用
|
|
54
|
-
│ └── ruoyi-common-websocket/ # WebSocket
|
|
55
|
-
│
|
|
56
|
-
├── ruoyi-extend/ # 扩展功能模块
|
|
57
|
-
│
|
|
58
|
-
├── ruoyi-modules/ # 业务功能模块
|
|
59
|
-
│ ├── ruoyi-system/ # 系统管理模块(用户、角色、菜单等)
|
|
60
|
-
│ ├── ruoyi-demo/ # 演示功能模块
|
|
61
|
-
│ ├── ruoyi-job/ # 定时任务模块
|
|
62
|
-
│ ├── ruoyi-generator/ # 代码生成器
|
|
63
|
-
│ └── ruoyi-workflow/ # 工作流模块
|
|
64
|
-
│
|
|
65
|
-
├── script/sql/ # 数据库脚本
|
|
66
|
-
│ ├── ry_vue_5.X.sql # 系统表(用户、角色、菜单等)
|
|
67
|
-
│ ├── ry_job.sql # 定时任务表
|
|
68
|
-
│ └── ry_workflow.sql # 工作流表
|
|
69
|
-
│
|
|
70
|
-
├── docs/ # 项目文档
|
|
71
|
-
├── .claude/ # Claude AI 配置目录
|
|
72
|
-
│ └── skills/ # 技能库
|
|
73
|
-
│
|
|
74
|
-
└── pom.xml # Maven 项目配置
|
|
21
|
+
ai-engineering-init/ # 当前工作目录(本仓库根目录)
|
|
22
|
+
├── CLAUDE.md # 项目规范(核心约束必读)
|
|
23
|
+
├── AGENTS.md # Agent 配置文档
|
|
24
|
+
├── .claude/
|
|
25
|
+
│ ├── skills/ # 73 个技能模块
|
|
26
|
+
│ ├── commands/ # 10 个快速命令(/dev /crud /check 等)
|
|
27
|
+
│ ├── hooks/ # Hooks(skill-forced-eval.js 强制技能评估)
|
|
28
|
+
│ └── docs/ # 开发文档
|
|
29
|
+
└── .codex/skills/ # Codex CLI 技能同步目录
|
|
75
30
|
```
|
|
76
31
|
|
|
77
32
|
---
|
|
78
33
|
|
|
79
|
-
##
|
|
34
|
+
## 后端 Java 项目
|
|
80
35
|
|
|
81
|
-
|
|
36
|
+
**根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
|
|
82
37
|
|
|
83
|
-
|
|
84
|
-
|------|------|------|
|
|
85
|
-
| **系统管理** (System) | `ruoyi-modules/ruoyi-system/` | ⭐ 系统核心功能(用户、菜单、权限等) |
|
|
86
|
-
| **演示模块** (Demo) | `ruoyi-modules/ruoyi-demo/` | 功能演示示例 |
|
|
87
|
-
| **定时任务** (Job) | `ruoyi-modules/ruoyi-job/` | 任务调度功能 |
|
|
88
|
-
| **代码生成** (Generator) | `ruoyi-modules/ruoyi-generator/` | 代码生成器 |
|
|
89
|
-
| **工作流** (Workflow) | `ruoyi-modules/ruoyi-workflow/` | 工作流引擎 |
|
|
38
|
+
### 业务模块(25 个 core-* 模块)
|
|
90
39
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
40
|
+
| 模块 | 职责 |
|
|
41
|
+
|------|------|
|
|
42
|
+
| `core-order` | 订单管理 |
|
|
43
|
+
| `core-menu` | 菜品管理 |
|
|
44
|
+
| `core-marketing` | 营销(充值/优惠) |
|
|
45
|
+
| `core-report` | 报表统计 |
|
|
46
|
+
| `core-pay` | 支付 |
|
|
47
|
+
| `core-account` | 账号管理 |
|
|
48
|
+
| `core-merchant` | 商户配置 |
|
|
49
|
+
| `core-customer` | 用户/员工 |
|
|
50
|
+
| `core-device` | 设备管理 |
|
|
51
|
+
| `core-attendance` | 考勤 |
|
|
52
|
+
| `core-kitchen` / `core-backfield` | 后场厨房 |
|
|
53
|
+
| `core-drp` | 供应链 |
|
|
54
|
+
| `core-dorm` | 宿舍管理 |
|
|
55
|
+
| `core-notice` | 通知消息 |
|
|
56
|
+
| `core-open` | 开放接口 |
|
|
57
|
+
| `core-nutrition` | 营养管理 |
|
|
58
|
+
| `core-supermarket` | 超市 |
|
|
59
|
+
| `core-common` / `core-base` | 公共基础 |
|
|
60
|
+
| `core-auth` / `core-starter` | 认证/启动 |
|
|
61
|
+
|
|
62
|
+
### 标准包结构(四层架构)
|
|
94
63
|
|
|
95
64
|
```
|
|
96
|
-
|
|
97
|
-
├── controller/
|
|
98
|
-
│
|
|
99
|
-
│
|
|
100
|
-
├──
|
|
101
|
-
│
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
├── mapper/
|
|
105
|
-
|
|
106
|
-
├──
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
│ └── SysXxxVo.java # 视图对象
|
|
112
|
-
├── listener/ # 事件监听器
|
|
113
|
-
└── runner/ # 启动运行器
|
|
65
|
+
net.xnzn.core.{module}/
|
|
66
|
+
├── controller/
|
|
67
|
+
│ ├── web/ # Web 管理端(/api/v2/web/{module})
|
|
68
|
+
│ ├── mobile/ # 移动端(/api/v2/mobile/{module})
|
|
69
|
+
│ ├── android/ # 设备端(/api/v2/android/{module})
|
|
70
|
+
│ └── open/ # 开放接口(/api/v2/open/{module})
|
|
71
|
+
├── business/impl/ # Business 层(跨 Service 编排)
|
|
72
|
+
├── service/impl/ # Service 层(单表 CRUD、事务)
|
|
73
|
+
├── mapper/ # Mapper + XML(同目录!非 resources/mapper/)
|
|
74
|
+
├── model/ # Entity
|
|
75
|
+
├── vo/ # 响应对象
|
|
76
|
+
├── dto/ # 请求参数(含 Param)
|
|
77
|
+
├── constants/ # 枚举、常量
|
|
78
|
+
├── mq/ # 消息队列
|
|
79
|
+
└── task/ # 定时任务
|
|
114
80
|
```
|
|
115
81
|
|
|
116
|
-
|
|
117
|
-
- Service 实现类**不继承任何基类**,直接注入 Mapper
|
|
118
|
-
- `buildQueryWrapper()` 方法在 **Service 实现类**中
|
|
119
|
-
- BO 使用 `@AutoMapper`(单数)注解;多目标映射时可用 `@AutoMappers`(复数)
|
|
120
|
-
|
|
121
|
-
### 核心工具类位置
|
|
122
|
-
|
|
123
|
-
| 工具类 | 位置 | 说明 |
|
|
124
|
-
|--------|------|------|
|
|
125
|
-
| `MapstructUtils` | `ruoyi-common-core` | 对象转换(必须使用) |
|
|
126
|
-
| `StringUtils` | `ruoyi-common-core` | 字符串工具 |
|
|
127
|
-
| `DateUtils` | `ruoyi-common-core` | 日期工具 |
|
|
128
|
-
| `ServiceException` | `ruoyi-common-core` | 业务异常 |
|
|
129
|
-
| `TenantEntity` | `ruoyi-common-tenant` | 租户实体基类 |
|
|
130
|
-
| `BaseMapperPlus` | `ruoyi-common-mybatis` | Mapper 基类接口 |
|
|
131
|
-
| `PageQuery` | `ruoyi-common-mybatis` | 分页查询参数 |
|
|
132
|
-
| `TableDataInfo` | `ruoyi-common-mybatis` | 分页结果 |
|
|
133
|
-
| `RedisUtils` | `ruoyi-common-redis` | Redis 缓存工具 |
|
|
134
|
-
| `LoginHelper` | `ruoyi-common-satoken` | 登录用户信息 |
|
|
82
|
+
### 参考代码位置
|
|
135
83
|
|
|
136
|
-
|
|
84
|
+
| 需要参考 | 路径 |
|
|
85
|
+
|---------|------|
|
|
86
|
+
| Controller 写法 | `core-order/.../order/web/controller/OrderInfoWebController.java` |
|
|
87
|
+
| Business 层写法 | `core-order/.../order/web/business/impl/OrderWebBusiness.java` |
|
|
88
|
+
| Service 写法 | `core-order/.../order/common/service/impl/OrderInfoService.java` |
|
|
89
|
+
| Entity 写法 | `core-order/.../order/common/model/OrderInfo.java` |
|
|
90
|
+
| 枚举写法 | `core-order/.../order/common/constants/OrderStateEnum.java` |
|
|
91
|
+
| 配置文件 | `core-base/src/main/resources/bootstrap.yml` |
|
|
137
92
|
|
|
138
|
-
|
|
93
|
+
---
|
|
139
94
|
|
|
140
|
-
|
|
141
|
-
|------|------|------|
|
|
142
|
-
| 后端主配置 | `ruoyi-admin/src/main/resources/application.yml` | 主配置文件 |
|
|
143
|
-
| 后端开发配置 | `ruoyi-admin/src/main/resources/application-dev.yml` | 开发环境配置(数据库连接) |
|
|
144
|
-
| 后端生产配置 | `ruoyi-admin/src/main/resources/application-prod.yml` | 生产环境配置 |
|
|
145
|
-
| 日志配置 | `ruoyi-admin/src/main/resources/logback-plus.xml` | 日志配置 |
|
|
95
|
+
## 前端项目
|
|
146
96
|
|
|
147
|
-
|
|
97
|
+
**根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
|
|
148
98
|
|
|
149
|
-
|
|
99
|
+
### src/ 核心目录
|
|
150
100
|
|
|
151
|
-
|
|
|
101
|
+
| 目录 | 说明 | 规模 |
|
|
152
102
|
|------|------|------|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
|
103
|
+
| `api/` | 接口定义 | 63 个文件 |
|
|
104
|
+
| `leniuview/` | 业务模块页面 | 33 个模块 |
|
|
105
|
+
| `leniu-components/` | 业务组件库 | 12 个组件包 |
|
|
106
|
+
| `components/` | 通用组件 | ~87 个 |
|
|
107
|
+
| `store/` | Vuex 状态管理 | 30+ 个模块 |
|
|
108
|
+
| `utils/` | 工具函数 | 37 个文件 |
|
|
109
|
+
|
|
110
|
+
### 常用前端文件
|
|
111
|
+
|
|
112
|
+
| 需要查找 | 路径 |
|
|
113
|
+
|---------|------|
|
|
114
|
+
| 主入口 | `src/main.js` |
|
|
115
|
+
| 权限路由守卫 | `src/permission.js` |
|
|
116
|
+
| 请求封装 | `src/utils/request.js` |
|
|
117
|
+
| Token/租户工具 | `src/utils/auth.js` |
|
|
118
|
+
| 全局工具 | `src/utils/index.js` |
|
|
119
|
+
| Vuex 根配置 | `src/store/index.js` |
|
|
120
|
+
| 构建配置 | `vue.config.js` |
|
|
121
|
+
|
|
122
|
+
### 前端业务模块(leniuview 33 个)
|
|
159
123
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
124
|
+
```
|
|
125
|
+
accountCenter、canteenBackcourt、cost、dashboard、dataScreen、
|
|
126
|
+
deviceMange、dormitory、marketing、menudish、orderCenter、
|
|
127
|
+
purchase、reportCenter、stock、supplyChain、attendance、
|
|
128
|
+
campus、approvalManage、noticeV2、personalV2 ...
|
|
129
|
+
```
|
|
163
130
|
|
|
164
|
-
|
|
131
|
+
---
|
|
165
132
|
|
|
166
|
-
|
|
167
|
-
|------|------|
|
|
168
|
-
| 参考后端代码 | `ruoyi-modules/ruoyi-system/` 的系统模块 |
|
|
169
|
-
| 看 Entity 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java` |
|
|
170
|
-
| 看 Service 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java` |
|
|
171
|
-
| 看 Controller 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java` |
|
|
172
|
-
| 看 Mapper 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java` |
|
|
173
|
-
| 看 BO/VO 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/` |
|
|
174
|
-
| 数据库表结构 | `script/sql/ry_vue_5.X.sql` |
|
|
175
|
-
| 工具类 | `ruoyi-common/ruoyi-common-core/` |
|
|
176
|
-
| MyBatis 扩展 | `ruoyi-common/ruoyi-common-mybatis/` |
|
|
177
|
-
| Redis 工具 | `ruoyi-common/ruoyi-common-redis/` |
|
|
178
|
-
| 权限认证 | `ruoyi-common/ruoyi-common-satoken/` |
|
|
179
|
-
| **前端项目根目录** | `/Users/xujiajun/Developer/frontProj/web/` |
|
|
180
|
-
| **前端 src 目录** | `/Users/xujiajun/Developer/frontProj/web/src/` |
|
|
181
|
-
| 前端主入口 | `/Users/xujiajun/Developer/frontProj/web/src/main.js` |
|
|
182
|
-
| 前端路由守卫 | `/Users/xujiajun/Developer/frontProj/web/src/permission.js` |
|
|
183
|
-
| 前端路由配置 | `/Users/xujiajun/Developer/frontProj/web/src/router/` |
|
|
184
|
-
| 前端 API 接口定义 | `/Users/xujiajun/Developer/frontProj/web/src/api/`(65个文件) |
|
|
185
|
-
| 前端视图页面 | `/Users/xujiajun/Developer/frontProj/web/src/leniuview/`(34个业务模块) |
|
|
186
|
-
| 前端业务组件 | `/Users/xujiajun/Developer/frontProj/web/src/leniu-components/` |
|
|
187
|
-
| 前端公共组件 | `/Users/xujiajun/Developer/frontProj/web/src/components/`(~87个) |
|
|
188
|
-
| 前端 Vuex Store | `/Users/xujiajun/Developer/frontProj/web/src/store/`(28个模块) |
|
|
189
|
-
| 前端请求封装 | `/Users/xujiajun/Developer/frontProj/web/src/utils/request.js` |
|
|
190
|
-
| 前端 Token/租户工具 | `/Users/xujiajun/Developer/frontProj/web/src/utils/auth.js` |
|
|
191
|
-
| 前端全局工具函数 | `/Users/xujiajun/Developer/frontProj/web/src/utils/index.js` |
|
|
192
|
-
| 前端 Mixin 文件 | `/Users/xujiajun/Developer/frontProj/web/src/mixins/` |
|
|
193
|
-
| 前端国际化配置 | `/Users/xujiajun/Developer/frontProj/web/src/lang/` |
|
|
194
|
-
| 前端自定义指令 | `/Users/xujiajun/Developer/frontProj/web/src/directive/` |
|
|
195
|
-
| 前端全局样式 | `/Users/xujiajun/Developer/frontProj/web/src/styles/` |
|
|
196
|
-
| 前端构建配置 | `/Users/xujiajun/Developer/frontProj/web/vue.config.js` |
|
|
197
|
-
| 前端依赖配置 | `/Users/xujiajun/Developer/frontProj/web/package.json` |
|
|
133
|
+
## 技能系统导航
|
|
198
134
|
|
|
199
|
-
|
|
135
|
+
**技能路径**:`.claude/skills/{技能名}/SKILL.md`
|
|
200
136
|
|
|
201
|
-
|
|
137
|
+
### 按开发场景选择技能
|
|
202
138
|
|
|
203
|
-
|
|
|
204
|
-
|
|
205
|
-
|
|
|
206
|
-
|
|
|
207
|
-
|
|
|
208
|
-
|
|
|
139
|
+
| 场景 | 技能 |
|
|
140
|
+
|------|------|
|
|
141
|
+
| 新建 CRUD 模块 | `leniu-crud-development` |
|
|
142
|
+
| API 接口设计 | `leniu-api-development` |
|
|
143
|
+
| 建表/SQL | `leniu-database-ops` |
|
|
144
|
+
| Entity/VO/DTO | `leniu-java-entity` |
|
|
145
|
+
| MyBatis/Mapper | `leniu-java-mybatis` |
|
|
146
|
+
| 异常处理 | `leniu-error-handler` |
|
|
147
|
+
| 工具类使用 | `leniu-utils-toolkit` |
|
|
148
|
+
| 注解使用 | `leniu-backend-annotations` |
|
|
149
|
+
| 代码规范 | `leniu-code-patterns` |
|
|
150
|
+
| 数据权限/双库 | `leniu-data-permission` |
|
|
151
|
+
| 定制报表 | `leniu-report-customization` |
|
|
152
|
+
| 标准报表 | `leniu-report-standard-customization` |
|
|
153
|
+
| 金额处理 | `leniu-java-amount-handling` |
|
|
154
|
+
| 并发/异步 | `leniu-java-concurrent` |
|
|
155
|
+
| 导出功能 | `leniu-java-export` |
|
|
156
|
+
| 定时任务 | `leniu-java-task` |
|
|
157
|
+
| 消息队列 | `leniu-java-mq` |
|
|
158
|
+
| Redis 缓存 | `leniu-redis-cache` |
|
|
159
|
+
| 合计行查询 | `leniu-java-total-line` |
|
|
160
|
+
| 报表查询入参 | `leniu-java-report-query-param` |
|
|
161
|
+
| 营销计费规则 | `leniu-marketing-price-rule-customizer` |
|
|
162
|
+
| 营销充值规则 | `leniu-marketing-recharge-rule-customizer` |
|
|
163
|
+
| 餐次处理 | `leniu-mealtime` |
|
|
164
|
+
| 定制开发位置 | `leniu-customization-location` |
|
|
165
|
+
| Bug 排查 | `bug-detective`(数据问题自动联动 `mysql-debug`) |
|
|
166
|
+
| 数据库查询验证 | `mysql-debug` |
|
|
167
|
+
| Codex 代码审查 | `codex-code-review` |
|
|
168
|
+
| 前端组件/权限 | `ui-pc` |
|
|
169
|
+
| 前端 Vuex | `store-pc` |
|
|
170
|
+
| 方案设计 | `leniu-brainstorm` |
|
|
171
|
+
| 架构设计 | `leniu-architecture-design` |
|
|
172
|
+
| 安全认证 | `leniu-security-guard` |
|
|
173
|
+
|
|
174
|
+
### 快速命令
|
|
175
|
+
|
|
176
|
+
| 命令 | 用途 |
|
|
177
|
+
|------|------|
|
|
178
|
+
| `/dev` | 开发新功能 |
|
|
179
|
+
| `/crud` | 快速生成 CRUD |
|
|
180
|
+
| `/check` | 代码规范检查 |
|
|
181
|
+
| `/start` | 项目快速了解 |
|
|
182
|
+
| `/progress` | 查看项目进度 |
|
|
183
|
+
| `/next` | 下一步建议 |
|
|
184
|
+
| `/add-todo` | 添加待办事项 |
|
|
209
185
|
|
|
210
186
|
---
|
|
211
187
|
|
|
212
|
-
##
|
|
188
|
+
## 常用搜索模式
|
|
213
189
|
|
|
214
190
|
```bash
|
|
215
|
-
#
|
|
216
|
-
Glob
|
|
217
|
-
|
|
218
|
-
# 查找包含特定内容的文件
|
|
219
|
-
Grep "[关键词]" ruoyi-modules/ --type java
|
|
220
|
-
|
|
221
|
-
# 查找配置文件
|
|
222
|
-
Glob ruoyi-admin/src/main/resources/application*.yml
|
|
191
|
+
# 查找某模块的 Controller
|
|
192
|
+
Glob core-order/**/*Controller*.java
|
|
223
193
|
|
|
224
194
|
# 查找 Service 实现类
|
|
225
|
-
Glob
|
|
226
|
-
|
|
227
|
-
# 查找 Mapper 接口
|
|
228
|
-
Glob ruoyi-modules/**/*Mapper.java
|
|
229
|
-
|
|
230
|
-
# 查找 Entity 类
|
|
231
|
-
Glob ruoyi-modules/**/domain/*.java
|
|
232
|
-
|
|
233
|
-
# 查找工具类
|
|
234
|
-
Glob ruoyi-common/**/*Utils.java
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## 三层架构代码示例
|
|
240
|
-
|
|
241
|
-
### Service 实现类结构(重点参考)
|
|
242
|
-
|
|
243
|
-
```java
|
|
244
|
-
@Service
|
|
245
|
-
public class TestDemoServiceImpl implements ITestDemoService {
|
|
246
|
-
|
|
247
|
-
private final TestDemoMapper baseMapper; // 直接注入 Mapper,无 DAO 层
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* 构建查询条件(在 Service 层)
|
|
251
|
-
*/
|
|
252
|
-
private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
|
|
253
|
-
Map<String, Object> params = bo.getParams();
|
|
254
|
-
LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
|
|
255
|
-
lqw.eq(bo.getDeptId() != null, TestDemo::getDeptId, bo.getDeptId());
|
|
256
|
-
lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey());
|
|
257
|
-
return lqw;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
@Override
|
|
261
|
-
public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery) {
|
|
262
|
-
LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
|
|
263
|
-
Page<TestDemoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
264
|
-
return TableDataInfo.build(result);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
### BO 类结构
|
|
270
|
-
|
|
271
|
-
```java
|
|
272
|
-
@Data
|
|
273
|
-
@AutoMapper(target = TestDemo.class, reverseConvertGenerate = false) // ✅ 单数
|
|
274
|
-
public class TestDemoBo extends BaseEntity {
|
|
275
|
-
private Long id;
|
|
276
|
-
private String testKey;
|
|
277
|
-
// ...
|
|
278
|
-
}
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
### Controller 结构
|
|
282
|
-
|
|
283
|
-
```java
|
|
284
|
-
@RestController
|
|
285
|
-
@RequestMapping("/demo/demo")
|
|
286
|
-
public class TestDemoController extends BaseController {
|
|
287
|
-
|
|
288
|
-
private final ITestDemoService testDemoService;
|
|
195
|
+
Glob core-order/**/impl/*Service*.java
|
|
289
196
|
|
|
290
|
-
|
|
291
|
-
|
|
197
|
+
# 查找 Mapper XML
|
|
198
|
+
Glob core-order/**/*Mapper.xml
|
|
292
199
|
|
|
293
|
-
|
|
294
|
-
|
|
200
|
+
# 查找 Entity
|
|
201
|
+
Glob core-order/**/model/*.java
|
|
295
202
|
|
|
296
|
-
|
|
297
|
-
|
|
203
|
+
# 查找某接口路由
|
|
204
|
+
Grep "/api/v2/web/order" --type java
|
|
298
205
|
|
|
299
|
-
|
|
300
|
-
|
|
206
|
+
# 查找前端某页面
|
|
207
|
+
Glob src/leniuview/**/index.vue
|
|
301
208
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
209
|
+
# 查找前端接口定义
|
|
210
|
+
Glob src/api/*.js
|
|
305
211
|
```
|
|
@@ -10,6 +10,8 @@ description: |
|
|
|
10
10
|
- 日志文件分析(./logs/sys-console.log)
|
|
11
11
|
- 前端页面不显示、API 调用异常
|
|
12
12
|
|
|
13
|
+
联动技能:数据问题自动联动 mysql-debug 查库验证
|
|
14
|
+
|
|
13
15
|
触发词:Bug、报错、异常、不工作、500错误、NullPointerException、SQLException、数据查不到、日志分析、排查、调试、debug、错误排查、精度丢失
|
|
14
16
|
---
|
|
15
17
|
|
|
@@ -204,31 +206,28 @@ XxxVO vo = BeanUtil.copyProperties(entity, XxxVO.class); // 源对象为 null
|
|
|
204
206
|
|
|
205
207
|
---
|
|
206
208
|
|
|
207
|
-
##
|
|
209
|
+
## 数据库排查(委托 mysql-debug)
|
|
208
210
|
|
|
209
|
-
|
|
211
|
+
当诊断结果指向数据问题时,**必须联动 `mysql-debug` 技能**进行数据库查询验证:
|
|
210
212
|
|
|
211
213
|
```
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
214
|
+
诊断决策树判定"数据相关问题"
|
|
215
|
+
↓
|
|
216
|
+
自动激活 mysql-debug 技能
|
|
217
|
+
↓
|
|
218
|
+
mysql-debug 执行:配置检查 → 日志提取数据库名 → 执行只读 SQL → 返回结果
|
|
219
|
+
↓
|
|
220
|
+
bug-detective 结合查询结果给出修复方案
|
|
215
221
|
```
|
|
216
222
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-- 最近数据
|
|
224
|
-
SELECT * FROM 表名 ORDER BY crtime DESC LIMIT 10;
|
|
223
|
+
**触发 mysql-debug 的信号**:
|
|
224
|
+
- 查询返回空/数据不存在
|
|
225
|
+
- 数据数量、金额、状态不对
|
|
226
|
+
- SQL 异常(DataIntegrityViolation、DuplicateKey)
|
|
227
|
+
- 关联数据不一致
|
|
228
|
+
- 特定租户才出现的问题
|
|
225
229
|
|
|
226
|
-
|
|
227
|
-
DESC 表名;
|
|
228
|
-
|
|
229
|
-
-- 执行计划
|
|
230
|
-
EXPLAIN SELECT ...;
|
|
231
|
-
```
|
|
230
|
+
> 如果 mysql-debug 配置未就绪(密码未设置/mysql CLI 未安装),仍可继续纯代码分析路径。
|
|
232
231
|
|
|
233
232
|
---
|
|
234
233
|
|
|
@@ -250,6 +249,7 @@ EXPLAIN SELECT ...;
|
|
|
250
249
|
|
|
251
250
|
| 排查发现 | 推荐 Skill |
|
|
252
251
|
|---------|-----------|
|
|
252
|
+
| 数据问题(查不到/不一致/状态异常) | `mysql-debug`(自动联动) |
|
|
253
253
|
| SQL 性能慢 | `performance-doctor` |
|
|
254
254
|
| 权限配置问题 | `security-guard` |
|
|
255
255
|
| BO/VO 映射错误 | `leniu-crud-development` |
|
|
@@ -1,305 +1,211 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project-navigator
|
|
3
3
|
description: |
|
|
4
|
-
当需要了解项目结构、查找文件、定位代码时自动使用此 Skill
|
|
4
|
+
当需要了解项目结构、查找文件、定位代码时自动使用此 Skill。提供 leniu 云食堂项目的精确导航。
|
|
5
5
|
|
|
6
6
|
触发场景:
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- 寻找参考代码
|
|
13
|
-
|
|
14
|
-
触发词:项目结构、文件在哪、目录、模块、代码位置、找、定位、结构、在哪里、哪个文件、参考、已有
|
|
15
|
-
---
|
|
7
|
+
- 询问某个功能/文件在哪里
|
|
8
|
+
- 新建模块时需要确认目录位置
|
|
9
|
+
- 查找参考代码(Controller/Service/Mapper/Entity 示例)
|
|
10
|
+
- 了解项目整体结构和模块划分
|
|
11
|
+
- 查找技能、命令、Hook 的位置
|
|
16
12
|
|
|
17
|
-
|
|
13
|
+
触发词:项目结构、文件在哪、代码位置、目录结构、模块在哪、参考代码、怎么找、哪个文件、路径、在哪里
|
|
14
|
+
---
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
# leniu 项目导航指南
|
|
20
17
|
|
|
21
|
-
##
|
|
18
|
+
## 工程化配置项目
|
|
22
19
|
|
|
23
20
|
```
|
|
24
|
-
|
|
25
|
-
├──
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
│
|
|
29
|
-
│
|
|
30
|
-
├──
|
|
31
|
-
│
|
|
32
|
-
|
|
33
|
-
│ ├── ruoyi-common-mybatis/ # MyBatis 扩展(BaseMapperPlus, TableDataInfo)
|
|
34
|
-
│ ├── ruoyi-common-tenant/ # 多租户(TenantEntity)
|
|
35
|
-
│ ├── ruoyi-common-redis/ # Redis 缓存
|
|
36
|
-
│ ├── ruoyi-common-satoken/ # 权限认证
|
|
37
|
-
│ ├── ruoyi-common-excel/ # Excel 导入导出
|
|
38
|
-
│ ├── ruoyi-common-oss/ # 对象存储
|
|
39
|
-
│ ├── ruoyi-common-doc/ # 接口文档
|
|
40
|
-
│ ├── ruoyi-common-encrypt/ # 数据加密
|
|
41
|
-
│ ├── ruoyi-common-idempotent/ # 幂等性
|
|
42
|
-
│ ├── ruoyi-common-job/ # 定时任务
|
|
43
|
-
│ ├── ruoyi-common-json/ # JSON 处理
|
|
44
|
-
│ ├── ruoyi-common-log/ # 日志记录
|
|
45
|
-
│ ├── ruoyi-common-mail/ # 邮件发送
|
|
46
|
-
│ ├── ruoyi-common-ratelimiter/ # 限流
|
|
47
|
-
│ ├── ruoyi-common-security/ # 安全
|
|
48
|
-
│ ├── ruoyi-common-sensitive/ # 敏感数据
|
|
49
|
-
│ ├── ruoyi-common-sms/ # 短信
|
|
50
|
-
│ ├── ruoyi-common-social/ # 社交登录
|
|
51
|
-
│ ├── ruoyi-common-sse/ # SSE 推送
|
|
52
|
-
│ ├── ruoyi-common-translation/ # 翻译
|
|
53
|
-
│ ├── ruoyi-common-web/ # Web 通用
|
|
54
|
-
│ └── ruoyi-common-websocket/ # WebSocket
|
|
55
|
-
│
|
|
56
|
-
├── ruoyi-extend/ # 扩展功能模块
|
|
57
|
-
│
|
|
58
|
-
├── ruoyi-modules/ # 业务功能模块
|
|
59
|
-
│ ├── ruoyi-system/ # 系统管理模块(用户、角色、菜单等)
|
|
60
|
-
│ ├── ruoyi-demo/ # 演示功能模块
|
|
61
|
-
│ ├── ruoyi-job/ # 定时任务模块
|
|
62
|
-
│ ├── ruoyi-generator/ # 代码生成器
|
|
63
|
-
│ └── ruoyi-workflow/ # 工作流模块
|
|
64
|
-
│
|
|
65
|
-
├── script/sql/ # 数据库脚本
|
|
66
|
-
│ ├── ry_vue_5.X.sql # 系统表(用户、角色、菜单等)
|
|
67
|
-
│ ├── ry_job.sql # 定时任务表
|
|
68
|
-
│ └── ry_workflow.sql # 工作流表
|
|
69
|
-
│
|
|
70
|
-
├── docs/ # 项目文档
|
|
71
|
-
├── .claude/ # Claude AI 配置目录
|
|
72
|
-
│ └── skills/ # 技能库
|
|
73
|
-
│
|
|
74
|
-
└── pom.xml # Maven 项目配置
|
|
21
|
+
ai-engineering-init/ # 当前工作目录(本仓库根目录)
|
|
22
|
+
├── CLAUDE.md # 项目规范(核心约束必读)
|
|
23
|
+
├── AGENTS.md # Agent 配置文档
|
|
24
|
+
├── .claude/
|
|
25
|
+
│ ├── skills/ # 73 个技能模块
|
|
26
|
+
│ ├── commands/ # 10 个快速命令(/dev /crud /check 等)
|
|
27
|
+
│ ├── hooks/ # Hooks(skill-forced-eval.js 强制技能评估)
|
|
28
|
+
│ └── docs/ # 开发文档
|
|
29
|
+
└── .codex/skills/ # Codex CLI 技能同步目录
|
|
75
30
|
```
|
|
76
31
|
|
|
77
32
|
---
|
|
78
33
|
|
|
79
|
-
##
|
|
34
|
+
## 后端 Java 项目
|
|
80
35
|
|
|
81
|
-
|
|
36
|
+
**根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
|
|
82
37
|
|
|
83
|
-
|
|
84
|
-
|------|------|------|
|
|
85
|
-
| **系统管理** (System) | `ruoyi-modules/ruoyi-system/` | ⭐ 系统核心功能(用户、菜单、权限等) |
|
|
86
|
-
| **演示模块** (Demo) | `ruoyi-modules/ruoyi-demo/` | 功能演示示例 |
|
|
87
|
-
| **定时任务** (Job) | `ruoyi-modules/ruoyi-job/` | 任务调度功能 |
|
|
88
|
-
| **代码生成** (Generator) | `ruoyi-modules/ruoyi-generator/` | 代码生成器 |
|
|
89
|
-
| **工作流** (Workflow) | `ruoyi-modules/ruoyi-workflow/` | 工作流引擎 |
|
|
38
|
+
### 业务模块(25 个 core-* 模块)
|
|
90
39
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
40
|
+
| 模块 | 职责 |
|
|
41
|
+
|------|------|
|
|
42
|
+
| `core-order` | 订单管理 |
|
|
43
|
+
| `core-menu` | 菜品管理 |
|
|
44
|
+
| `core-marketing` | 营销(充值/优惠) |
|
|
45
|
+
| `core-report` | 报表统计 |
|
|
46
|
+
| `core-pay` | 支付 |
|
|
47
|
+
| `core-account` | 账号管理 |
|
|
48
|
+
| `core-merchant` | 商户配置 |
|
|
49
|
+
| `core-customer` | 用户/员工 |
|
|
50
|
+
| `core-device` | 设备管理 |
|
|
51
|
+
| `core-attendance` | 考勤 |
|
|
52
|
+
| `core-kitchen` / `core-backfield` | 后场厨房 |
|
|
53
|
+
| `core-drp` | 供应链 |
|
|
54
|
+
| `core-dorm` | 宿舍管理 |
|
|
55
|
+
| `core-notice` | 通知消息 |
|
|
56
|
+
| `core-open` | 开放接口 |
|
|
57
|
+
| `core-nutrition` | 营养管理 |
|
|
58
|
+
| `core-supermarket` | 超市 |
|
|
59
|
+
| `core-common` / `core-base` | 公共基础 |
|
|
60
|
+
| `core-auth` / `core-starter` | 认证/启动 |
|
|
61
|
+
|
|
62
|
+
### 标准包结构(四层架构)
|
|
94
63
|
|
|
95
64
|
```
|
|
96
|
-
|
|
97
|
-
├── controller/
|
|
98
|
-
│
|
|
99
|
-
│
|
|
100
|
-
├──
|
|
101
|
-
│
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
├── mapper/
|
|
105
|
-
|
|
106
|
-
├──
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
│ └── SysXxxVo.java # 视图对象
|
|
112
|
-
├── listener/ # 事件监听器
|
|
113
|
-
└── runner/ # 启动运行器
|
|
65
|
+
net.xnzn.core.{module}/
|
|
66
|
+
├── controller/
|
|
67
|
+
│ ├── web/ # Web 管理端(/api/v2/web/{module})
|
|
68
|
+
│ ├── mobile/ # 移动端(/api/v2/mobile/{module})
|
|
69
|
+
│ ├── android/ # 设备端(/api/v2/android/{module})
|
|
70
|
+
│ └── open/ # 开放接口(/api/v2/open/{module})
|
|
71
|
+
├── business/impl/ # Business 层(跨 Service 编排)
|
|
72
|
+
├── service/impl/ # Service 层(单表 CRUD、事务)
|
|
73
|
+
├── mapper/ # Mapper + XML(同目录!非 resources/mapper/)
|
|
74
|
+
├── model/ # Entity
|
|
75
|
+
├── vo/ # 响应对象
|
|
76
|
+
├── dto/ # 请求参数(含 Param)
|
|
77
|
+
├── constants/ # 枚举、常量
|
|
78
|
+
├── mq/ # 消息队列
|
|
79
|
+
└── task/ # 定时任务
|
|
114
80
|
```
|
|
115
81
|
|
|
116
|
-
|
|
117
|
-
- Service 实现类**不继承任何基类**,直接注入 Mapper
|
|
118
|
-
- `buildQueryWrapper()` 方法在 **Service 实现类**中
|
|
119
|
-
- BO 使用 `@AutoMapper`(单数)注解;多目标映射时可用 `@AutoMappers`(复数)
|
|
120
|
-
|
|
121
|
-
### 核心工具类位置
|
|
122
|
-
|
|
123
|
-
| 工具类 | 位置 | 说明 |
|
|
124
|
-
|--------|------|------|
|
|
125
|
-
| `MapstructUtils` | `ruoyi-common-core` | 对象转换(必须使用) |
|
|
126
|
-
| `StringUtils` | `ruoyi-common-core` | 字符串工具 |
|
|
127
|
-
| `DateUtils` | `ruoyi-common-core` | 日期工具 |
|
|
128
|
-
| `ServiceException` | `ruoyi-common-core` | 业务异常 |
|
|
129
|
-
| `TenantEntity` | `ruoyi-common-tenant` | 租户实体基类 |
|
|
130
|
-
| `BaseMapperPlus` | `ruoyi-common-mybatis` | Mapper 基类接口 |
|
|
131
|
-
| `PageQuery` | `ruoyi-common-mybatis` | 分页查询参数 |
|
|
132
|
-
| `TableDataInfo` | `ruoyi-common-mybatis` | 分页结果 |
|
|
133
|
-
| `RedisUtils` | `ruoyi-common-redis` | Redis 缓存工具 |
|
|
134
|
-
| `LoginHelper` | `ruoyi-common-satoken` | 登录用户信息 |
|
|
82
|
+
### 参考代码位置
|
|
135
83
|
|
|
136
|
-
|
|
84
|
+
| 需要参考 | 路径 |
|
|
85
|
+
|---------|------|
|
|
86
|
+
| Controller 写法 | `core-order/.../order/web/controller/OrderInfoWebController.java` |
|
|
87
|
+
| Business 层写法 | `core-order/.../order/web/business/impl/OrderWebBusiness.java` |
|
|
88
|
+
| Service 写法 | `core-order/.../order/common/service/impl/OrderInfoService.java` |
|
|
89
|
+
| Entity 写法 | `core-order/.../order/common/model/OrderInfo.java` |
|
|
90
|
+
| 枚举写法 | `core-order/.../order/common/constants/OrderStateEnum.java` |
|
|
91
|
+
| 配置文件 | `core-base/src/main/resources/bootstrap.yml` |
|
|
137
92
|
|
|
138
|
-
|
|
93
|
+
---
|
|
139
94
|
|
|
140
|
-
|
|
141
|
-
|------|------|------|
|
|
142
|
-
| 后端主配置 | `ruoyi-admin/src/main/resources/application.yml` | 主配置文件 |
|
|
143
|
-
| 后端开发配置 | `ruoyi-admin/src/main/resources/application-dev.yml` | 开发环境配置(数据库连接) |
|
|
144
|
-
| 后端生产配置 | `ruoyi-admin/src/main/resources/application-prod.yml` | 生产环境配置 |
|
|
145
|
-
| 日志配置 | `ruoyi-admin/src/main/resources/logback-plus.xml` | 日志配置 |
|
|
95
|
+
## 前端项目
|
|
146
96
|
|
|
147
|
-
|
|
97
|
+
**根路径**:由用户在 `CLAUDE.md` 中配置,各安装者路径不同
|
|
148
98
|
|
|
149
|
-
|
|
99
|
+
### src/ 核心目录
|
|
150
100
|
|
|
151
|
-
|
|
|
101
|
+
| 目录 | 说明 | 规模 |
|
|
152
102
|
|------|------|------|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
|
103
|
+
| `api/` | 接口定义 | 63 个文件 |
|
|
104
|
+
| `leniuview/` | 业务模块页面 | 33 个模块 |
|
|
105
|
+
| `leniu-components/` | 业务组件库 | 12 个组件包 |
|
|
106
|
+
| `components/` | 通用组件 | ~87 个 |
|
|
107
|
+
| `store/` | Vuex 状态管理 | 30+ 个模块 |
|
|
108
|
+
| `utils/` | 工具函数 | 37 个文件 |
|
|
109
|
+
|
|
110
|
+
### 常用前端文件
|
|
111
|
+
|
|
112
|
+
| 需要查找 | 路径 |
|
|
113
|
+
|---------|------|
|
|
114
|
+
| 主入口 | `src/main.js` |
|
|
115
|
+
| 权限路由守卫 | `src/permission.js` |
|
|
116
|
+
| 请求封装 | `src/utils/request.js` |
|
|
117
|
+
| Token/租户工具 | `src/utils/auth.js` |
|
|
118
|
+
| 全局工具 | `src/utils/index.js` |
|
|
119
|
+
| Vuex 根配置 | `src/store/index.js` |
|
|
120
|
+
| 构建配置 | `vue.config.js` |
|
|
121
|
+
|
|
122
|
+
### 前端业务模块(leniuview 33 个)
|
|
159
123
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
124
|
+
```
|
|
125
|
+
accountCenter、canteenBackcourt、cost、dashboard、dataScreen、
|
|
126
|
+
deviceMange、dormitory、marketing、menudish、orderCenter、
|
|
127
|
+
purchase、reportCenter、stock、supplyChain、attendance、
|
|
128
|
+
campus、approvalManage、noticeV2、personalV2 ...
|
|
129
|
+
```
|
|
163
130
|
|
|
164
|
-
|
|
131
|
+
---
|
|
165
132
|
|
|
166
|
-
|
|
167
|
-
|------|------|
|
|
168
|
-
| 参考后端代码 | `ruoyi-modules/ruoyi-system/` 的系统模块 |
|
|
169
|
-
| 看 Entity 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java` |
|
|
170
|
-
| 看 Service 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java` |
|
|
171
|
-
| 看 Controller 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java` |
|
|
172
|
-
| 看 Mapper 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java` |
|
|
173
|
-
| 看 BO/VO 怎么写 | `ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/` |
|
|
174
|
-
| 数据库表结构 | `script/sql/ry_vue_5.X.sql` |
|
|
175
|
-
| 工具类 | `ruoyi-common/ruoyi-common-core/` |
|
|
176
|
-
| MyBatis 扩展 | `ruoyi-common/ruoyi-common-mybatis/` |
|
|
177
|
-
| Redis 工具 | `ruoyi-common/ruoyi-common-redis/` |
|
|
178
|
-
| 权限认证 | `ruoyi-common/ruoyi-common-satoken/` |
|
|
179
|
-
| **前端项目根目录** | `/Users/xujiajun/Developer/frontProj/web/` |
|
|
180
|
-
| **前端 src 目录** | `/Users/xujiajun/Developer/frontProj/web/src/` |
|
|
181
|
-
| 前端主入口 | `/Users/xujiajun/Developer/frontProj/web/src/main.js` |
|
|
182
|
-
| 前端路由守卫 | `/Users/xujiajun/Developer/frontProj/web/src/permission.js` |
|
|
183
|
-
| 前端路由配置 | `/Users/xujiajun/Developer/frontProj/web/src/router/` |
|
|
184
|
-
| 前端 API 接口定义 | `/Users/xujiajun/Developer/frontProj/web/src/api/`(65个文件) |
|
|
185
|
-
| 前端视图页面 | `/Users/xujiajun/Developer/frontProj/web/src/leniuview/`(34个业务模块) |
|
|
186
|
-
| 前端业务组件 | `/Users/xujiajun/Developer/frontProj/web/src/leniu-components/` |
|
|
187
|
-
| 前端公共组件 | `/Users/xujiajun/Developer/frontProj/web/src/components/`(~87个) |
|
|
188
|
-
| 前端 Vuex Store | `/Users/xujiajun/Developer/frontProj/web/src/store/`(28个模块) |
|
|
189
|
-
| 前端请求封装 | `/Users/xujiajun/Developer/frontProj/web/src/utils/request.js` |
|
|
190
|
-
| 前端 Token/租户工具 | `/Users/xujiajun/Developer/frontProj/web/src/utils/auth.js` |
|
|
191
|
-
| 前端全局工具函数 | `/Users/xujiajun/Developer/frontProj/web/src/utils/index.js` |
|
|
192
|
-
| 前端 Mixin 文件 | `/Users/xujiajun/Developer/frontProj/web/src/mixins/` |
|
|
193
|
-
| 前端国际化配置 | `/Users/xujiajun/Developer/frontProj/web/src/lang/` |
|
|
194
|
-
| 前端自定义指令 | `/Users/xujiajun/Developer/frontProj/web/src/directive/` |
|
|
195
|
-
| 前端全局样式 | `/Users/xujiajun/Developer/frontProj/web/src/styles/` |
|
|
196
|
-
| 前端构建配置 | `/Users/xujiajun/Developer/frontProj/web/vue.config.js` |
|
|
197
|
-
| 前端依赖配置 | `/Users/xujiajun/Developer/frontProj/web/package.json` |
|
|
133
|
+
## 技能系统导航
|
|
198
134
|
|
|
199
|
-
|
|
135
|
+
**技能路径**:`.claude/skills/{技能名}/SKILL.md`
|
|
200
136
|
|
|
201
|
-
|
|
137
|
+
### 按开发场景选择技能
|
|
202
138
|
|
|
203
|
-
|
|
|
204
|
-
|
|
205
|
-
|
|
|
206
|
-
|
|
|
207
|
-
|
|
|
208
|
-
|
|
|
139
|
+
| 场景 | 技能 |
|
|
140
|
+
|------|------|
|
|
141
|
+
| 新建 CRUD 模块 | `leniu-crud-development` |
|
|
142
|
+
| API 接口设计 | `leniu-api-development` |
|
|
143
|
+
| 建表/SQL | `leniu-database-ops` |
|
|
144
|
+
| Entity/VO/DTO | `leniu-java-entity` |
|
|
145
|
+
| MyBatis/Mapper | `leniu-java-mybatis` |
|
|
146
|
+
| 异常处理 | `leniu-error-handler` |
|
|
147
|
+
| 工具类使用 | `leniu-utils-toolkit` |
|
|
148
|
+
| 注解使用 | `leniu-backend-annotations` |
|
|
149
|
+
| 代码规范 | `leniu-code-patterns` |
|
|
150
|
+
| 数据权限/双库 | `leniu-data-permission` |
|
|
151
|
+
| 定制报表 | `leniu-report-customization` |
|
|
152
|
+
| 标准报表 | `leniu-report-standard-customization` |
|
|
153
|
+
| 金额处理 | `leniu-java-amount-handling` |
|
|
154
|
+
| 并发/异步 | `leniu-java-concurrent` |
|
|
155
|
+
| 导出功能 | `leniu-java-export` |
|
|
156
|
+
| 定时任务 | `leniu-java-task` |
|
|
157
|
+
| 消息队列 | `leniu-java-mq` |
|
|
158
|
+
| Redis 缓存 | `leniu-redis-cache` |
|
|
159
|
+
| 合计行查询 | `leniu-java-total-line` |
|
|
160
|
+
| 报表查询入参 | `leniu-java-report-query-param` |
|
|
161
|
+
| 营销计费规则 | `leniu-marketing-price-rule-customizer` |
|
|
162
|
+
| 营销充值规则 | `leniu-marketing-recharge-rule-customizer` |
|
|
163
|
+
| 餐次处理 | `leniu-mealtime` |
|
|
164
|
+
| 定制开发位置 | `leniu-customization-location` |
|
|
165
|
+
| Bug 排查 | `bug-detective`(数据问题自动联动 `mysql-debug`) |
|
|
166
|
+
| 数据库查询验证 | `mysql-debug` |
|
|
167
|
+
| Codex 代码审查 | `codex-code-review` |
|
|
168
|
+
| 前端组件/权限 | `ui-pc` |
|
|
169
|
+
| 前端 Vuex | `store-pc` |
|
|
170
|
+
| 方案设计 | `leniu-brainstorm` |
|
|
171
|
+
| 架构设计 | `leniu-architecture-design` |
|
|
172
|
+
| 安全认证 | `leniu-security-guard` |
|
|
173
|
+
|
|
174
|
+
### 快速命令
|
|
175
|
+
|
|
176
|
+
| 命令 | 用途 |
|
|
177
|
+
|------|------|
|
|
178
|
+
| `/dev` | 开发新功能 |
|
|
179
|
+
| `/crud` | 快速生成 CRUD |
|
|
180
|
+
| `/check` | 代码规范检查 |
|
|
181
|
+
| `/start` | 项目快速了解 |
|
|
182
|
+
| `/progress` | 查看项目进度 |
|
|
183
|
+
| `/next` | 下一步建议 |
|
|
184
|
+
| `/add-todo` | 添加待办事项 |
|
|
209
185
|
|
|
210
186
|
---
|
|
211
187
|
|
|
212
|
-
##
|
|
188
|
+
## 常用搜索模式
|
|
213
189
|
|
|
214
190
|
```bash
|
|
215
|
-
#
|
|
216
|
-
Glob
|
|
217
|
-
|
|
218
|
-
# 查找包含特定内容的文件
|
|
219
|
-
Grep "[关键词]" ruoyi-modules/ --type java
|
|
220
|
-
|
|
221
|
-
# 查找配置文件
|
|
222
|
-
Glob ruoyi-admin/src/main/resources/application*.yml
|
|
191
|
+
# 查找某模块的 Controller
|
|
192
|
+
Glob core-order/**/*Controller*.java
|
|
223
193
|
|
|
224
194
|
# 查找 Service 实现类
|
|
225
|
-
Glob
|
|
226
|
-
|
|
227
|
-
# 查找 Mapper 接口
|
|
228
|
-
Glob ruoyi-modules/**/*Mapper.java
|
|
229
|
-
|
|
230
|
-
# 查找 Entity 类
|
|
231
|
-
Glob ruoyi-modules/**/domain/*.java
|
|
232
|
-
|
|
233
|
-
# 查找工具类
|
|
234
|
-
Glob ruoyi-common/**/*Utils.java
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
---
|
|
238
|
-
|
|
239
|
-
## 三层架构代码示例
|
|
240
|
-
|
|
241
|
-
### Service 实现类结构(重点参考)
|
|
242
|
-
|
|
243
|
-
```java
|
|
244
|
-
@Service
|
|
245
|
-
public class TestDemoServiceImpl implements ITestDemoService {
|
|
246
|
-
|
|
247
|
-
private final TestDemoMapper baseMapper; // 直接注入 Mapper,无 DAO 层
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* 构建查询条件(在 Service 层)
|
|
251
|
-
*/
|
|
252
|
-
private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
|
|
253
|
-
Map<String, Object> params = bo.getParams();
|
|
254
|
-
LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
|
|
255
|
-
lqw.eq(bo.getDeptId() != null, TestDemo::getDeptId, bo.getDeptId());
|
|
256
|
-
lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey());
|
|
257
|
-
return lqw;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
@Override
|
|
261
|
-
public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery) {
|
|
262
|
-
LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
|
|
263
|
-
Page<TestDemoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
264
|
-
return TableDataInfo.build(result);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
### BO 类结构
|
|
270
|
-
|
|
271
|
-
```java
|
|
272
|
-
@Data
|
|
273
|
-
@AutoMapper(target = TestDemo.class, reverseConvertGenerate = false) // ✅ 单数
|
|
274
|
-
public class TestDemoBo extends BaseEntity {
|
|
275
|
-
private Long id;
|
|
276
|
-
private String testKey;
|
|
277
|
-
// ...
|
|
278
|
-
}
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
### Controller 结构
|
|
282
|
-
|
|
283
|
-
```java
|
|
284
|
-
@RestController
|
|
285
|
-
@RequestMapping("/demo/demo")
|
|
286
|
-
public class TestDemoController extends BaseController {
|
|
287
|
-
|
|
288
|
-
private final ITestDemoService testDemoService;
|
|
195
|
+
Glob core-order/**/impl/*Service*.java
|
|
289
196
|
|
|
290
|
-
|
|
291
|
-
|
|
197
|
+
# 查找 Mapper XML
|
|
198
|
+
Glob core-order/**/*Mapper.xml
|
|
292
199
|
|
|
293
|
-
|
|
294
|
-
|
|
200
|
+
# 查找 Entity
|
|
201
|
+
Glob core-order/**/model/*.java
|
|
295
202
|
|
|
296
|
-
|
|
297
|
-
|
|
203
|
+
# 查找某接口路由
|
|
204
|
+
Grep "/api/v2/web/order" --type java
|
|
298
205
|
|
|
299
|
-
|
|
300
|
-
|
|
206
|
+
# 查找前端某页面
|
|
207
|
+
Glob src/leniuview/**/index.vue
|
|
301
208
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
209
|
+
# 查找前端接口定义
|
|
210
|
+
Glob src/api/*.js
|
|
305
211
|
```
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
const fs = require('fs');
|
|
12
|
+
const path = require('path');
|
|
13
|
+
|
|
14
|
+
// 项目根目录:__dirname 是 .cursor/hooks/,向上两级
|
|
15
|
+
const PROJECT_ROOT = path.resolve(__dirname, '..', '..');
|
|
12
16
|
|
|
13
17
|
// 从 stdin 读取用户输入
|
|
14
18
|
let inputData = '';
|
|
@@ -158,6 +162,12 @@ const skillMap = [
|
|
|
158
162
|
name: 'leniu-mealtime',
|
|
159
163
|
keywords: ['餐次', '早餐', '午餐', '下午茶', '晚餐', '夜宵', 'mealtimeTypes']
|
|
160
164
|
},
|
|
165
|
+
{
|
|
166
|
+
name: 'leniu-customization-location',
|
|
167
|
+
keywords: ['定制开发', '定制代码位置', 'Dz前缀', 'leniu-yunshitang', 'dz_表名', '定制仓库',
|
|
168
|
+
'覆盖Service', '@Primary', '迁移core文件', '定制开始', '定制结束', 'net.xnzn.yunshitang',
|
|
169
|
+
'wuhanxiehe定制', 'bootstrap-ext']
|
|
170
|
+
},
|
|
161
171
|
|
|
162
172
|
// ========== OpenSpec 工作流 ==========
|
|
163
173
|
{
|
|
@@ -313,6 +323,48 @@ const skillMap = [
|
|
|
313
323
|
{
|
|
314
324
|
name: 'store-pc',
|
|
315
325
|
keywords: ['Vuex', 'store', 'mapState', 'mapActions', '状态管理']
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
name: 'add-skill',
|
|
329
|
+
keywords: ['添加技能', '创建技能', '新技能', '技能开发', '写技能', 'SKILL.md', '新增skill']
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
name: 'banana-image',
|
|
333
|
+
keywords: ['生成图片', 'AI图片', '产品图', '海报', '缩略图', '4K图片', '高清图', '制作图片', '/image']
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
name: 'collaborating-with-codex',
|
|
337
|
+
keywords: ['codex协作', '委托codex', 'openai codex', 'codex分析', '多模型协作', '让codex']
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
name: 'collaborating-with-gemini',
|
|
341
|
+
keywords: ['gemini协作', '委托gemini', 'google gemini', 'gemini分析', '让gemini', 'gemini前端']
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
name: 'leniu-brainstorm',
|
|
345
|
+
keywords: ['leniu-头脑风暴', '云食堂方案', '云食堂设计', '云食堂功能规划', 'leniu-方案设计',
|
|
346
|
+
'云食堂怎么设计', '云食堂可行性']
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
name: 'leniu-report-customization',
|
|
350
|
+
keywords: ['定制报表', 'report_order_info', 'report_order_detail', 'report_account_flow',
|
|
351
|
+
'退款汇总', '消费金额统计', '订单报表', '流水报表', '汇总报表']
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
name: 'leniu-report-standard-customization',
|
|
355
|
+
keywords: ['标准版报表', 'core-report', 'report_refund', 'report_refund_detail',
|
|
356
|
+
'经营分析', '营业额分析', '用户活跃度', '菜品排行', '操作员统计', '账户日结',
|
|
357
|
+
'ReportOrderConsumeService', 'ReportAccountConsumeService']
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: 'mysql-debug',
|
|
361
|
+
keywords: ['mysql查询', '查数据库', '查表', '执行SQL', '数据库排查', '验证数据',
|
|
362
|
+
'数据库调试', 'db查询', 'mysql调试', '直接查库']
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
name: 'openspec-onboard',
|
|
366
|
+
keywords: ['openspec入门', 'opsx:onboard', 'openspec onboard', 'openspec教程',
|
|
367
|
+
'openspec新手', '学习openspec工作流']
|
|
316
368
|
}
|
|
317
369
|
];
|
|
318
370
|
|
|
@@ -335,7 +387,7 @@ if (matchedSkills.length === 0) {
|
|
|
335
387
|
}
|
|
336
388
|
|
|
337
389
|
// 构建技能文档路径列表
|
|
338
|
-
const skillPaths = matchedSkills.map(name =>
|
|
390
|
+
const skillPaths = matchedSkills.map(name => path.join(PROJECT_ROOT, '.cursor', 'skills', name, 'SKILL.md'));
|
|
339
391
|
|
|
340
392
|
const skillList = matchedSkills.map((name, i) => `- **${name}**: \`${skillPaths[i]}\``).join('\n');
|
|
341
393
|
|
package/.cursor/hooks.json
CHANGED
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
"beforeSubmitPrompt": [
|
|
5
5
|
{
|
|
6
6
|
"matcher": "",
|
|
7
|
-
"command": "node \"
|
|
7
|
+
"command": "node -e \"const p=require('path'),fs=require('fs');let d=process.cwd();while(!fs.existsSync(p.join(d,'.cursor/hooks/cursor-skill-eval.js'))&&d!==p.dirname(d))d=p.dirname(d);const f=p.join(d,'.cursor/hooks/cursor-skill-eval.js');if(fs.existsSync(f))require(f);\""
|
|
8
8
|
}
|
|
9
9
|
],
|
|
10
10
|
"preToolUse": [
|
|
11
11
|
{
|
|
12
12
|
"matcher": "Shell|Write|CreateFile|EditFile",
|
|
13
|
-
"command": "node \"
|
|
13
|
+
"command": "node -e \"const p=require('path'),fs=require('fs');let d=process.cwd();while(!fs.existsSync(p.join(d,'.cursor/hooks/cursor-pre-tool-use.js'))&&d!==p.dirname(d))d=p.dirname(d);const f=p.join(d,'.cursor/hooks/cursor-pre-tool-use.js');if(fs.existsSync(f))require(f);\""
|
|
14
14
|
}
|
|
15
15
|
],
|
|
16
16
|
"stop": [
|
|
17
17
|
{
|
|
18
18
|
"matcher": "",
|
|
19
|
-
"command": "node \"
|
|
19
|
+
"command": "node -e \"const p=require('path'),fs=require('fs');let d=process.cwd();while(!fs.existsSync(p.join(d,'.cursor/hooks/stop.js'))&&d!==p.dirname(d))d=p.dirname(d);const f=p.join(d,'.cursor/hooks/stop.js');if(fs.existsSync(f))require(f);\""
|
|
20
20
|
}
|
|
21
21
|
]
|
|
22
22
|
}
|
|
@@ -16,7 +16,7 @@ description: |
|
|
|
16
16
|
|
|
17
17
|
# 项目导航指南
|
|
18
18
|
|
|
19
|
-
> **说明**:后端项目(RuoYi-Vue-Plus
|
|
19
|
+
> **说明**:后端项目(RuoYi-Vue-Plus)在当前目录,前端项目在独立目录(路径由用户在 CLAUDE.md 中配置)。
|
|
20
20
|
|
|
21
21
|
## 项目整体结构
|
|
22
22
|
|
|
@@ -176,25 +176,25 @@ ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/
|
|
|
176
176
|
| MyBatis 扩展 | `ruoyi-common/ruoyi-common-mybatis/` |
|
|
177
177
|
| Redis 工具 | `ruoyi-common/ruoyi-common-redis/` |
|
|
178
178
|
| 权限认证 | `ruoyi-common/ruoyi-common-satoken/` |
|
|
179
|
-
| **前端项目根目录** |
|
|
180
|
-
| **前端 src 目录** |
|
|
181
|
-
| 前端主入口 |
|
|
182
|
-
| 前端路由守卫 |
|
|
183
|
-
| 前端路由配置 |
|
|
184
|
-
| 前端 API 接口定义 |
|
|
185
|
-
| 前端视图页面 |
|
|
186
|
-
| 前端业务组件 |
|
|
187
|
-
| 前端公共组件 |
|
|
188
|
-
| 前端 Vuex Store |
|
|
189
|
-
| 前端请求封装 |
|
|
190
|
-
| 前端 Token/租户工具 |
|
|
191
|
-
| 前端全局工具函数 |
|
|
192
|
-
| 前端 Mixin 文件 |
|
|
193
|
-
| 前端国际化配置 |
|
|
194
|
-
| 前端自定义指令 |
|
|
195
|
-
| 前端全局样式 |
|
|
196
|
-
| 前端构建配置 |
|
|
197
|
-
| 前端依赖配置 |
|
|
179
|
+
| **前端项目根目录** | 由 CLAUDE.md 配置(各用户路径不同) |
|
|
180
|
+
| **前端 src 目录** | `src/`(前端项目根目录下) |
|
|
181
|
+
| 前端主入口 | `src/main.js` |
|
|
182
|
+
| 前端路由守卫 | `src/permission.js` |
|
|
183
|
+
| 前端路由配置 | `src/router/` |
|
|
184
|
+
| 前端 API 接口定义 | `src/api/`(65个文件) |
|
|
185
|
+
| 前端视图页面 | `src/leniuview/`(34个业务模块) |
|
|
186
|
+
| 前端业务组件 | `src/leniu-components/` |
|
|
187
|
+
| 前端公共组件 | `src/components/`(~87个) |
|
|
188
|
+
| 前端 Vuex Store | `src/store/`(28个模块) |
|
|
189
|
+
| 前端请求封装 | `src/utils/request.js` |
|
|
190
|
+
| 前端 Token/租户工具 | `src/utils/auth.js` |
|
|
191
|
+
| 前端全局工具函数 | `src/utils/index.js` |
|
|
192
|
+
| 前端 Mixin 文件 | `src/mixins/` |
|
|
193
|
+
| 前端国际化配置 | `src/lang/` |
|
|
194
|
+
| 前端自定义指令 | `src/directive/` |
|
|
195
|
+
| 前端全局样式 | `src/styles/` |
|
|
196
|
+
| 前端构建配置 | `vue.config.js` |
|
|
197
|
+
| 前端依赖配置 | `package.json` |
|
|
198
198
|
|
|
199
199
|
---
|
|
200
200
|
|
package/CLAUDE.md
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
# CLAUDE.md - leniu-tengyun-core 云食堂项目
|
|
2
2
|
|
|
3
|
+
## Workflow Orchestration
|
|
4
|
+
|
|
5
|
+
### 1. Plan Mode Default
|
|
6
|
+
- Enter plan mode for ANY non-trivial task (3+ steps or architectural decisions)
|
|
7
|
+
- If something goes sideways, STOP and re-plan immediately - don't keep pushing
|
|
8
|
+
- Use plan mode for verification steps, not just building
|
|
9
|
+
- Write detailed specs upfront to reduce ambiguity
|
|
10
|
+
|
|
11
|
+
### 2. Agent Team Strategy
|
|
12
|
+
- Use subagents liberally to keep main context window clean
|
|
13
|
+
- One task per subagent for focused execution
|
|
14
|
+
- **Parallel execution**: Launch independent agents concurrently (research + exploration + analysis in one message)
|
|
15
|
+
- **Background agents**: Use `run_in_background` for long-running tasks, continue other work while waiting
|
|
16
|
+
- **Agent type selection**: Match agent to task — `Explore` for codebase search, `Plan` for architecture, `bug-analyzer` for debugging, `general-purpose` for complex multi-step work
|
|
17
|
+
- **Resume capability**: Resume completed agents by ID for follow-up work instead of starting fresh
|
|
18
|
+
- For complex problems, decompose into parallel agents — throw more compute at it
|
|
19
|
+
|
|
20
|
+
### 3. Self-Improvement Loop
|
|
21
|
+
- After ANY correction from the user: update `tasks/lessons.md` with the pattern
|
|
22
|
+
- Write rules for yourself that prevent the same mistake
|
|
23
|
+
- Ruthlessly iterate on these lessons until mistake rate drops
|
|
24
|
+
- Review lessons at session start for relevant project
|
|
25
|
+
|
|
26
|
+
### 4. Verification Before Done
|
|
27
|
+
- Never mark a task complete without proving it works
|
|
28
|
+
- Diff behavior between main and your changes when relevant
|
|
29
|
+
- Ask yourself: "Would a staff engineer approve this?"
|
|
30
|
+
- Run tests, check logs, demonstrate correctness
|
|
31
|
+
|
|
32
|
+
### 5. Demand Elegance (Balanced)
|
|
33
|
+
- For non-trivial changes: pause and ask "is there a more elegant way?"
|
|
34
|
+
- If a fix feels hacky: "Knowing everything I know now, implement the elegant solution"
|
|
35
|
+
- Skip this for simple, obvious fixes - don't over-engineer
|
|
36
|
+
- Challenge your own work before presenting it
|
|
37
|
+
|
|
38
|
+
### 6. Autonomous Bug Fixing
|
|
39
|
+
- When given a bug report: just fix it. Don't ask for hand-holding
|
|
40
|
+
- Point at logs, errors, failing tests - then resolve them
|
|
41
|
+
- Zero context switching required from the user
|
|
42
|
+
- Go fix failing CI tests without being told how
|
|
43
|
+
|
|
44
|
+
## Task Management
|
|
45
|
+
|
|
46
|
+
1. **Plan First**: Write plan to `tasks/todo.md` with checkable items
|
|
47
|
+
2. **Verify Plan**: Check in before starting implementation
|
|
48
|
+
3. **Track Progress**: Mark items complete as you go
|
|
49
|
+
4. **Explain Changes**: High-level summary at each step
|
|
50
|
+
5. **Document Results**: Add review section to `tasks/todo.md`
|
|
51
|
+
6. **Capture Lessons**: Update `tasks/lessons.md` after corrections
|
|
52
|
+
|
|
53
|
+
## Core Principles
|
|
54
|
+
|
|
55
|
+
- **Simplicity First**: Make every change as simple as possible. Impact minimal code.
|
|
56
|
+
- **No Laziness**: Find root causes. No temporary fixes. Senior developer standards.
|
|
57
|
+
- **Minimal Impact**: Changes should only touch what's necessary. Avoid introducing bugs.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
3
61
|
## 语言设置
|
|
4
62
|
**必须使用中文**与用户对话。
|
|
5
63
|
|