# 项目生命周期状态机

## 状态定义

| 状态 | 说明 | 触发动作 | 权限 |
|:---|:---|:---|:---|
| **INIT** | 项目元数据已创建，等待详细信息录入 | 超级管理员创建项目 | SuperAdmin |
| **DRAFTING** | 正在进行初始信息填写（关联填写工单） | 指定填写人保存/编辑 | 填写人/SuperAdmin |
| **REVIEWING** | 初始信息或变更信息提交审核 | 提交审核 | SuperAdmin |
| **RELEASED** | 审核通过，正常运行中 | 审核通过 | All (View) |
| **MODIFYING** | 存在活跃的变更工单（不影响主线运行） | 发起修改工单 | Owner/SuperAdmin |
| **ARCHIVED** | 软删除状态，不可见但保留数据 | 删除项目 | SuperAdmin |

## 状态转换图

```
[*] ──创建项目──> INIT
                   │
                   ├──分配填写人──> DRAFTING ──保存草稿──> DRAFTING
                   │                    │
                   │                    └──提交审核──> REVIEWING
                   │                                      │
                   │                    ┌──审核打回──<────┤
                   │                    │                 │
                   │                    v                 └──审核通过──> RELEASED
                   │               DRAFTING                              │
                   │                                                     │
                   │                    ┌──发起修改工单──<───────────────┤
                   │                    │                                │
                   │                    v                                └──归档删除──> ARCHIVED ──> [*]
                   │               MODIFYING ──保存草稿──> MODIFYING
                   │                    │
                   │                    ├──提交变更审核──> REVIEWING
                   │                    │
                   │                    └──撤销变更──> RELEASED
```

## 状态转换条件

| From | To | 事件 | 条件 |
|:---|:---|:---|:---|
| INIT | DRAFTING | 分配填写人 | 填写人 ID 有效 |
| DRAFTING | DRAFTING | 保存草稿 | 表单数据有效 |
| DRAFTING | REVIEWING | 提交审核 | 必填字段完整 |
| REVIEWING | DRAFTING | 审核打回 | SuperAdmin 操作 |
| REVIEWING | RELEASED | 审核通过 | SuperAdmin 操作 |
| RELEASED | MODIFYING | 发起修改工单 | 有 View ACL 权限 |
| RELEASED | ARCHIVED | 归档删除 | SuperAdmin 操作 |
| MODIFYING | MODIFYING | 保存草稿 | 表单数据有效 |
| MODIFYING | REVIEWING | 提交变更审核 | 必填字段完整 |
| MODIFYING | RELEASED | 撤销变更/审核通过 | 用户操作/SuperAdmin |

## Mermaid 状态图

```mermaid
stateDiagram-v2
    [*] --> INIT: 创建项目

    INIT --> DRAFTING: 分配填写人

    DRAFTING --> DRAFTING: 保存草稿
    DRAFTING --> REVIEWING: 提交审核

    REVIEWING --> DRAFTING: 审核打回
    REVIEWING --> RELEASED: 审核通过

    RELEASED --> MODIFYING: 发起修改工单
    RELEASED --> ARCHIVED: 归档删除

    MODIFYING --> MODIFYING: 保存草稿
    MODIFYING --> REVIEWING: 提交变更审核
    MODIFYING --> RELEASED: 撤销变更/审核通过

    ARCHIVED --> [*]

    note right of RELEASED: 项目认证状态=official
    note right of DRAFTING: 支持多次保存草稿
    note right of MODIFYING: 可同时存在多个变更工单
```

## 状态与认证状态映射

| 生命周期状态 | 认证状态 (certification_status) |
|:---|:---|
| INIT | draft |
| DRAFTING | draft |
| REVIEWING | pending |
| RELEASED | official |
| MODIFYING | official (主线不变) |
| ARCHIVED | official (保留) |
