# 项目强制约束：RuoYi-Vue + SpringBoot + MyBatis-Plus + 达梦DM8数据库
## 1. 框架架构约束（若依标准）
1. 严格遵循RuoYi-Vue前后端分层：controller/service/mapper/entity/dto
2. 实体必须继承 BaseEntity，自带del_flag、create_by、create_time、update_by、update_time、dept_id
3. 列表查询方法必须加 @DataScope 数据权限注解，deptAlias、userAlias必填
4. Controller统一继承 BaseController，返回 AjaxResult，禁止直接返回实体
5. 分页统一使用 PageUtils.startPage() + getDataTable，分页插件DbType固定DM
6. 新增/修改统一使用 @Valid 入参校验，自定义校验注解实现业务规则
7. 异常统一抛 RuoYiException，禁止裸try-catch只打印日志不抛出

## 2. 达梦DM8数据库SQL强制约束（最关键）
1. 禁用MySQL专属函数：FIND_IN_SET、REPLACE INTO、LIMIT、IFNULL、DATE_FORMAT
   - FIND_IN_SET → INSTR(?, 字段) > 0
   - REPLACE INTO → MERGE INTO 达梦语法
   - LIMIT → OFFSET ... FETCH NEXT ... ROWS ONLY
   - IFNULL → NVL，DATE_FORMAT → TO_CHAR
2. 主键策略：禁用MySQL自增auto_increment，全部使用达梦SEQUENCE序列生成ID
3. 建表DDL规范：
   - 字段名统一小写，达梦表字段不加反引号`，不使用``包裹字段
   - 字符串类型统一 VARCHAR2，日期 DATE/DATETIME，大文本 CLOB
   - 必加逻辑删除字段 del_flag CHAR(1) DEFAULT '0'
   - 权限字段 dept_id BIGINT、create_by BIGINT 必须存在业务表
4. MyBatis-Plus配置强制：分页插件 DbType.DM，禁止默认MYSQL
5. 禁止写SELECT *，必须显式列出查询字段
6. 批量操作禁止无条件UPDATE/DELETE，开启BlockAttackInnerInterceptor防全表更新

## 3. 数据源与驱动约束
1. pom必须引入达梦驱动 com.dameng:Dm7JdbcDriver18，移除mysql-connector
2. druid数据源配置：driverClassName=dm.jdbc.driver.DmDriver
   url=jdbc:dm://127.0.0.1:5236/库名?schema=SYSDBA
3. 不使用MySQL专属配置，时区、zeroDateTimeBehavior等参数删除

## 4. 代码生成器约束（Trae生成CRUD时强制）
1. 生成mapper.xml自动适配达梦分页、序列主键
2. 生成SQL脚本输出达梦DDL，不输出MySQL建表语句
3. 生成的Mapper接口禁止MySQL特有分页语法
4. 新增实体类自动添加序列注解 @KeySequence(value="SEQ_表名")

## 5. 安全与编码约束
1. SQL全部参数化查询，禁止字符串拼接SQL防注入
2. 日志使用 org.slf4j.Logger，禁止System.out/System.err
3. 公共方法必须写JavaDoc，controller接口加@ApiOperation
4. 禁止字段注入@Autowired，统一构造器注入
5. 敏感数据（手机号、身份证）入库前脱敏，查询返回脱敏

## 6. 禁止行为（AI生成代码绝对不能出现）
- 任何MySQL专属SQL语法、函数、关键字
- 自增主键auto_increment、`反引号包裹字段
- 硬编码数据库连接、账号密码
- 无@DataScope的业务列表查询接口
- 裸SELECT *、无WHERE的update/delete
- 不用达梦序列，使用mysql自增逻辑