# 用户管理工单流程

**工单类型代码**: `user_management`  
**来源模块**: rmdc-user-auth  
**编制日期**: 2026-01-08

---

## 1. 业务场景

非超级管理员用户对已注册用户进行管理操作（修改、删除、启用、禁用）时，需要经过超级管理员审批。

### 1.1 业务规则

| 规则项 | 说明 |
|-------|------|
| 发起人 | 管理员、普通用户（只能管理自己注册的用户） |
| 默认处理人 | 超级管理员 |
| 操作类型 | `modify`(修改)、`delete`(删除)、`enable`(启用)、`disable`(禁用) |
| 可撤销 | 是（创建人可撤销） |
| 可关闭 | 是（创建人可主动关闭） |

### 1.2 权限矩阵

| 操作人角色 | 可管理用户范围 |
|-----------|--------------|
| 超级管理员 | 所有用户（无需工单） |
| 管理员 | 普通用户、三方用户（自己注册的） |
| 普通用户 | 三方用户（自己注册的） |
| 三方用户 | 无 |

---

## 2. 状态机

### 2.1 状态定义

| 状态代码 | 状态名称 | 说明 |
|---------|---------|------|
| `created` | 已创建 | 发起用户管理操作，工单创建 |
| `pending_review` | 待审核 | 等待超级管理员审核 |
| `approved` | 已通过 | 审核通过，管理操作已执行 |
| `rejected` | 已拒绝 | 审核拒绝 |
| `returned` | 已打回 | 打回修改 |
| `revoked` | 已撤销 | 用户撤销管理操作 |
| `closed` | 已关闭 | 工单生命周期结束 |

### 2.2 状态机图

```mermaid
stateDiagram-v2
    [*] --> created: 发起管理操作
    
    created --> pending_review: 提交审核
    created --> revoked: 用户撤销
    created --> closed: 用户关闭
    
    pending_review --> approved: 超管审批通过
    pending_review --> rejected: 超管审批拒绝
    pending_review --> returned: 超管打回
    pending_review --> revoked: 用户撤销(需确认)
    
    returned --> pending_review: 重新提交
    returned --> revoked: 用户撤销
    returned --> closed: 用户关闭
    
    rejected --> closed: 关闭工单
    approved --> closed: 关闭工单
    revoked --> closed: 关闭工单
    
    closed --> [*]
    
    note right of approved: 执行管理操作
    note right of closed: 退出用户编辑状态
```

---

## 3. 流程图

```mermaid
flowchart TD
    Start([开始]) --> InitiateManage[发起用户管理操作]
    InitiateManage --> SelectAction{选择操作类型}
    
    SelectAction -->|修改| ModifyAction[修改用户信息]
    SelectAction -->|删除| DeleteAction[删除用户]
    SelectAction -->|启用| EnableAction[启用用户]
    SelectAction -->|禁用| DisableAction[禁用用户]
    
    ModifyAction --> CreateWorkflow[创建管理工单]
    DeleteAction --> CreateWorkflow
    EnableAction --> CreateWorkflow
    DisableAction --> CreateWorkflow
    
    CreateWorkflow --> EnterEditMode[用户进入编辑状态]
    EnterEditMode --> SubmitReview[提交审核]
    
    SubmitReview --> PendingReview{待审核}
    
    PendingReview -->|审批通过| Approve[审批通过]
    PendingReview -->|审批拒绝| Reject[直接拒绝]
    PendingReview -->|打回| Return[打回修改]
    PendingReview -->|用户撤销| Revoke[撤销工单]
    
    Approve --> ExecuteAction[执行管理操作]
    ExecuteAction --> UpdateDB[更新数据库]
    UpdateDB --> ExitEditMode1[退出编辑状态]
    ExitEditMode1 --> CloseApproved[关闭工单]
    CloseApproved --> End([结束])
    
    Return --> UserModify{用户修改操作}
    UserModify -->|重新提交| SubmitReview
    UserModify -->|放弃操作| CloseFromReturn[关闭工单]
    
    Reject --> ExitEditMode2[退出编辑状态]
    ExitEditMode2 --> ClosedRejected[关闭工单]
    ClosedRejected --> End
    
    Revoke --> ExitEditMode3[退出编辑状态]
    ExitEditMode3 --> ClosedRevoked[关闭工单]
    ClosedRevoked --> End
    
    CloseFromReturn --> ExitEditMode4[退出编辑状态]
    ExitEditMode4 --> End
```

---

## 4. 时序图

```mermaid
sequenceDiagram
    autonumber
    
    participant User as 管理人
    participant Frontend as 前端
    participant UserAuth as rmdc-user-auth
    participant Workflow as rmdc-work-procedure
    participant SuperAdmin as 超级管理员
    participant Notice as 通知中心
    
    %% 发起管理操作
    User->>Frontend: 点击编辑/删除/启用/禁用
    Frontend->>UserAuth: 校验管理权限
    UserAuth-->>Frontend: 权限校验通过
    Frontend->>Workflow: POST /api/workflow/create
    Note over Workflow: 创建user_management工单<br/>保存original_data快照
    Workflow->>UserAuth: 标记用户进入编辑状态
    Workflow-->>Frontend: 工单创建成功
    Frontend-->>User: 进入编辑模式
    
    %% 用户修改并提交
    User->>Frontend: 修改信息/确认操作
    Frontend->>Workflow: POST /api/workflow/transition
    Note over Workflow: event=submit<br/>保存modified_data
    Workflow->>Workflow: 设置status=pending_review
    Workflow->>Notice: 推送通知
    Notice-->>SuperAdmin: 用户管理审批通知
    
    %% 审批通过场景
    alt 审批通过
        SuperAdmin->>Frontend: 查看工单详情
        Frontend->>Workflow: POST /api/workflow/detail
        Workflow-->>Frontend: 返回工单信息+变更对比
        SuperAdmin->>Frontend: 点击通过
        Frontend->>Workflow: POST /api/workflow/transition
        Note over Workflow: event=approve
        Workflow->>UserAuth: 回调执行管理操作
        UserAuth->>UserAuth: 根据action_type执行操作
        Workflow->>UserAuth: 清除用户编辑状态
        Workflow->>Workflow: 设置status=approved
        Workflow->>Notice: 推送通知
        Notice-->>User: 管理操作已通过
    
    %% 打回场景
    else 打回修改
        SuperAdmin->>Frontend: 点击打回
        Frontend->>Workflow: POST /api/workflow/transition
        Note over Workflow: event=return<br/>附带修改意见
        Workflow->>Workflow: 设置status=returned
        Workflow->>Notice: 推送通知
        Notice-->>User: 管理操作被打回
        
        User->>Frontend: 根据意见修改
        Frontend->>Workflow: POST /api/workflow/transition
        Note over Workflow: event=resubmit
        Workflow->>Workflow: 设置status=pending_review
    
    %% 用户关闭场景
    else 用户主动关闭
        User->>Frontend: 点击关闭工单
        Frontend->>Workflow: POST /api/workflow/close
        Workflow->>UserAuth: 清除用户编辑状态
        Workflow->>Workflow: 设置status=closed
        Note over Workflow: 放弃所有修改
    end
```

---

## 5. 工单步骤定义

| 步骤序号 | 步骤名称 | 步骤类型 | 处理人 | 操作说明 |
|---------|---------|---------|-------|---------|
| 1 | 提交管理操作 | `submit` | 创建人 | 提交管理操作审核 |
| 2 | 审核管理操作 | `approve` | 超级管理员 | 审批通过/拒绝/打回 |

---

## 6. 业务扩展字段

存储于 `user_management_ext` 表：

| 字段 | 类型 | 说明 |
|-----|------|------|
| `target_user_id` | BIGINT | 被管理用户ID |
| `action_type` | VARCHAR(32) | 操作类型：modify/delete/enable/disable |
| `original_data` | JSON | 变更前数据快照 |
| `modified_data` | JSON | 期望变更数据 |

### 6.1 original_data / modified_data 示例

```json
{
  "username": "zhangsan",
  "chinese_name": "张三",
  "email": "zhangsan@example.com",
  "phone": "13800138000",
  "group_name": "产品与解决方案组",
  "dev_role": "backend",
  "rmdc_role": "normal"
}
```
