# 工单状态机定义

## 基础状态（所有工单类型共享）

| 状态代码 | 状态名称 | 说明 | 是否终态 |
|---------|---------|------|---------|
| `created` | 已创建 | 工单刚创建，等待分配或自动分配 | 否 |
| `pending` | 待分配 | 等待管理员手动分配处理人 | 否 |
| `assigned` | 已分配 | 已分配处理人，等待接单 | 否 |
| `in_progress` | 处理中 | 处理人正在业务模块中处理 | 否 |
| `pending_review` | 待审核 | 处理完成，等待审核 | 否 |
| `returned` | 已打回 | 审核未通过，需重新处理 | 否 |
| `approved` | 已通过 | 审核通过 | **是** |
| `rejected` | 已拒绝 | 审核拒绝，流程终止 | **是** |
| `revoked` | 已撤销 | 发起人撤销 | **是** |
| `closed` | 已关闭 | 流程完结 | **是** |

## 扩展状态（按工单类型）

| 工单类型 | 扩展状态 | 说明 |
|---------|---------|------|
| `microservice_update` | `executing` | 微服务更新执行中 |
| `microservice_update` | `monitoring` | 微服务运行状态监控中 |
| `microservice_update` | `rollbacked` | 更新失败已回滚 |
| `project_detail` | `draft_saved` | 草稿已保存 |

## 状态转换权限矩阵

| 转换事件 | 触发角色 | 前置条件 |
|---------|---------|---------|
| `submit` | 创建人 | 状态为 `created` |
| `auto_assign` | 系统 | 配置了自动分配规则 |
| `assign` | SuperAdmin | 状态为 `pending` |
| `accept` | 处理人 | 状态为 `assigned` |
| `reassign` | SuperAdmin | 状态为 `assigned`/`in_progress` |
| `complete` | 处理人 | 状态为 `in_progress` |
| `approve` | SuperAdmin | 状态为 `pending_review` |
| `reject` | SuperAdmin | 状态为 `pending_review` |
| `return` | SuperAdmin | 状态为 `pending_review`/`in_progress` |
| `resubmit` | 创建人/处理人 | 状态为 `returned` |
| `revoke` | 创建人 | 状态非终态 |
| `close` | 系统/SuperAdmin | 状态为终态或 `revoked` |

## 通用状态转换图

```mermaid
stateDiagram-v2
    [*] --> created: 工单创建

    created --> pending: submit
    created --> assigned: auto_assign

    pending --> assigned: assign

    assigned --> in_progress: accept
    assigned --> assigned: reassign

    in_progress --> pending_review: complete
    in_progress --> returned: return
    in_progress --> assigned: reassign

    pending_review --> approved: approve
    pending_review --> rejected: reject
    pending_review --> returned: return

    returned --> in_progress: resubmit

    approved --> closed: close
    rejected --> closed: close

    created --> revoked: revoke
    pending --> revoked: revoke
    assigned --> revoked: revoke
    in_progress --> revoked: revoke(需确认)
    pending_review --> revoked: revoke(需确认)
    returned --> revoked: revoke

    revoked --> closed: close

    closed --> [*]
```

## 微服务更新扩展状态转换

```mermaid
stateDiagram-v2
    approved --> executing: 开始执行
    approved --> approved: 等待定时执行

    executing --> monitoring: 更新成功
    executing --> executing: 执行重试
    executing --> rollbacked: 更新失败回滚

    monitoring --> closed: 运行正常
    monitoring --> rollbacked: 运行异常回滚

    rollbacked --> closed: 记录失败信息
```

## 项目详情扩展状态转换

```mermaid
stateDiagram-v2
    in_progress --> draft_saved: 保存草稿
    draft_saved --> in_progress: 继续填写
    in_progress --> pending_review: 提交审核
```
