# 工单类型定义

## 类型列表

| 工单类型代码 | 类型名称 | 来源模块 | 可撤销 | 特殊处理 |
|-------------|---------|---------|-------|---------|
| `user_registration` | 用户注册工单 | rmdc-user-auth | 是 | 撤销时硬删除用户 |
| `user_management` | 用户管理工单 | rmdc-user-auth | 是 | 保存变更前后快照 |
| `project_detail` | 项目信息填写工单 | rmdc-project-management | 否(仅超管) | 支持草稿保存 |
| `microservice_update` | 微服务更新工单 | deliver-update | 是 | 执行/监控/回滚扩展状态 |

## 工单 ID 生成规则

**格式**：`{module_prefix}-{timestamp}-{creator_username}`

**示例**：
- `project-20260106110303-zeaslity`
- `user-20260108093000-admin`
- `microservice-20260108150000-zhangsan`

## 各类型详细说明

### user_registration（用户注册工单）

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

**业务规则**：
| 规则项 | 说明 |
|-------|------|
| 发起人 | 管理员、普通用户 |
| 默认处理人 | 超级管理员 |
| 被注册用户初始状态 | `disabled` |
| 审批通过后用户状态 | `active` |
| 可撤销 | 是（创建人可撤销） |
| 撤销后处理 | **硬删除**被注册用户 |

**步骤定义**：
| 步骤序号 | 步骤名称 | 步骤类型 | 处理人 |
|---------|---------|---------|-------|
| 1 | 提交注册 | `submit` | 系统自动 |
| 2 | 审核注册 | `approve` | 超级管理员 |

**扩展字段**（user_registration_ext）：
- `target_user_id` - 被注册用户ID
- `original_status` - 原用户状态（备份）

---

### user_management（用户管理工单）

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

**业务规则**：
| 规则项 | 说明 |
|-------|------|
| 发起人 | 管理员、普通用户（只能管理自己注册的用户） |
| 默认处理人 | 超级管理员 |
| 操作类型 | `modify`/`delete`/`enable`/`disable` |
| 可撤销 | 是 |
| 可关闭 | 是（创建人可主动关闭） |

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

**步骤定义**：
| 步骤序号 | 步骤名称 | 步骤类型 | 处理人 |
|---------|---------|---------|-------|
| 1 | 提交管理操作 | `submit` | 创建人 |
| 2 | 审核管理操作 | `approve` | 超级管理员 |

**扩展字段**（user_management_ext）：
- `target_user_id` - 被管理用户ID
- `action_type` - 操作类型
- `original_data` - 变更前数据快照
- `modified_data` - 期望变更数据

---

### project_detail（项目信息填写工单）

**业务场景**：超级管理员创建项目元数据后，分配给普通用户填写项目详情信息，填写完成后提交审核。

**业务规则**：
| 规则项 | 说明 |
|-------|------|
| 发起人 | 超级管理员 |
| 填写人 | 被分配的普通用户 |
| 审批人 | 超级管理员 |
| 支持草稿 | 是（可多次保存草稿） |
| 可撤销 | 否（仅超级管理员可取消） |
| 项目状态关联 | 草稿状态绑定唯一工单 |

**项目状态对应关系**：
| 工单状态 | 项目认证状态 |
|---------|------------|
| `assigned` / `in_progress` | `draft` (草稿) |
| `pending_review` | `pending` (待审核) |
| `approved` / `closed` | `official` (正式) |
| `returned` | `draft` (草稿) |

**步骤定义**：
| 步骤序号 | 步骤名称 | 步骤类型 | 处理人 |
|---------|---------|---------|-------|
| 1 | 分配填写人 | `assign` | 超级管理员 |
| 2 | 填写项目信息 | `execute` | 被分配用户 |
| 3 | 审核项目信息 | `approve` | 超级管理员 |

**扩展字段**（project_detail_ext）：
- `project_id` - 关联项目ID
- `detail_filler_id` - 填写人ID
- `detail_filler_name` - 填写人姓名
- `draft_data` - 草稿数据

---

### microservice_update（微服务更新工单）

**业务场景**：普通用户在构建详情页面发起微服务更新请求，经过超级管理员审批后执行更新操作，并监控微服务运行状态。

**业务规则**：
| 规则项 | 说明 |
|-------|------|
| 发起人 | 普通用户 |
| 审批人 | 超级管理员 |
| 执行人 | 超级管理员或委派人 |
| 支持定时执行 | 是 |
| 支持委派 | 是 |
| 自动回滚 | 是（更新失败时自动回滚） |

**相关模块**：
| 模块 | 职责 |
|-----|------|
| rmdc-jenkins-branch-dac | 提供构建物信息 |
| rmdc-exchange-hub | MQTT消息中继 |
| rmdc-watchdog | K8S操作执行、状态监控 |

**步骤定义**：
| 步骤序号 | 步骤名称 | 步骤类型 | 处理人 |
|---------|---------|---------|-------|
| 1 | 提交更新请求 | `submit` | 普通用户 |
| 2 | 审核更新请求 | `approve` | 超级管理员 |
| 3 | 执行更新 | `execute` | 超级管理员/委派人 |
| 4 | 监控运行状态 | `monitor` | 系统自动 |

**扩展字段**（microservice_update_ext）：
- `project_id` - 目标项目ID
- `namespace` - K8S命名空间
- `service_name` - 微服务名称
- `build_id` - 构建物ID
- `current_version` - 当前版本
- `target_version` - 目标版本
- `scheduled_at` - 计划执行时间
- `execute_result` - 执行结果
- `rollback_info` - 回滚信息

**更新页面布局**：
```
┌─────────────────────────────────────────────────────────────────┐
│                         微服务更新                               │
├─────────────────┬─────────────────────────┬────────────────────┤
│   构建物信息     │      更新表单            │    操作区          │
│                 │                         │                    │
│ 组织: acme      │ 目标项目: [下拉选择]     │                    │
│ 仓库: service   │ 目标微服务: [下拉选择]   │   [发起更新]       │
│ 分支: main      │ 更新时间: [日期选择]     │                    │
│ 构建号: #123    │   ○ 立即执行             │   [取消]           │
│ 版本: v3.2.0    │   ○ 定时执行             │                    │
│                 │ 备注: [文本框]           │                    │
└─────────────────┴─────────────────────────┴────────────────────┘
```
