Files
cattleTransportation/.cursor/rules/base/general.mdc

347 lines
10 KiB
Plaintext
Raw Normal View History

2025-11-04 09:38:19 +08:00
---
description: 牛只运输管理系统通用开发规范
globs:
alwaysApply: true
---
# 项目通用规范
## 项目信息
### 项目名称
- **中文名**:牛只运输管理系统
- **英文名**Cattle Transportation Management System
- **版本**1.0.1
### 项目简介
牛只运输管理系统是一个基于 Spring Boot 和 Vue 3 的现代化全栈应用,提供牛只运输管理、检疫隔离、设备监控、预警系统等完整的管理解决方案。
## 技术栈概览
### 后端技术栈
- **基础框架**Spring Boot 2.6.0 + Java 1.8
- **ORM 框架**MyBatis-Plus 3.5.3.2
- **权限认证**Sa-Token 1.37.0 + JWT
- **数据库**MySQL 5.7+ + Redis 5.0+
- **连接池**Druid 1.2.20
- **任务调度**XXL-Job
- **API 文档**Swagger Fox 3.0.0
- **工具库**Hutool 5.8.25
- **云服务**:腾讯云 COS、短信服务
### 前端技术栈
- **核心框架**Vue 3.2.37 + TypeScript 4.6.4
- **构建工具**Vite 3.1.0
- **状态管理**Pinia 2.0.22
- **路由管理**Vue Router 4.1.5
- **UI 组件**Element Plus 2.2.17
- **HTTP 客户端**Axios 0.27.2
- **地图服务**:百度地图
- **图表库**ECharts 5.5.0
## 项目结构规则
### 后端模块划分
- **aiotagro-core**:核心模块,包含通用工具类和基础类
- **aiotagro-redis**Redis 操作模块
- **aiotagro-cattle-trade**:主业务模块,包含所有业务逻辑
### 后端分层架构
- **Controller 层**:处理 HTTP 请求,参数校验,返回响应
- **Service 层**:业务逻辑处理,事务管理
- **Mapper 层**:数据访问层,执行 SQL 操作
- **Entity 层**:数据库实体映射
- **DTO 层**:数据传输对象,接收前端参数
- **VO 层**:视图对象,返回给前端的数据
### 前端模块划分
- **api/**API 接口定义,按业务模块划分
- **components/**:公共组件
- **views/**:页面组件
- **store/**Pinia 状态管理
- **router/**:路由配置
- **utils/**:工具函数
## 通用开发原则
### 代码质量
- **可测试性**:编写可测试的代码,组件应保持单一职责
- **DRY 原则**:避免重复代码,提取共用逻辑到单独的函数或类
- **代码简洁**:保持代码简洁明了,遵循 KISS 原则Keep It Simple, Stupid
- **命名规范**:使用描述性的变量、函数和类名,反映其用途和含义
- **注释文档**:为复杂逻辑添加注释,公共 API 编写文档注释
- **风格一致**:遵循项目或语言的官方风格指南和代码约定
### 架构设计
- **利用生态**:优先使用成熟的库和工具,避免不必要的自定义实现
- **架构设计**:考虑代码的可维护性、可扩展性和性能需求
- **异常处理**:正确处理边缘情况和错误,提供有用的错误信息
- **分层解耦**:严格遵守分层架构,避免跨层调用
- **接口编程**:面向接口编程,依赖抽象而非具体实现
### 版本控制
- **提交信息**:编写有意义的提交信息,保持逻辑相关的更改在同一提交中
- **分支管理**:使用 Git Flow 工作流main/master、develop、feature、hotfix
- **代码审查**:提交前进行代码自查,重要变更需要 Code Review
## 响应语言
- **始终使用中文回复用户**
- 代码注释使用中文
- 文档使用中文
- 变量和函数名使用英文
## 代码规范
### 后端代码规范Java
- **命名约定**
- 类名PascalCase如 `DeliveryController`
- 方法名camelCase如 `findUserById`
- 常量UPPER_CASE如 `MAX_RETRY_ATTEMPTS`
- 包名:小写,按功能模块划分
- **注释规范**
- 类注释:说明类的用途、作者、创建日期
- 方法注释JavaDoc 格式,说明参数、返回值、异常
- 复杂逻辑:添加行内注释解释
- **异常处理**
- 使用 Spring 全局异常处理器统一处理异常
- 业务异常使用自定义异常类
- 记录详细的错误日志
- **事务管理**
- 在 Service 层使用 `@Transactional` 注解
- 合理设置事务传播行为和隔离级别
- 只读操作使用 `readOnly = true`
### 前端代码规范Vue 3 + TypeScript
- **命名约定**
- 组件文件PascalCase 或 camelCase
- 变量和函数camelCase
- 常量UPPER_CASE
- 类型和接口PascalCase
- **组件规范**
- 使用 Vue 3 Composition API
- 组件保持单一职责
- Props 使用 TypeScript 类型定义
- 合理使用响应式数据ref、reactive
- **代码格式**
- 使用 ESLint 进行代码检查
- 使用 Prettier 进行代码格式化
- 缩进4 个空格
- 行宽150 字符
- 语句末尾使用分号
## 数据库规范
### 表命名规范
- 表名:小写,使用下划线分隔(如 `delivery`、`jbq_client_log`
- 字段名:小写,使用下划线分隔(如 `create_time`、`device_id`
- 主键:`id`(整型,自增)
- 外键:`<关联表名>_id`
### 字段规范
- **通用字段**
- `id`主键INT 或 BIGINT自增
- `create_time`创建时间DATETIME
- `update_time`更新时间DATETIME
- `created_by`创建人VARCHAR 或 INT
- `updated_by`更新人VARCHAR 或 INT
- `is_delete`逻辑删除标记TINYINT0-未删除1-已删除)
- **字段类型选择**
- 字符串VARCHAR指定长度或 TEXT超长文本
- 数值INT、BIGINT、DECIMAL精度要求高的数值
- 日期时间DATETIME、TIMESTAMP
- 布尔TINYINT(1)0-false1-true
- **字段约束**
- 合理使用 NOT NULL 约束
- 添加 DEFAULT 默认值
- 添加 COMMENT 注释说明
### 索引规范
- 主键自动创建索引
- 频繁查询的字段添加普通索引
- 多字段组合查询添加联合索引
- 唯一性约束使用唯一索引(如 `uk_license_plate`
### 迁移脚本规范
- 位置:`tradeCattle/aiotagro-cattle-trade/src/main/resources/db/migration/`
- 命名:`alter_<table_name>_<description>.sql`
- 内容:包含 `USE cattletrade;` 和详细注释
- 执行后:注释掉已执行的 DDL 语句,保留作为文档
## API 设计规范
### RESTful API 规范
- **URL 设计**
- 使用名词复数形式(如 `/api/deliveries`
- 避免动词(查询、创建等通过 HTTP 方法区分)
- 层次结构体现资源关系(如 `/api/deliveries/{id}/devices`
- **HTTP 方法**
- GET查询资源
- POST创建资源
- PUT完整更新资源
- PATCH部分更新资源
- DELETE删除资源
- **状态码**
- 200成功
- 201创建成功
- 400请求参数错误
- 401未认证
- 403无权限
- 404资源不存在
- 500服务器错误
### 响应格式
- **统一响应结构**
```json
{
"code": 200,
"msg": "操作成功",
"data": {...}
}
```
- **分页响应**
```json
{
"code": 200,
"msg": "查询成功",
"total": 100,
"rows": [...]
}
```
- **错误响应**
```json
{
"code": 400,
"msg": "参数校验失败:手机号格式不正确"
}
```
## 安全规范
### 认证授权
- 使用 Sa-Token 进行权限认证
- 接口需要添加权限注解(`@SaCheckPermission`
- 敏感接口添加登录检查(`@SaCheckLogin`
- Token 存储在 Redis 中,支持会话管理
### 数据安全
- 密码使用加密存储BCrypt
- 敏感数据传输使用 HTTPS
- SQL 注入防护:使用参数化查询
- XSS 防护:前端输出编码
- 文件上传:限制文件类型和大小
### 日志安全
- 不在日志中输出敏感信息(密码、身份证等)
- 记录关键操作日志(登录、修改、删除)
- 生产环境使用合适的日志级别INFO 或 WARN
## 性能优化规范
### 后端优化
- 使用数据库连接池Druid
- 合理使用缓存Redis
- 避免 N+1 查询问题
- 批量操作使用批处理
- 异步处理耗时操作
### 前端优化
- 组件懒加载
- 路由懒加载
- 图片懒加载
- 合理使用 computed 和 watch
- 避免不必要的响应式数据
### 数据库优化
- 合理使用索引
- 避免全表扫描
- 分页查询大数据量
- 定期清理历史数据
- 读写分离(如有需要)
## 测试规范
### 单元测试
- Service 层编写单元测试
- 测试覆盖率目标60% 以上
- 使用 JUnit 5 + Mockito后端
- 关键业务逻辑必须有单元测试
### 集成测试
- Controller 层编写集成测试
- 测试完整的业务流程
- 使用测试数据库
- 测试前清理数据
### 前端测试
- 工具函数编写单元测试
- 关键组件编写测试
- 使用 Jest + Vue Test Utils
## 日志规范
### 日志级别
- **ERROR**:系统错误,需要立即处理
- **WARN**:警告信息,可能影响系统运行
- **INFO**:重要业务信息,正常流程记录
- **DEBUG**:调试信息,开发环境使用
### 日志内容
- 关键操作日志:谁、在什么时间、做了什么、结果如何
- 异常日志:记录异常堆栈和上下文信息
- 性能日志:记录关键操作的执行时间
- 不记录敏感信息
## 部署规范
### 环境配置
- **开发环境**dev本地开发连接开发数据库
- **演示环境**demo用于演示和测试
- **生产环境**prod正式环境高可用配置
### 部署流程
1. 代码提交到 Git 仓库
2. 通过 CI/CD 自动构建
3. 运行自动化测试
4. 部署到目标环境
5. 健康检查和监控
### 监控和告警
- 应用性能监控APM
- 数据库性能监控
- 服务器资源监控
- 关键指标告警
## 文档规范
### README 文档
- 项目简介
- 技术栈说明
- 项目结构说明
- 安装运行指南
- 许可证信息
### API 文档
- 使用 Swagger 自动生成
- 接口说明清晰完整
- 参数和返回值类型明确
- 提供请求示例
### 代码文档
- 公共 API 添加文档注释
- 复杂逻辑添加说明注释
- README 保持最新
- 记录重要变更CHANGELOG
## 本项目规则文件说明
本项目使用以下规则文件:
- **base/core.mdc**:核心开发原则
- **base/tech-stack.mdc**:技术栈规范(本文件)
- **base/project-structure.mdc**:项目结构规范
- **base/general.mdc**:通用规范
- **languages/java.mdc**Java 开发规范
- **languages/typescript.mdc**TypeScript 开发规范
- **frameworks/springboot.mdc**Spring Boot 开发规范
- **frameworks/vuejs.mdc**Vue.js 开发规范
- **other/document.mdc**:文档规范
- **other/git.mdc**Git 提交规范