# Deploy Ease Platform V2 设计文档

## 一、系统概述

### 1.1 系统目标
- 构建一个高度可扩展的自动化部署平台
- 支持灵活的工作流配置和审批流程
- 实现多环境、多租户的部署管理
- 提供完整的日志追踪和监控能力

### 1.2 核心功能
1. 项目管理
   - 项目集管理
   - 项目配置
   - Git仓库集成
   - Jenkins集成

2. 环境管理
   - 环境配置
   - 环境克隆
   - 环境变量管理
   - 权限控制

3. 工作流引擎
   - 流程设计
   - 节点执行
   - 状态管理
   - 日志追踪

4. 审批系统
   - 审批流程定义
   - 审批规则配置
   - 审批节点管理
   - 审批记录追踪

5. 配置中心
   - Nacos配置管理
   - 配置同步
   - 版本控制
   - 变更追踪

## 二、技术架构

### 2.1 技术选型
- 后端框架：Spring Boot 3.2.0
- Java版本：JDK 21
- ORM框架：JPA + QueryDSL
- 安全框架：Spring Security + JWT
- 数据库：MySQL 8.0
- 缓存：Redis
- 消息队列：RabbitMQ
- 服务注册：Nacos

### 2.2 系统架构
1. 微服务架构
   - 网关服务
   - 认证服务
   - 工作流引擎
   - 审批服务
   - 配置中心

2. 分层架构
   - 接口层（Controller）
   - 业务层（Service）
   - 数据访问层（Repository）
   - 领域模型层（Domain）

3. 插件化架构
   - 节点插件
   - 审批插件
   - 通知插件

## 三、数据库设计

### 3.1 核心表设计
{{ ... }}

### 3.2 工作流相关表
{{ ... }}

### 3.3 审批系统表
1. 审批定义表（sys_approval_definition）
   - 基础字段（id, tenant_id等）
   - 流程编码（code）
   - 流程名称（name）
   - 流程描述（description）
   - 业务类型（business_type）
   - 节点配置（node_config）
   - 表单配置（form_config）

2. 审批流程表（sys_approval_flow）
   - 基础字段
   - 业务类型（business_type）
   - 业务键（business_key）
   - 模板编码（template_code）
   - 当前节点（current_node）
   - 流程状态（status）
   - 流程变量（variables）

3. 审批节点表（sys_approval_node）
   - 基础字段
   - 流程ID（flow_id）
   - 节点编码（node_code）
   - 节点名称（node_name）
   - 节点类型（node_type）
   - 审批人类型（approver_type）
   - 审批人列表（approver_ids）
   - 节点状态（status）
   - 执行时间（start_time, end_time）

4. 审批意见表（sys_approval_comment）
   - 基础字段
   - 流程ID（flow_id）
   - 节点ID（node_id）
   - 审批人（user_id）
   - 审批动作（action）
   - 审批意见（comment）
   - 附件信息（attachments）

## 四、审批系统设计

### 4.1 审批系统架构
1. 核心组件
   - 审批引擎（ApprovalEngine）
   - 审批规则解析器（RuleParser）
   - 审批节点执行器（NodeExecutor）
   - 审批事件总线（EventBus）

2. 扩展点
   - 审批规则插件
   - 审批节点类型
   - 审批表单定义
   - 审批通知方式

### 4.2 审批流程设计
1. 流程定义
   ```json
   {
     "nodes": [
       {
         "id": "start",
         "type": "start",
         "next": "approve1"
       },
       {
         "id": "approve1",
         "type": "approve",
         "config": {
           "approverType": "ROLE",
           "approverIds": ["ROLE_LEADER"],
           "counterSign": false
         },
         "next": "approve2"
       },
       {
         "id": "approve2",
         "type": "approve",
         "config": {
           "approverType": "USER",
           "approverIds": ["user1", "user2"],
           "counterSign": true
         },
         "next": "end"
       },
       {
         "id": "end",
         "type": "end"
       }
     ]
   }
   ```

2. 审批规则
   ```json
   {
     "rules": [
       {
         "condition": {
           "field": "environment",
           "operator": "equals",
           "value": "PROD"
         },
         "template": "PROD_DEPLOY_APPROVAL"
       },
       {
         "condition": {
           "field": "changeType",
           "operator": "in",
           "value": ["CONFIG", "DATABASE"]
         },
         "template": "CHANGE_APPROVAL"
       }
     ]
   }
   ```

### 4.3 审批流程实现
1. 流程启动
   - 规则匹配
   - 创建流程实例
   - 初始化节点
   - 发送通知

2. 节点执行
   - 权限校验
   - 节点执行
   - 状态更新
   - 下一节点

3. 流程结束
   - 结果处理
   - 状态更新
   - 通知相关人

### 4.4 与工作流集成
1. 工作流定义扩展
   ```json
   {
     "nodes": [
       {
         "id": "deploy",
         "type": "deploy",
         "config": {
           "approval": {
             "enabled": true,
             "template": "DEPLOY_APPROVAL"
           }
         }
       }
     ]
   }
   ```

2. 节点执行器实现
   ```java
   public class DeployNodeExecutor implements NodeExecutor {
       @Override
       public void execute(NodeInstance node) {
           // 1. 检查是否需要审批
           if (needApproval(node)) {
               // 2. 创建审批流程
               createApprovalFlow(node);
               // 3. 暂停节点执行
               node.suspend();
               return;
           }
           // 4. 执行部署
           executeDeploy(node);
       }
   }
   ```

## 五、系统特性

### 5.1 多租户支持
1. 数据隔离
   - 租户ID字段
   - 查询过滤
   - 权限控制

2. 资源隔离
   - 独立配置
   - 独立存储
   - 独立缓存

### 5.2 插件化设计
1. 节点插件
   - Git操作
   - Jenkins构建
   - 配置同步
   - 数据库变更

2. 审批插件
   - 角色审批
   - 用户审批
   - 条件审批
   - 自动审批

### 5.3 安全特性
1. 认证授权
   - JWT认证
   - RBAC权限
   - 租户隔离

2. 数据安全
   - 敏感信息加密
   - 操作审计
   - 数据备份

### 5.4 可观测性
1. 日志管理
   - 操作日志
   - 审计日志
   - 性能日志

2. 监控告警
   - 系统监控
   - 业务监控
   - 异常告警

## 六、部署架构

### 6.1 系统部署
1. 容器化部署
   - Docker镜像
   - K8s编排
   - 服务网格

2. 高可用设计
   - 多副本
   - 负载均衡
   - 故障转移

### 6.2 数据存储
1. 数据库
   - 主从复制
   - 数据备份
   - 分库分表

2. 文件存储
   - 分布式存储
   - 文件备份
   - 访问控制

## 七、后续规划

### 7.1 功能增强
1. 审批功能
   - 移动端审批
   - 审批委托
   - 审批催办

2. 部署功能
   - 灰度发布
   - 回滚机制
   - 批量部署

### 7.2 性能优化
1. 系统性能
   - 缓存优化
   - SQL优化
   - 并发处理

2. 用户体验
   - 响应速度
   - 操作便捷
   - 界面优化
