# 用户注册工单流程

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

---

## 1. 业务场景

非超级管理员用户注册新用户后，需要经过超级管理员审批才能激活用户账号。

### 1.1 业务规则

| 规则项 | 说明 |
|-------|------|
| 发起人 | 管理员、普通用户（根据权限可注册不同角色账号） |
| 默认处理人 | 超级管理员 |
| 被注册用户初始状态 | `disabled` |
| 审批通过后用户状态 | `active` |
| 可撤销 | 是（创建人可撤销） |
| 撤销后处理 | 硬删除被注册用户 |

---

## 2. 状态机

### 2.1 状态定义

| 状态代码 | 状态名称 | 说明 |
|---------|---------|------|
| `created` | 已创建 | 用户注册完成，工单自动创建 |
| `pending_review` | 待审核 | 等待超级管理员审核 |
| `approved` | 已通过 | 审核通过，用户已激活 |
| `rejected` | 已拒绝 | 审核拒绝，需重新修改 |
| `revoked` | 已撤销 | 用户取消注册 |
| `closed` | 已关闭 | 工单生命周期结束 |

### 2.2 状态机图

```mermaid
stateDiagram-v2
    [*] --> created: 用户注册
    
    created --> pending_review: 自动提交审核
    created --> revoked: 用户撤销
    
    pending_review --> approved: 超管审批通过
    pending_review --> rejected: 超管审批拒绝
    pending_review --> revoked: 用户撤销(需确认)
    
    rejected --> pending_review: 用户修改后重新提交
    rejected --> revoked: 用户撤销
    
    approved --> closed: 关闭工单
    rejected --> closed: 关闭工单
    revoked --> closed: 关闭工单
    
    closed --> [*]
    
    note right of approved: 自动激活用户
    note right of revoked: 硬删除用户
```

---

## 3. 流程图

```mermaid
flowchart TD
    Start([开始]) --> Register[用户注册新账号]
    Register --> CreateWorkflow[自动创建注册工单]
    CreateWorkflow --> SetDisabled[设置用户状态为disabled]
    SetDisabled --> AutoSubmit[自动提交给超级管理员]
    
    AutoSubmit --> PendingReview{待审核}
    
    PendingReview -->|审批通过| Approve[审批通过]
    PendingReview -->|审批拒绝| Reject[打回修改]
    PendingReview -->|用户撤销| RevokeConfirm{确认撤销?}
    
    Approve --> ActivateUser[激活用户账号]
    ActivateUser --> CloseApproved[关闭工单]
    CloseApproved --> End([结束])
    
    Reject --> UserModify{用户修改信息}
    UserModify -->|重新提交| AutoSubmit
    UserModify -->|放弃注册| RevokeFromReject[撤销工单]
    
    RevokeConfirm -->|确认| Revoke[撤销工单]
    RevokeConfirm -->|取消| PendingReview
    
    Revoke --> DeleteUser[硬删除用户]
    RevokeFromReject --> DeleteUser
    DeleteUser --> ClosedRevoked[关闭工单]
    ClosedRevoked --> RestartOption{一键重新创建?}
    
    RestartOption -->|是| Register
    RestartOption -->|否| 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: POST /api/user/register
    UserAuth->>UserAuth: 创建用户(status=disabled)
    UserAuth->>Workflow: POST /api/workflow/create
    Note over Workflow: 创建user_registration工单
    Workflow->>Workflow: 设置status=pending_review
    Workflow->>Notice: 推送通知
    Notice-->>SuperAdmin: 新用户注册审批通知
    UserAuth-->>Frontend: 注册成功，待审批
    Frontend-->>User: 显示等待审批状态
    
    %% 审批通过场景
    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: 更新status=active
        Workflow->>Workflow: 设置status=approved
        Workflow->>Notice: 推送通知
        Notice-->>User: 注册已通过通知
    
    %% 审批拒绝场景
    else 审批拒绝
        SuperAdmin->>Frontend: 点击拒绝
        Frontend->>Workflow: POST /api/workflow/transition
        Note over Workflow: event=reject
        Workflow->>Workflow: 设置status=rejected
        Workflow->>Notice: 推送通知
        Notice-->>User: 注册被拒绝通知
        
        %% 用户重新提交
        User->>Frontend: 修改注册信息
        Frontend->>UserAuth: POST /api/user/update
        Frontend->>Workflow: POST /api/workflow/transition
        Note over Workflow: event=resubmit
        Workflow->>Workflow: 设置status=pending_review
        Workflow->>Notice: 推送通知
        Notice-->>SuperAdmin: 重新提交审批通知
    
    %% 用户撤销场景
    else 用户撤销
        User->>Frontend: 点击撤销注册
        Frontend->>Workflow: POST /api/workflow/revoke
        Workflow->>Workflow: 设置status=revoked
        Workflow->>UserAuth: 回调删除用户
        UserAuth->>UserAuth: 硬删除用户记录
        Workflow->>Workflow: 设置status=closed
    end
```

---

## 5. 工单步骤定义

| 步骤序号 | 步骤名称 | 步骤类型 | 处理人 | 操作说明 |
|---------|---------|---------|-------|---------|
| 1 | 提交注册 | `submit` | 系统自动 | 用户注册后自动提交审核 |
| 2 | 审核注册 | `approve` | 超级管理员 | 审批通过/拒绝/打回 |

---

## 6. 业务扩展字段

存储于 `user_registration_ext` 表：

| 字段 | 类型 | 说明 |
|-----|------|------|
| `target_user_id` | BIGINT | 被注册用户ID |
| `original_status` | VARCHAR(32) | 原用户状态（备份） |
