Commit 073fdd9a9c87ffbdeaaf3c66737e44d214434958

Authored by “wangming”
1 parent 31673a02

chore: remove PROJECT_RULES.md file

- Deleted the comprehensive project development guidelines document, which included technical stacks, development standards, and database norms.
Showing 1 changed file with 0 additions and 245 deletions
PROJECT_RULES.md deleted
1 -# 绿纤美业ERP系统 - 项目开发规范  
2 -  
3 -## 🛠 技术栈  
4 -  
5 -### 前端技术栈  
6 -- **框架**: Vue 2.6 + Element UI  
7 -- **样式**: SCSS (scoped)  
8 -- **HTTP客户端**: Axios  
9 -- **状态管理**: Vuex  
10 -- **构建工具**: Webpack  
11 -  
12 -### 后端技术栈  
13 -- **框架**: ASP.NET Core  
14 -- **ORM**: SqlSugar  
15 -- **认证**: JWT Token  
16 -- **日志**: Serilog  
17 -- **架构**: 分层架构 (Entitys/Interfaces/Services)  
18 -  
19 -## 🎨 前端开发规范  
20 -  
21 -### 组件开发规范  
22 -- ✅ **模块化**: views 与 components 分离  
23 -- ✅ **文件命名**: 使用 kebab-case (如: user-dialog.vue)  
24 -- ✅ **组件封装**: 弹窗、二级页面必须单独创建 Vue 文件  
25 -- ❌ **禁止**: 在主页面 template 中直接编写弹窗内容  
26 -  
27 -### UI/UX 规范  
28 -- **表格组件**: 统一使用 NCC-table  
29 -- **表单组件**: Element UI 表单,标签右对齐  
30 -- **色彩规范**:  
31 - - 主色: `#409EFF`  
32 - - 辅助色: `#67C23A` / `#F56C6C` / `#909399`  
33 -- **卡片规范**: 高度 100px,内边距 12px,圆角 12px  
34 -- **按钮对齐**: 操作按钮左对齐,统计卡片内容垂直居中  
35 -- **图标显示**: 所有列表数据都要有图标,不同颜色区分类型  
36 -- **空值显示**: 没有信息的字段显示"无"  
37 -- **列表规范**: 列表数据不能换行  
38 -- **弹窗显示**: 弹窗需要使用圆角 12px  
39 -  
40 -### 性能要求  
41 -- 启用懒加载和代码分割  
42 -- Vuex 仅缓存必要数据  
43 -- 页面加载时间 < 3s  
44 -  
45 -## ⚙️ 后端开发规范  
46 -  
47 -### 架构规范  
48 -- **分层架构**: Entitys → Interfaces → Services  
49 -- **依赖注入**: 使用 ASP.NET Core DI 容器  
50 -- **异常处理**: 全局捕获,统一 JSON 格式返回  
51 -  
52 -### 数据访问规范  
53 -- **分页查询**: 所有列表接口必须分页  
54 -- **索引优化**: 关键字段建立索引  
55 -- **SQL安全**: 使用 WhereIF 条件查询避免 SQL 注入  
56 -- **查询优化**: 避免 N+1 查询,使用 JOIN 优化  
57 -  
58 -### 代码规范  
59 -- **XML注释**: 关键方法必须添加 XML 注释  
60 -- **异常处理**: 统一异常处理,返回友好错误信息  
61 -- **枚举使用**: 状态、类型等固定值必须使用枚举,禁止魔法数字  
62 -  
63 -### ID生成规范  
64 -```csharp  
65 -// ✅ 正确:必须使用YitIdHelper  
66 -Id = YitIdHelper.NextId().ToString()  
67 -  
68 -// ❌ 错误:禁止使用Guid  
69 -Id = Guid.NewGuid().ToString()  
70 -```  
71 -  
72 -## 🗄️ 数据库规范  
73 -  
74 -### 命名规范  
75 -- **表命名**: 业务前缀 + 功能名称 (如: lq_)  
76 -- **字段命名**: 驼峰化  
77 -- **时间字段**: 统一使用 DateTime 类型  
78 -  
79 -### 查询规范  
80 -- **分页查询**: 避免全表扫描  
81 -- **索引建立**: 关键查询字段建立索引  
82 -- **删除标记**: `base_organize.DeleteMark` 为 `null` 表示未删除  
83 -  
84 -### MCP MySQL 使用规范  
85 -- **只支持**: SELECT 语句  
86 -- **查看表结构**:  
87 - ```sql  
88 - SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA, COLUMN_COMMENT  
89 - FROM INFORMATION_SCHEMA.COLUMNS  
90 - WHERE TABLE_NAME = '<表名>';  
91 - ```  
92 -  
93 -### 数据库文档要求  
94 -- **文档维护**: 所有数据库信息记录到 `数据库说明.md`  
95 -- **表结构记录**: 表名、字段名、字段解释、字段关联  
96 -- **变更同步**: 表结构变更时同步更新文档  
97 -  
98 -### SQL查询验证规范  
99 -- **统计SQL验证**: 对于统计类型的SQL查询,在提交代码前必须先使用MCP MySQL工具执行验证  
100 -- **验证要求**:  
101 - - 确保SQL语法正确  
102 - - 验证字段存在且类型匹配  
103 - - 检查JOIN关系正确  
104 - - 确认统计逻辑准确  
105 - - 使用实际数据测试返回结果  
106 -- **验证通过**: 只有验证通过的SQL才能提交到代码中  
107 -  
108 -## 🔌 API接口规范  
109 -  
110 -### 接口注释规范  
111 -所有API接口方法必须按照以下标准格式编写XML注释:  
112 -  
113 -```csharp  
114 -/// <summary>  
115 -/// 接口功能描述(简洁明了的一句话)  
116 -/// </summary>  
117 -/// <remarks>  
118 -/// 详细功能说明和使用场景  
119 -///  
120 -/// 示例请求:  
121 -/// ```json  
122 -/// {  
123 -/// "参数名": "参数值",  
124 -/// "参数名2": "参数值2"  
125 -/// }  
126 -/// ```  
127 -///  
128 -/// 参数说明:  
129 -/// - 参数名: 参数描述  
130 -/// - 参数名2: 参数描述  
131 -/// </remarks>  
132 -/// <param name="参数名">参数描述</param>  
133 -/// <returns>返回值描述</returns>  
134 -/// <response code="200">成功响应描述</response>  
135 -/// <response code="400">错误响应描述</response>  
136 -/// <response code="500">服务器错误描述</response>  
137 -```  
138 -  
139 -### 注释要求  
140 -- `<summary>` 必须简洁明了,一句话概括功能  
141 -- `<remarks>` 包含详细说明、示例请求、参数说明  
142 -- 示例请求使用JSON格式,参数说明使用列表格式  
143 -- 必须包含所有可能的HTTP状态码响应说明  
144 -- 复杂接口必须提供完整的请求示例  
145 -  
146 -### 接口测试规范  
147 -- **必须测试**: 所有新开发的接口或修改的接口都必须进行测试  
148 -- **测试要求**:  
149 - - 使用实际数据测试接口功能  
150 - - 验证接口返回数据的正确性  
151 - - 测试边界情况和异常情况  
152 - - 验证接口性能和响应时间  
153 - - 确保接口符合业务逻辑要求  
154 -- **测试方式**: 可以使用 curl、Postman、Swagger 等工具进行接口测试  
155 -- **测试通过**: 只有测试通过的接口才能提交代码  
156 -- **测试token获取**:  
157 - - **接口地址**: `/api/oauth/Login`  
158 - - **请求方式**: POST  
159 - - **Content-Type**: `application/x-www-form-urlencoded`  
160 - - **请求参数**:  
161 - - `account`: `admin`  
162 - - `password`: `e10adc3949ba59abbe56e057f20f883e`  
163 - - **curl示例**:  
164 - ```bash  
165 - curl -X POST "http://localhost:2011/api/oauth/Login" \  
166 - -H "Content-Type: application/x-www-form-urlencoded" \  
167 - -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e"  
168 - ```  
169 - - **返回格式**:  
170 - ```json  
171 - {  
172 - "code": 200,  
173 - "msg": "操作成功",  
174 - "data": {  
175 - "theme": "functional",  
176 - "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",  
177 - "user": null  
178 - }  
179 - }  
180 - ```  
181 - - **token使用**: 返回的token已包含"Bearer "前缀,可直接在请求头中使用:`Authorization: {data.token}`  
182 -  
183 -  
184 -## 📊 数据一致性规范  
185 -  
186 -### 统计与列表数据  
187 -- **数据一致性**: 统计接口与列表接口使用相同的过滤条件、时间范围、权限控制  
188 -- **字段命名规范**: DTO字段名称、大小写必须完全一致  
189 -- **计算逻辑统一**: 统计数据计算逻辑与列表数据筛选逻辑保持一致  
190 -- **权限过滤**: 所有数据查询必须添加相同的园区权限过滤条件  
191 -- **分页一致性**: 统计接口和列表接口的分页参数和逻辑必须保持一致  
192 -  
193 -## 📝 代码质量规范  
194 -  
195 -### 代码风格  
196 -- **缩进**: 2 空格  
197 -- **行长度**: 单行 <= 120 字符  
198 -- **注释**: 关键逻辑必须添加注释  
199 -  
200 -### 代码审查  
201 -- **自检**: 提交前进行自检  
202 -- **审查**: 重要功能需代码审查  
203 -  
204 -## ⚠️ 特殊要求  
205 -  
206 -### 前端特殊要求  
207 -- 操作按钮必须左对齐,不要居中  
208 -- 统计卡片内容必须垂直居中  
209 -- 所有列表数据都要有图标显示,不同类型的图标需要有不同的颜色,但是颜色不能太多  
210 -- 没有信息的字段显示"无"  
211 -- 卡片高度统一为100px,内边距12px,圆角12px  
212 -- 弹窗、二级页面、复杂表单等必须单独创建 Vue 文件或封装成组件  
213 -- 禁止在主页面的 template 中直接编写弹窗内容或复杂交互逻辑  
214 -- 组件文件命名使用 kebab-case,如:user-dialog.vue、edit-form.vue  
215 -- 列表数据不能换行  
216 -  
217 -### 后端特殊要求  
218 -- 使用 WhereIF 条件查询避免 SQL 注入  
219 -- 关键方法必须添加 XML 注释  
220 -- 统一异常处理,返回友好错误信息  
221 -- 系统内涉及状态、类型等固定值的字段必须使用枚举类型(enum)定义,禁止使用魔法数字或硬编码字符串;同时需为枚举成员添加 XML 注释,保证可读性与可维护性  
222 -- 不需要在NCC.API创建controller,因为Extend里面的service都是可以直接使用的  
223 -  
224 -## 🚨 强制约束  
225 -  
226 -### 环境要求  
227 -1. **Node.js版本**: 必须使用16.20.2版本,项目在Node 18下会失败  
228 -2. **API传参**: GET请求使用data字段传参,不使用params  
229 -  
230 -### 功能要求  
231 -3. **权限控制**: 所有数据查询必须添加园区权限过滤  
232 -4. **数据一致性**: 统计数据和列表数据必须使用相同的过滤条件  
233 -5. **UI一致性**: 所有页面必须使用统一的布局和样式规范  
234 -6. **错误处理**: 统一异常处理,返回友好错误信息  
235 -7. **性能优化**: 所有列表接口支持分页,避免大数据量查询  
236 -8. **安全防护**: 使用SqlSugar ORM防止SQL注入,前端数据渲染时进行HTML转义  
237 -9. **数据库文档**: 所有数据库表结构、字段说明、关联关系必须记录到数据库说明文档中  
238 -10. **ID生成规范**: 所有实体ID的生成都必须使用 `YitIdHelper.NextId().ToString()`,禁止使用 `Guid.NewGuid().ToString()` 或其他ID生成方式  
239 -11.**说明文档规范**:没有要求生成新的md文件的时候,严禁生成新md文件。  
240 -  
241 -## 📋 重要变更记录  
242 -  
243 -### 已弃用的表  
244 -- **lq_ryzl (人员资料表) 已弃用**: 人员信息现在统一使用系统用户表 `BASE_USER` 管理  
245 -- **lq_mdxx_mdgs (门店归属表) 已弃用**: 门店归属信息已整合到 `lq_mdxx` 表中