Compare commits
2 Commits
master
...
cursor/gen
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e36213d7e9 | ||
![]() |
e3a08b82a9 |
220
rules.md
Normal file
220
rules.md
Normal file
@@ -0,0 +1,220 @@
|
||||
# 若依Vue Pro 项目开发规范
|
||||
|
||||
## 📖 项目概述
|
||||
|
||||
本项目是基于Spring Boot + Vue.js的企业级后台管理系统,采用前后端分离架构,包含系统管理、工作流、支付、商城、CRM、ERP、AI大模型等多个业务模块。
|
||||
|
||||
## 🏗️ 架构规范
|
||||
|
||||
### 1. 模块化设计
|
||||
- **核心框架**:`yudao-framework` - 提供基础框架功能
|
||||
- **业务模块**:按业务领域划分,如 `yudao-module-system`、`yudao-module-bpm`等
|
||||
- **服务端**:`yudao-server` - 主服务启动模块
|
||||
- **依赖管理**:`yudao-dependencies` - 统一版本管理
|
||||
|
||||
### 2. 分层架构
|
||||
```
|
||||
Controller层 -> Service层 -> Manager层 -> DAO层
|
||||
```
|
||||
- **Controller**: 负责请求处理和响应
|
||||
- **Service**: 业务逻辑处理
|
||||
- **Manager**: 通用业务处理,可被多个Service调用
|
||||
- **DAO**: 数据访问层
|
||||
|
||||
### 3. 包结构规范
|
||||
```
|
||||
cn.iocoder.yudao.module.{module}
|
||||
├── controller # 控制器
|
||||
├── service # 业务逻辑
|
||||
├── manager # 通用业务
|
||||
├── dal # 数据访问层
|
||||
│ ├── dataobject # 数据对象
|
||||
│ ├── mapper # MyBatis Mapper
|
||||
│ └── redis # Redis操作
|
||||
├── convert # 对象转换
|
||||
├── vo # 视图对象
|
||||
│ ├── request # 请求对象
|
||||
│ └── response # 响应对象
|
||||
└── enums # 枚举类
|
||||
```
|
||||
|
||||
## 💻 代码规范
|
||||
|
||||
### 1. 命名规范
|
||||
- **类名**: 使用PascalCase,如 `UserController`、`UserService`
|
||||
- **方法名**: 使用camelCase,如 `getUserById`、`createUser`
|
||||
- **变量名**: 使用camelCase,如 `userId`、`userName`
|
||||
- **常量名**: 使用UPPER_SNAKE_CASE,如 `MAX_PAGE_SIZE`
|
||||
- **包名**: 使用小写,如 `controller`、`service`
|
||||
|
||||
### 2. 注解使用
|
||||
- **Controller**: 使用`@RestController`、`@RequestMapping`
|
||||
- **Service**: 使用`@Service`、`@Transactional`
|
||||
- **Validation**: 使用`@Valid`、`@NotNull`、`@NotEmpty`等
|
||||
- **API文档**: 使用`@Operation`、`@Parameter`等Swagger注解
|
||||
|
||||
### 3. 异常处理
|
||||
- 使用自定义异常类继承`ServiceException`
|
||||
- 统一异常码管理,在`ErrorCodeConstants`中定义
|
||||
- Controller层不处理异常,由全局异常处理器统一处理
|
||||
|
||||
### 4. 日志规范
|
||||
- 使用`@Slf4j`注解
|
||||
- 关键操作记录INFO级别日志
|
||||
- 异常记录ERROR级别日志
|
||||
- 调试信息使用DEBUG级别
|
||||
|
||||
## 🔧 开发规范
|
||||
|
||||
### 1. 数据库规范
|
||||
- **表名**: 使用小写下划线,如 `system_user`、`bpm_process`
|
||||
- **字段名**: 使用小写下划线,如 `user_id`、`create_time`
|
||||
- **主键**: 统一使用`id`作为主键,类型为`BIGINT`
|
||||
- **审计字段**: 每个表包含`creator`、`create_time`、`updater`、`update_time`、`deleted`
|
||||
|
||||
### 2. API设计规范
|
||||
- **RESTful**: 遵循RESTful API设计原则
|
||||
- **URL**: 使用小写字母和连字符,如 `/admin-api/system/users`
|
||||
- **HTTP方法**: GET(查询)、POST(新增)、PUT(修改)、DELETE(删除)
|
||||
- **响应格式**: 统一使用`CommonResult`包装响应数据
|
||||
|
||||
### 3. 数据传输对象
|
||||
- **DO (Data Object)**: 数据库实体对象,对应数据库表
|
||||
- **VO (View Object)**: 视图对象,用于前端展示
|
||||
- **DTO (Data Transfer Object)**: 数据传输对象,用于层间数据传输
|
||||
- **Convert**: 使用MapStruct进行对象转换
|
||||
|
||||
### 4. 分页查询
|
||||
- 统一使用`PageParam`作为分页参数基类
|
||||
- 查询条件继承`PageParam`
|
||||
- 返回结果使用`PageResult`包装
|
||||
|
||||
## 🛡️ 安全规范
|
||||
|
||||
### 1. 权限控制
|
||||
- 使用`@PreAuthorize`注解进行权限校验
|
||||
- 权限标识格式:`模块:操作`,如 `system:user:query`
|
||||
- 数据权限使用`@DataPermission`注解
|
||||
|
||||
### 2. 参数校验
|
||||
- Controller层使用`@Valid`进行参数校验
|
||||
- 自定义校验注解放在`validation`包下
|
||||
- 校验失败统一返回400错误码
|
||||
|
||||
### 3. 敏感数据
|
||||
- 密码使用BCrypt加密存储
|
||||
- 敏感信息不在日志中输出
|
||||
- API接口需要进行签名校验(如支付相关)
|
||||
|
||||
## 📝 文档规范
|
||||
|
||||
### 1. 代码注释
|
||||
- 类和方法使用JavaDoc注释
|
||||
- 复杂业务逻辑添加行内注释
|
||||
- 常量和枚举值添加注释说明
|
||||
|
||||
### 2. API文档
|
||||
- 使用Swagger/OpenAPI规范
|
||||
- Controller方法添加`@Operation`注解
|
||||
- 请求参数添加`@Parameter`注解
|
||||
- 响应模型添加`@Schema`注解
|
||||
|
||||
### 3. 数据库文档
|
||||
- 表和字段添加COMMENT注释
|
||||
- 使用工具自动生成数据库文档
|
||||
|
||||
## 🧪 测试规范
|
||||
|
||||
### 1. 单元测试
|
||||
- Service层业务逻辑编写单元测试
|
||||
- 测试覆盖率达到80%以上
|
||||
- 使用`@Test`、`@MockBean`等注解
|
||||
|
||||
### 2. 集成测试
|
||||
- Controller层编写集成测试
|
||||
- 使用`@SpringBootTest`和`MockMvc`
|
||||
- 测试核心业务流程
|
||||
|
||||
### 3. 测试数据
|
||||
- 使用`@Sql`注解准备测试数据
|
||||
- 测试后清理数据,避免相互影响
|
||||
|
||||
## 🚀 部署规范
|
||||
|
||||
### 1. 环境配置
|
||||
- **开发环境**: application-dev.yaml
|
||||
- **测试环境**: application-test.yaml
|
||||
- **生产环境**: application-prod.yaml
|
||||
|
||||
### 2. Docker化
|
||||
- 提供Dockerfile和docker-compose.yml
|
||||
- 镜像使用多阶段构建优化大小
|
||||
- 配置健康检查
|
||||
|
||||
### 3. 监控告警
|
||||
- 集成Spring Boot Actuator
|
||||
- 使用SkyWalking进行链路追踪
|
||||
- 配置日志收集和告警
|
||||
|
||||
## 📚 最佳实践
|
||||
|
||||
### 1. 性能优化
|
||||
- 合理使用缓存(Redis)
|
||||
- 数据库查询优化,避免N+1问题
|
||||
- 异步处理耗时操作
|
||||
- 使用连接池和对象池
|
||||
|
||||
### 2. 代码质量
|
||||
- 遵循SOLID设计原则
|
||||
- 使用设计模式解决复杂问题
|
||||
- 定期进行代码Review
|
||||
- 使用静态代码分析工具
|
||||
|
||||
### 3. 安全防护
|
||||
- 防SQL注入、XSS攻击
|
||||
- 使用HTTPS协议
|
||||
- 接口限流和防刷
|
||||
- 敏感操作日志记录
|
||||
|
||||
### 4. 多租户设计
|
||||
- 使用`@TenantIgnore`忽略租户过滤
|
||||
- 租户数据隔离
|
||||
- 租户配置管理
|
||||
|
||||
## 🔄 版本管理
|
||||
|
||||
### 1. Git规范
|
||||
- **分支策略**: Git Flow工作流
|
||||
- **提交消息**: 格式为 `type(scope): description`
|
||||
- **Tag**: 版本发布使用语义化版本号
|
||||
|
||||
### 2. 发布流程
|
||||
- 功能开发在feature分支
|
||||
- 合并到develop分支进行集成测试
|
||||
- 发布时合并到master分支
|
||||
- 使用CI/CD自动化部署
|
||||
|
||||
## 📋 检查清单
|
||||
|
||||
### 开发完成检查
|
||||
- [ ] 代码符合命名规范
|
||||
- [ ] 添加必要的注释和文档
|
||||
- [ ] 编写单元测试
|
||||
- [ ] API文档更新
|
||||
- [ ] 权限配置正确
|
||||
- [ ] 异常处理完善
|
||||
- [ ] 日志记录适当
|
||||
|
||||
### 发布前检查
|
||||
- [ ] 功能测试通过
|
||||
- [ ] 性能测试达标
|
||||
- [ ] 安全测试通过
|
||||
- [ ] 部署文档更新
|
||||
- [ ] 监控配置完成
|
||||
- [ ] 回滚方案准备
|
||||
|
||||
---
|
||||
|
||||
> 📖 本规范会随着项目发展持续更新,请及时关注最新版本。
|
||||
>
|
||||
> 💡 如有疑问或建议,请在项目Issues中提出。
|
Reference in New Issue
Block a user