-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path.cursorrules
More file actions
290 lines (242 loc) · 6.73 KB
/
.cursorrules
File metadata and controls
290 lines (242 loc) · 6.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
# 智能体平台前端项目开发规范
## 项目概述
这是一个基于 uni-app-x 框架开发的智能体平台前端项目,支持多端部署(H5、小程序、App)。
## 技术栈
- **框架**: uni-app-x (Vue 3 + TypeScript)
- **语言**: UTS (UniApp TypeScript)
- **样式**: SCSS
- **状态管理**: Vue 3 Composition API
- **构建工具**: uni-app 官方构建工具
- **UI组件**: 自定义组件 + uni-ui 组件库
## 代码规范
### 1. 文件命名规范
- **页面文件**: 使用 kebab-case,如 `agent-detail.uvue`
- **组件文件**: 使用 kebab-case,如 `custom-nav-bar.uvue`
- **工具文件**: 使用 camelCase,如 `chatService.uts`
- **常量文件**: 使用 camelCase + .constants.uts 后缀,如 `api.constants.uts`
- **类型文件**: 使用 camelCase + .uts 后缀,如 `agent.uts`
- **枚举文件**: 使用 camelCase + .uts 后缀,如 `agent.uts`
### 2. 目录结构规范
```
├── components/ # 公共组件
│ └── component-name/ # 组件目录(kebab-case)
│ └── component-name.uvue
├── pages/ # 页面文件
│ └── page-name/ # 页面目录(kebab-case)
│ ├── page-name.uvue
│ ├── components/ # 页面私有组件
│ └── layers/ # 页面逻辑层
├── types/ # 类型定义
│ ├── interfaces/ # 接口定义
│ └── enums/ # 枚举定义
├── constants/ # 常量定义
├── servers/ # API 服务层
├── utils/ # 工具函数
├── static/ # 静态资源
└── styles/ # 全局样式
```
### 3. 代码风格规范
#### UTS 代码规范
- 使用 TypeScript 严格模式
- 优先使用 `interface` 定义对象类型
- 使用 `type` 定义联合类型和复杂类型
- 枚举使用 `enum` 关键字定义
- 函数参数和返回值必须明确类型注解
- 使用 `export default` 导出默认值
- 使用命名导出导出多个值
```uts
// ✅ 推荐
interface UserInfo {
id: string;
name: string;
avatar?: string;
}
type Status = 'loading' | 'success' | 'error';
enum UserRole {
ADMIN = 'admin',
USER = 'user'
}
export default function getUserInfo(id: string): Promise<UserInfo> {
// 实现
}
export { UserInfo, Status, UserRole };
```
#### Vue 组件规范
- 使用 `<script setup lang="uts">` 语法
- 组件名使用 PascalCase
- Props 使用 TypeScript 接口定义
- 事件名使用 kebab-case
- 使用 Composition API 而非 Options API
```uvue
<template>
<view class="component-name">
<text>{{ title }}</text>
</view>
</template>
<script setup lang="uts">
interface Props {
title: string;
count?: number;
}
const props = withDefaults(defineProps<Props>(), {
count: 0
});
const emit = defineEmits<{
click: [id: string];
change: [value: number];
}>();
</script>
```
#### SCSS 样式规范
- 使用 BEM 命名规范
- 优先使用全局工具类(定义在 global.scss 中)
- 组件样式使用 scoped
- 使用 rpx 单位适配不同屏幕
- 颜色使用 CSS 变量
```scss
.component-name {
&__header {
display: flex;
align-items: center;
}
&__content {
padding: 16rpx;
}
&--active {
background-color: var(--primary-color);
}
}
```
### 4. 注释规范
- 所有公共函数必须添加 JSDoc 注释
- 复杂逻辑必须添加行内注释
- 组件 Props 和 Events 必须添加注释
- 接口和类型定义必须添加注释
```uts
/**
* 获取用户信息
* @param userId 用户ID
* @param includeAvatar 是否包含头像信息
* @returns Promise<UserInfo> 用户信息
*/
export async function getUserInfo(
userId: string,
includeAvatar: boolean = false
): Promise<UserInfo> {
// 实现逻辑
}
```
### 5. 错误处理规范
- 使用 try-catch 处理异步操作
- 统一使用 uni.showToast 显示错误信息
- API 调用必须处理错误情况
- 使用类型守卫检查数据有效性
```uts
try {
const result = await apiCall();
if (result.code === SUCCESS_CODE) {
// 处理成功
} else {
uni.showToast({
title: result.message || '操作失败',
icon: 'none'
});
}
} catch (error) {
console.error('API调用失败:', error);
uni.showToast({
title: '网络错误,请重试',
icon: 'none'
});
}
```
### 6. 性能优化规范
- 使用 `v-if` 而非 `v-show` 控制大组件显示
- 长列表使用虚拟滚动
- 图片使用懒加载
- 合理使用 `computed` 和 `watch`
- 避免在模板中使用复杂计算
### 7. 多端适配规范
- 使用条件编译处理平台差异
- 样式使用 rpx 单位
- 使用 uni-app 提供的 API 而非原生 API
- 测试不同平台的兼容性
```uvue
<template>
<!-- #ifdef H5 -->
<div class="h5-specific">H5 特定内容</div>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<view class="wechat-specific">微信小程序特定内容</view>
<!-- #endif -->
</template>
```
### 8. 状态管理规范
- 使用 Pinia 进行状态管理
- 状态按模块划分
- 使用 TypeScript 定义状态类型
- 避免直接修改状态,使用 actions
### 9. API 调用规范
- 统一使用 servers 目录下的服务文件
- 使用 TypeScript 定义请求和响应类型
- 统一错误处理
- 使用拦截器处理通用逻辑
```uts
// servers/user.uts
export interface LoginRequest {
username: string;
password: string;
}
export interface LoginResponse {
token: string;
userInfo: UserInfo;
}
export async function login(data: LoginRequest): Promise<LoginResponse> {
return await request.post('/api/login', data);
}
```
### 10. 测试规范
- 关键业务逻辑必须编写单元测试
- 使用 Jest 进行测试
- 测试覆盖率不低于 80%
- 测试文件使用 `.test.uts` 后缀
## 提交规范
### Git 提交信息格式
```
<type>(<scope>): <subject>
<body>
<footer>
```
**Type 类型:**
- feat: 新功能
- fix: 修复 bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 代码重构
- test: 测试相关
- chore: 构建过程或辅助工具的变动
**示例:**
```
feat(chat): 添加语音输入功能
- 集成语音识别 API
- 添加录音按钮组件
- 处理音频文件上传
Closes #123
```
## 部署规范
- 使用环境变量管理不同环境的配置
- 生产环境必须开启代码压缩
- 使用 CDN 加速静态资源
- 配置适当的缓存策略
## 安全规范
- 敏感信息不得硬编码
- 使用 HTTPS 进行网络请求
- 对用户输入进行验证和过滤
- 定期更新依赖包
## 文档规范
- 每个模块必须包含 README 文档
- API 接口必须提供文档
- 组件必须提供使用示例
- 重要决策必须记录在 docs 目录
---
遵循以上规范可以确保代码质量、提高开发效率、降低维护成本。如有疑问,请参考项目中的现有代码或咨询团队负责人。