Blame view

.cursor/rules/project_rules.mdc 7.19 KB
d56bd957   “wangming”   修复问题,组建AI
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
  ---
  description: 
  alwaysApply: true
  ---
  
  # 项目开发规范
  
  ## 📋 目录
  - [技术栈](#技术栈)
  - [前端开发规范](#前端开发规范)
  - [后端开发规范](#后端开发规范)
  - [数据库规范](#数据库规范)
  - [API接口规范](#api接口规范)
  - [数据一致性规范](#数据一致性规范)
  - [代码质量规范](#代码质量规范)
  - [特殊要求](#特殊要求)
  - [强制约束](#强制约束)
  
  ## 🛠 技术栈
  
  ### 前端技术栈
  - **框架**: Vue 2.6 + Element UI
  - **样式**: SCSS (scoped)
  - **HTTP客户端**: Axios
  - **状态管理**: Vuex
  - **构建工具**: Webpack
  
  ### 后端技术栈
  - **框架**: ASP.NET Core
  - **ORM**: SqlSugar
  - **认证**: JWT Token
  - **日志**: Serilog
  - **架构**: 分层架构 (Entitys/Interfaces/Services)
  
  ## 🎨 前端开发规范
  
  ### 组件开发规范
  - ✅ **模块化**: views 与 components 分离
  - ✅ **文件命名**: 使用 kebab-case (如: user-dialog.vue)
  - ✅ **组件封装**: 弹窗、二级页面必须单独创建 Vue 文件
  - ❌ **禁止**: 在主页面 template 中直接编写弹窗内容
  
  ### UI/UX 规范
  - **表格组件**: 统一使用 NCC-table
  - **表单组件**: Element UI 表单,标签右对齐
  - **色彩规范**: 
    - 主色: `#409EFF`
    - 辅助色: `#67C23A` / `#F56C6C` / `#909399`
  - **卡片规范**: 高度 100px,内边距 12px,圆角 12px
  - **按钮对齐**: 操作按钮左对齐,统计卡片内容垂直居中
  - **图标显示**: 所有列表数据都要有图标,不同颜色区分类型
  - **空值显示**: 没有信息的字段显示"无"
  - **列表规范**: 列表数据不能换行
  
  ### 性能要求
  - 启用懒加载和代码分割
  - Vuex 仅缓存必要数据
  - 页面加载时间 < 3s
  
  ## ⚙️ 后端开发规范
  
  ### 架构规范
  - **分层架构**: Entitys → Interfaces → Services
  - **依赖注入**: 使用 ASP.NET Core DI 容器
  - **异常处理**: 全局捕获,统一 JSON 格式返回
  
  ### 数据访问规范
  - **分页查询**: 所有列表接口必须分页
  - **索引优化**: 关键字段建立索引
  - **SQL安全**: 使用 WhereIF 条件查询避免 SQL 注入
  - **查询优化**: 避免 N+1 查询,使用 JOIN 优化
  
  ### 代码规范
  - **XML注释**: 关键方法必须添加 XML 注释
  - **异常处理**: 统一异常处理,返回友好错误信息
  - **枚举使用**: 状态、类型等固定值必须使用枚举,禁止魔法数字
  
  ### ID生成规范
  ```csharp
  // ✅ 正确:必须使用YitIdHelper
  Id = YitIdHelper.NextId().ToString()
  
  // ❌ 错误:禁止使用Guid
  Id = Guid.NewGuid().ToString()
  ```
  
  ## 🗄️ 数据库规范
  
  ### 命名规范
bb87363d   “wangming”   添加设备查看会话记录功能,包括开始...
90
  - **表命名**: 业务前缀 + 功能名称
d56bd957   “wangming”   修复问题,组建AI
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
  - **字段命名**: 驼峰化
  - **时间字段**: 统一使用 DateTime 类型
  
  ### 查询规范
  - **分页查询**: 避免全表扫描
  - **索引建立**: 关键查询字段建立索引
  - **删除标记**: `base_organize.DeleteMark` 为 `null` 表示未删除
  
  ### MCP MySQL 与 SQL 验证
  - 使用 MCP 查库或编写/验证统计 SQL 时,遵循 skill:`mcp-mysql-and-sql-validation`。
  
  ### 数据库文档要求
  - **文档维护**: 所有数据库信息记录到 `数据库说明.md`
  - **表结构记录**: 表名、字段名、字段解释、字段关联
  - **变更同步**: 表结构变更时同步更新文档
  
  ## 🔌 API接口规范
  
  ### 接口注释规范
  - 新增或修改 API 时,接口方法的 XML 注释格式与要求见 skill:`api-xml-comments`。
  
  ### 接口测试规范
  - **必须测试**:所有新开发或修改的接口都必须测试通过后再提交;具体流程、Token 获取与 curl 示例见 skill:`api-interface-testing`。
  
  ## 📊 数据一致性规范
  
  ### 统计与列表数据
  - **数据一致性**: 统计接口与列表接口使用相同的过滤条件、时间范围、权限控制
  - **字段命名规范**: DTO字段名称、大小写必须完全一致
  - **计算逻辑统一**: 统计数据计算逻辑与列表数据筛选逻辑保持一致
  - **分页一致性**: 统计接口和列表接口的分页参数和逻辑必须保持一致
  
  ## 📝 代码质量规范
  
  ### 代码风格
  - **缩进**: 2 空格
  - **行长度**: 单行 <= 120 字符
  - **注释**: 关键逻辑必须添加注释
  
  ### 代码审查
  - **自检**: 提交前进行自检
  - **审查**: 重要功能需代码审查
  
  ## ⚠️ 特殊要求
  
  ### 前端特殊要求
  - 操作按钮必须左对齐,不要居中
  - 统计卡片内容必须垂直居中
  - 所有列表数据都要有图标显示,不同类型的图标需要有不同的颜色,但是颜色不能太多
  - 没有信息的字段显示"无"
  - 卡片高度统一为100px,内边距12px,圆角12px
  - 弹窗、二级页面、复杂表单等必须单独创建 Vue 文件或封装成组件
  - 禁止在主页面的 template 中直接编写弹窗内容或复杂交互逻辑
  - 组件文件命名使用 kebab-case,如:user-dialog.vue、edit-form.vue
  - 列表数据不能换行
  
  ### 后端特殊要求
  - 使用 WhereIF 条件查询避免 SQL 注入
  - 关键方法必须添加 XML 注释
  - 统一异常处理,返回友好错误信息
  - 系统内涉及状态、类型等固定值的字段必须使用枚举类型(enum)定义,禁止使用魔法数字或硬编码字符串;同时需为枚举成员添加 XML 注释,保证可读性与可维护性
  - 不需要在NCC.API创建controller,因为Extend里面的service都是可以直接使用的
  
  ## 🚨 强制约束
  
  ### 回复
  1. **回复前缀**: 每次回复的时候都必须用“大哥”作为前缀
  
  ### 环境要求
  1. **Node.js版本**: 必须使用16.20.2版本,项目在Node 18下会失败
  2. **API传参**: GET请求使用data字段传参,不使用params
  
  ### 功能要求
  4. **数据一致性**: 统计数据和列表数据必须使用相同的过滤条件
  5. **UI一致性**: 所有页面必须使用统一的布局和样式规范
  6. **错误处理**: 统一异常处理,返回友好错误信息
  7. **性能优化**: 所有列表接口支持分页,避免大数据量查询
  8. **安全防护**: 使用SqlSugar ORM防止SQL注入,前端数据渲染时进行HTML转义
  9. **数据库文档**: 所有数据库表结构、字段说明、关联关系必须记录到数据库说明文档中
  10. **ID生成规范**: 所有实体ID的生成都必须使用 `YitIdHelper.NextId().ToString()`,禁止使用 `Guid.NewGuid().ToString()` 或其他ID生成方式
  11.**说明文档规范**:没有要求生成新的md文件的时候,严禁生成新md文件。
aa96451e   “wangming”   整理项目文件夹
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
  12. **文档与产出物规范**:项目相关形成的 md、sql、excel、word、py 等文件,必须放在 `docs/` 下对应子目录(md、sql、excel、word、py),排除 .cursor、readme、第三方包内的文件。
  
  ## 📁 文档与产出物目录
  
  项目产出物统一存放于 `docs/`,按类型分子目录:
  
  | 子目录 | 用途 |
  |--------|------|
  | `docs/md/` | 接口测试说明、功能总结、修复说明等 |
  | `docs/sql/` | 迁移脚本、修复脚本等 |
  | `docs/excel/` | xlsx/xls 导入模板、导出示例等 |
  | `docs/word/` | doc/docx 文档等 |
  | `docs/py/` | Python 脚本等 |
  
  位置:`HongHua-JJ/docs/{md|sql|excel|word|py}/`
d56bd957   “wangming”   修复问题,组建AI
187
188
189
190
191
  
  ## 📋 重要变更记录
  
  ### 已弃用的表
  - 涉及人员、门店归属、业绩关联等逻辑时,必须使用当前约定表与字段;具体弃用表及替代方案见 skill:`deprecated-tables-context`。