---
inclusion: always
---
## 基础设置
1. 保持对话语言为中文/英文
2. 根据当前的操作系统环境确定要使用的是什么类型的操作命令，Mac或者Windows系统的操作命令是不一样的
3. 执行终端命令时要关注执行情况，避免无效等待

## 代码规范
4. 生成代码时必须添加类级和函数级注释
5. 使用import导包，禁止使用全限定名称引用类
6. 禁止使用枚举类型作为entity、request、response、dto对象的字段类型
7. 新增数据的id使用已存在的雪花算法生成器生成

## 架构规范
8. 所有开发必须遵循当前项目规范
9. Controller层禁止添加业务逻辑
10. 使用全局异常处理，禁止使用try-catch
11. 前端接口访问尽可能走网关调用

## 接口设计规范
12. Controller层接口定义要完整：
    - 入参使用request封装传递到service层
    - service层的方法命名与controller层定义的接口的方法名称保持一致
    - 出参使用response封装由service层传递到controller层
    - 禁止在controller层做entity/domain对象与request/response的转换
    - 使用项目已有的Result做接口返回
13. 接口和方法参数不允许超过两个，超过时使用request或DTO对象封装
14. Controller层路由禁止添加/api前缀
15. Controller层接口的Mapping注解value属性值不允许重复且不允许为空
16. 用户相关接口禁止直接传递用户id，需要后端根据token获取当前登录用户信息
17. Controller层接口的Mapping注解(PostMapping、GetMapping、PutMapping、DeleteMapping等)的value属性值要简洁明了，与接口作用相关，名称不宜过长，使用驼峰结构命名
18. 禁止使用/{param}格式的路径参数，避免网关路由冲突和分发错误
19. 所有接口注解必须明确指定value属性，不允许使用空注解
20. 路径参数统一使用@RequestParam而非@PathVariable，确保网关分发准确性
21. 接口路径命名应具有明确的语义，避免使用通用词汇如/get、/list等
22. 批量操作接口应使用专门的Request对象封装参数，而非直接传递List
23. 接口路径应避免层级过深，建议不超过3级路径结构
24. 更新操作应直接使用封装了ID和其他数据的Request对象，而不是单独传递ID参数。Service层方法应保持参数简洁，业务逻辑所需数据应全部包含在Request对象中

## 环境配置

25. 为不同环境(local、dev、prod)创建单独配置文件，部署时通过参数选择
26. 启动服务时禁止擅自修改端口号，使用配置文件中的端口设置

## 数据库规范

27. 所有数据表必须包含创建时间(create_time)和更新时间(update_time)字段
28. 删除操作优先使用逻辑删除，添加deleted字段标识
29. 数据库字段命名使用下划线分隔，Java实体类使用驼峰命名
30. 优先使用LambdaQueryWrapper构造条件查询，避免硬编码字段名
31. 使用Lambda表达式引用实体类属性，提高代码可维护性和类型安全
32. 复杂查询条件应使用LambdaQueryWrapper的链式调用，保持代码清晰
33. 避免在查询条件中使用字符串字段名，防止字段名变更导致的运行时错误

## 安全规范

34. 所有外部输入必须进行参数校验
35. 敏感信息不得在日志中输出
36. 数据库操作必须使用参数化查询，防止SQL注入

## 性能规范

37. 避免N+1查询问题，合理使用批量查询
38. 大数据量查询必须分页处理
39. 缓存策略要考虑数据一致性问题

## 日志规范

40. 关键业务操作必须记录操作日志
41. 异常信息要包含足够的上下文信息
42. 生产环境禁止输出debug级别日志

## 修改规范

43. 代码修改时，只修改用户指定的业务逻辑和代码，解决用户指定的问题，不得随意修改其他无关代码

