- 作为Java编程、Spring Boot、Spring Framework、Maven、JUnit和相关Java技术专家，需要实现企业应用级别的高性能管理框架

### 严格遵循要求
- 不要随意删除代码，请先详细浏览下现在所有的代码，再进行询问修改，得到确认再修改。
- 首先一步一步思考，详细描述伪代码构建计划，确认后再写代码
- 遵循正确、最佳实践、DRY原则、无错误、功能齐全的代码编写原则
- 专注于简单易读的代码实现，确保代码完整性
- 包含所有必需的导入包，确保关键组件正确命名
- 如遇不确定答案或不知道答案，应明确说明而非猜测
- 可提出合理化建议，但需等待确认
- 对新设计的实体类、字段、方法添加注释，实际逻辑需要逻辑注释
- 新增或者修改数据库表需在V1.0.0__init_schema.sql、V1.0.1__init_data.sql中补充表结构和初始化数据，不要随意删除。

### 包结构规范
- 框架包路径(com.qqchen.deploy.backend.framework)：包含annotation、api、audit、controller等多个子包
- 系统业务路径(com.qqchen.deploy.backend.system)：包含api、controller、converter、entity等多个子包
- 工作流业务路径(com.qqchen.deploy.backend.workflow)：包含api、controller、converter、entity等多个子包

### 数据对象规范
- DTO设计：简单CRUD使用统一DTO，复杂场景使用专门Request/Response，继承BaseDTO获取基础字段
- 验证规则：使用Jakarta Validation注解，支持自定义验证注解和分组验证
- 对象转换：使用MapStruct进行转换，继承BaseConverter，显式声明特殊映射

### Service层规范
- 简单CRUD继承com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl，复杂业务需定义专门接口和实现，包含事务控制和异常处理
- 使用@Transactional注解控制事务，合理设置事务传播机制和隔离级别
- 实现乐观锁(@Version)或悲观锁(findByIdWithLock)进行并发控制
- 使用@Resource 注入其他BEAN，不要使用构造方法
- 示例
@Slf4j
@Service
@ServiceType(DATABASE)
public class ExternalSystemServiceImpl extends BaseServiceImpl<ExternalSystem, ExternalSystemDTO, ExternalSystemQuery, Long>
    implements IExternalSystemService {

    @Override
    @Transactional
    public boolean testConnection(Long id) {
        // 业务实现
    }
}

### Controller层规范
- REST接口使用com.qqchen.deploy.backend.framework.controller.BaseController，三方接口命名为模块名ApiController，二方接口为模块名Controller
- 返回值com.qqchen.deploy.backend.framework.api.Response<T>
- 统一使用GlobalExceptionHandler处理异常
- 使用@Resource 注入其他BEAN，不要使用构造方法
- 示例：
@Slf4j
@RestController
@RequestMapping("/api/v1/external-system")
@Tag(name = "外部系统管理", description = "外部系统管理相关接口")
public class ExternalSystemApiController extends BaseController<ExternalSystem, ExternalSystemDTO, Long, ExternalSystemQuery> {

    //特殊方法实现，其他的均可使用父类BaseController
    @Operation(summary = "测试连接")
    @GetMapping("/{id}/test-connection")
    public Response<Boolean> testConnection(
        @Parameter(description = "系统ID", required = true) @PathVariable Long id
    ) {
        return Response.success(externalSystemService.testConnection(id));
    }
}

### Repository层规范
- 继承com.qqchen.deploy.backend.framework.repository.IBaseRepository，定义特定查询方法
- 使用JPA命名规范定义查询方法
- 复杂查询使用@Query注解
- 示例：
@Repository
public interface IExternalSystemRepository extends IBaseRepository<ExternalSystem, Long> {
    boolean existsByNameAndDeletedFalse(String name);
}
### Converter规范
- 继承com.qqchen.deploy.backend.framework.converter.BaseConverter，遵循以下规则：
  1. 简单场景（字段完全匹配）示例：
  ```java
  @Mapper(config = BaseConverter.class)
  public interface ExternalSystemConverter extends BaseConverter<ExternalSystem, ExternalSystemDTO> {
      // 字段完全匹配时无需额外配置
  }
  ```
  2. 复杂场景（需要特殊映射）示例：
  ```java
  @Mapper(config = BaseConverter.class)
  public interface UserConverter extends BaseConverter<User, UserDTO> {
      @Mapping(target = "departmentId", source = "department.id")
      @Mapping(target = "departmentName", source = "department.name")
      UserDTO toDto(User entity);
  }
  ```
### 查询规范
- 简单查询使用com.qqchen.deploy.backend.framework.query.BaseQuery
- 复杂查询需要：
  继承BaseQuery,使用@QueryField注解标注查询字段指定查询类型
- 示例：
```java
@Data
@EqualsAndHashCode(callSuper = true)
public class ExternalSystemQuery extends BaseQuery {
    @QueryField(field = "name", type = QueryType.LIKE)
    private String name;

    @QueryField(field = "type")
    private SystemType type;
}
```

### Entity规范
- 继承com.qqchen.deploy.backend.framework.model.Entity<ID>，使用@jakarta.persistence.Entity注解
- 示例：
```java
@Data
@EqualsAndHashCode(callSuper = true)
@jakarta.persistence.Entity
@Table(name = "sys_external_system")
@LogicDelete
public class ExternalSystem extends Entity<Long> {
    @Column(nullable = false)
    private String name;
}
```

### 枚举规范
- 新增加枚举应添加到com.qqchen.deploy.backend.enums，后缀以Enum结尾
- 增加枚举时，不要修改现有没有，只追加即可

### 异常规范
- 异常分为系统异常应继承com.qqchen.deploy.backend.framework.exception.SystemException和业务异常应承com.qqchen.deploy.backend.framework.exception.BusinessException，使用ResponseCode定义错误码，在messages.properties中定义错误消息
- 示例
throw new BusinessException(ResponseCode.EXTERNAL_SYSTEM_DISABLED);

### 命名规范
- 类名使用PascalCase（UserApiController、OrderApiService）
- 方法和变量名使用camelCase（findUserById、isOrderValid）
- 常量使用ALL_CAPS（MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE）
- Service、Repository接口类以I开头，实现类需要Impl结尾

### 数据库规范
- 使用Flyway进行版本控制，新表结构写入V1.0.0__init_schema.sql，初始数据写入V1.0.1__init_data.sql
- 表名和字段名使用下划线命名法（sys_user, create_time）
- 必须包含基础字段：id, create_time, create_by, update_time, update_by, version, deleted

### 错误码规范
- 系统级错误(1xxx)：1000-1099通用系统错误，1100-1199依赖注入错误，1200-1299数据库错误
- 业务级错误(2xxx)：2000-2099通用业务错误，2100-2199角色相关，2200-2299 JWT相关等
- 错误码命名使用大写字母和下划线，采用"模块_操作_错误"命名方式
- 示例：throw new BusinessException(ResponseCode.ROLE_ADMIN_CANNOT_UPDATE);

### 缓存使用规范
- 使用@Cacheable(查询)、@CachePut(更新)、@CacheEvict(删除)注解
- 缓存Key格式：模块:业务:标识，如user:info:1
- 根据业务场景选择缓存策略：Cache Aside、Write Through、Write Back

### 安全规范
- JWT Token包含Header(算法)、Payload(用户信息)、Signature(签名)
- Access Token有效期2小时，Refresh Token有效期7天
- 敏感数据加密存储和传输，日志和接口返回需脱敏

### 测试规范
- Service层：使用@SpringBootTest和@MockBean，测试所有业务场景
- Controller层：使用@WebMvcTest或MockMvc，测试所有接口路径
- Repository层：使用@DataJpaTest，测试所有查询方法

### 文档规范
- 类注释：说明用途、作者、版本
- 方法注释：说明参数、返回值、异常
- API文档：使用Swagger注解，保持文档同步更新

### 性能优化规范
- 数据库优化：索引设计、SQL优化、分页查询
- 代码优化：循环优化、集合操作、字符串处理
- 缓存优化：合理设置缓存粒度、更新策略、防止缓存穿透