# 工单流程模块 DDS (详细设计说明书)

**产品名称**: RMDC 工单流程模块 (rmdc-work-procedure)  
**版本**: v2.0  
**编制日期**: 2026-01-08

---

## 1. 概述

### 1.1 模块定位

工单流程模块是RMDC系统的核心基础设施模块，为其他业务模块提供统一的工单创建、流转、追踪能力。

```mermaid
graph TB
    subgraph "业务模块"
        UA[rmdc-user-auth<br/>用户认证模块]
        PM[rmdc-project-management<br/>项目管理模块]
        DU[deliver-update<br/>微服务更新模块]
    end
    
    subgraph "工单模块"
        WP[rmdc-work-procedure<br/>工单流程模块]
    end
    
    subgraph "基础设施"
        NC[rmdc-notice-center<br/>通知中心模块]
    end
    
    UA --> WP
    PM --> WP
    DU --> WP
    WP --> NC
```

### 1.2 工单类型

| 工单类型代码 | 类型名称 | 来源模块 | 流程详情 |
|-------------|---------|---------|---------|
| `user_registration` | 用户注册工单 | rmdc-user-auth | [用户注册工单流程](diagrams/user-registration-workflow.md) |
| `user_management` | 用户管理工单 | rmdc-user-auth | [用户管理工单流程](diagrams/user-management-workflow.md) |
| `project_detail` | 项目信息填写工单 | rmdc-project-management | [项目信息填写工单流程](diagrams/project-detail-workflow.md) |
| `microservice_update` | 微服务更新工单 | deliver-update | [微服务更新工单流程](diagrams/microservice-update-workflow.md) |

---

## 2. 状态机设计

### 2.1 设计原则

采用 **"通用状态机 + 类型特化配置"** 的混合方案：
- **基础状态层**：所有工单类型共享的10个核心状态
- **扩展状态层**：按工单类型配置的特殊状态

### 2.2 基础状态定义

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

### 2.3 扩展状态定义

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

### 2.4 通用状态转换图

```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 --> [*]
```

### 2.5 状态转换权限矩阵

| 转换事件 | 触发角色 | 前置条件 |
|---------|---------|---------|
| `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` |

---

## 3. 数据模型设计

### 3.1 设计原则

采用 **"主表统一 + 业务扩展表分离"** 的设计：
- **主表**：存储所有工单类型的通用字段
- **扩展表**：按工单类型存储特定业务数据

### 3.2 ER图

```mermaid
erDiagram
    workflows ||--o{ workflow_steps : contains
    workflows ||--o{ workflow_track_history : has
    workflows ||--o| user_registration_ext : extends
    workflows ||--o| user_management_ext : extends
    workflows ||--o| project_detail_ext : extends
    workflows ||--o| microservice_update_ext : extends
    
    workflows {
        varchar(64) id PK "工单唯一ID"
        int version "乐观锁版本号"
        varchar(32) module_code "来源模块"
        varchar(32) workflow_type "工单类型"
        int priority "优先级1-5"
        varchar(32) status "当前状态"
        int current_step "当前步骤序号"
        int total_steps "总步骤数"
        bigint creator_id FK "发起人ID"
        varchar(64) creator_name "发起人姓名"
        bigint assignee_id FK "当前处理人ID"
        varchar(64) assignee_name "处理人姓名"
        bigint delegated_by "委派来源"
        datetime deadline "超时时间"
        datetime started_at "开始处理时间"
        datetime completed_at "完成时间"
        varchar(256) title "工单标题"
        text description "工单描述"
        json business_payload "业务模块通用数据"
        json result_payload "处理结果数据"
        datetime created_at
        datetime updated_at
    }
    
    workflow_steps {
        bigint id PK
        varchar(64) workflow_id FK
        int step_order "步骤顺序"
        varchar(64) step_name "步骤名称"
        varchar(32) step_type "步骤类型"
        bigint assignee_id FK
        varchar(64) assignee_name
        varchar(32) status "步骤状态"
        varchar(32) result "步骤结果"
        text remark "处理备注"
        json input_data "步骤输入"
        json output_data "步骤输出"
        datetime started_at
        datetime completed_at
        datetime created_at
    }
    
    workflow_track_history {
        bigint id PK
        varchar(64) workflow_id FK
        varchar(32) from_status
        varchar(32) to_status
        varchar(32) event "触发事件"
        bigint operator_id
        varchar(16) operator_type "user/system/timer"
        varchar(45) operator_ip
        json change_details "变更详情"
        text remark
        datetime created_at
    }
```

### 3.3 主表DDL (workflows)

```sql
CREATE TABLE workflows (
    id              VARCHAR(64) PRIMARY KEY,
    version         INT NOT NULL DEFAULT 1,
    
    -- 工单类型与来源
    module_code     VARCHAR(32) NOT NULL,
    workflow_type   VARCHAR(32) NOT NULL,
    priority        INT DEFAULT 3,
    
    -- 状态与流程
    status          VARCHAR(32) NOT NULL,
    current_step    INT DEFAULT 1,
    total_steps     INT DEFAULT 1,
    
    -- 人员关联
    creator_id      BIGINT NOT NULL,
    creator_name    VARCHAR(64),
    assignee_id     BIGINT,
    assignee_name   VARCHAR(64),
    delegated_by    BIGINT,
    
    -- 时间管理
    deadline        DATETIME,
    started_at      DATETIME,
    completed_at    DATETIME,
    
    -- 业务数据
    title           VARCHAR(256),
    description     TEXT,
    business_payload JSON,
    result_payload  JSON,
    
    -- 审计
    created_at      DATETIME NOT NULL,
    updated_at      DATETIME NOT NULL,
    
    INDEX idx_module_code (module_code),
    INDEX idx_workflow_type (workflow_type),
    INDEX idx_status (status),
    INDEX idx_creator (creator_id),
    INDEX idx_assignee (assignee_id)
);
```

### 3.4 步骤表DDL (workflow_steps)

```sql
CREATE TABLE workflow_steps (
    id              BIGINT AUTO_INCREMENT PRIMARY KEY,
    workflow_id     VARCHAR(64) NOT NULL,
    step_order      INT NOT NULL,
    step_name       VARCHAR(64),
    step_type       VARCHAR(32),
    
    -- 处理信息
    assignee_id     BIGINT,
    assignee_name   VARCHAR(64),
    status          VARCHAR(32),
    result          VARCHAR(32),
    remark          TEXT,
    input_data      JSON,
    output_data     JSON,
    
    -- 时间
    started_at      DATETIME,
    completed_at    DATETIME,
    created_at      DATETIME NOT NULL,
    
    INDEX idx_workflow (workflow_id),
    FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);
```

### 3.5 追踪历史表DDL (workflow_track_history)

```sql
CREATE TABLE workflow_track_history (
    id              BIGINT AUTO_INCREMENT PRIMARY KEY,
    workflow_id     VARCHAR(64) NOT NULL,
    
    -- 状态变更
    from_status     VARCHAR(32),
    to_status       VARCHAR(32),
    event           VARCHAR(32),
    
    -- 操作信息
    operator_id     BIGINT,
    operator_type   VARCHAR(16),
    operator_ip     VARCHAR(45),
    
    -- 变更详情
    change_details  JSON,
    remark          TEXT,
    
    created_at      DATETIME NOT NULL,
    
    INDEX idx_workflow (workflow_id),
    INDEX idx_operator (operator_id)
);
```

### 3.6 业务扩展表DDL

#### 用户注册扩展表

```sql
CREATE TABLE user_registration_ext (
    id              BIGINT AUTO_INCREMENT PRIMARY KEY,
    workflow_id     VARCHAR(64) NOT NULL UNIQUE,
    target_user_id  BIGINT NOT NULL,
    original_status VARCHAR(32),
    
    FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);
```

#### 用户管理扩展表

```sql
CREATE TABLE user_management_ext (
    id              BIGINT AUTO_INCREMENT PRIMARY KEY,
    workflow_id     VARCHAR(64) NOT NULL UNIQUE,
    target_user_id  BIGINT NOT NULL,
    action_type     VARCHAR(32) NOT NULL,
    original_data   JSON,
    modified_data   JSON,
    
    FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);
```

#### 项目详情扩展表

```sql
CREATE TABLE project_detail_ext (
    id               BIGINT AUTO_INCREMENT PRIMARY KEY,
    workflow_id      VARCHAR(64) NOT NULL UNIQUE,
    project_id       VARCHAR(64) NOT NULL,
    detail_filler_id BIGINT,
    detail_filler_name VARCHAR(64),
    draft_data       JSON,
    
    FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);
```

#### 微服务更新扩展表

```sql
CREATE TABLE microservice_update_ext (
    id               BIGINT AUTO_INCREMENT PRIMARY KEY,
    workflow_id      VARCHAR(64) NOT NULL UNIQUE,
    project_id       VARCHAR(64) NOT NULL,
    namespace        VARCHAR(64) NOT NULL,
    service_name     VARCHAR(128) NOT NULL,
    build_id         VARCHAR(128),
    current_version  VARCHAR(64),
    target_version   VARCHAR(64),
    scheduled_at     DATETIME,
    execute_result   VARCHAR(32),
    rollback_info    JSON,
    
    FOREIGN KEY (workflow_id) REFERENCES workflows(id)
);
```

---

## 4. API接口设计

### 4.1 工单核心接口

| 方法 | 路径 | 说明 |
|-----|------|------|
| POST | `/api/workflow/create` | 创建工单 |
| POST | `/api/workflow/detail` | 获取工单详情 |
| POST | `/api/workflow/status` | 获取工单状态(轻量) |
| POST | `/api/workflow/update` | 更新工单(需版本号) |
| POST | `/api/workflow/transition` | 状态转换 |
| POST | `/api/workflow/assign` | 分配处理人 |
| POST | `/api/workflow/delegate` | 委派给他人 |
| POST | `/api/workflow/revoke` | 撤销工单 |
| POST | `/api/workflow/callback` | 业务模块回调 |

### 4.2 工单列表与查询

| 方法 | 路径 | 说明 |
|-----|------|------|
| POST | `/api/workflow/list` | 工单列表(分页) |
| POST | `/api/workflow/my/created` | 我发起的工单 |
| POST | `/api/workflow/my/assigned` | 分配给我的工单 |
| POST | `/api/workflow/my/pending` | 待我处理的工单 |
| POST | `/api/workflow/history` | 工单历史记录 |
| POST | `/api/workflow/diagram` | 工单流程图(mermaid格式) |

### 4.3 权限管理接口 (仅SuperAdmin)

| 方法 | 路径 | 说明 |
|-----|------|------|
| POST | `/api/workflow/permission/grant` | 授予权限 |
| POST | `/api/workflow/permission/revoke` | 撤销权限 |
| POST | `/api/workflow/permission/list` | 权限列表 |

---

## 5. 并发处理机制

### 5.1 乐观锁实现

```go
// 更新工单时必须校验版本号
func (s *WorkflowService) UpdateWorkflow(ctx context.Context, req *UpdateRequest) error {
    result := s.db.Model(&Workflow{}).
        Where("id = ? AND version = ?", req.ID, req.Version).
        Updates(map[string]interface{}{
            "status":  req.Status,
            "version": gorm.Expr("version + 1"),
        })
    
    if result.RowsAffected == 0 {
        return ErrVersionConflict // 409 Conflict
    }
    return nil
}
```

### 5.2 并发事件处理

| 场景 | 处理策略 |
|-----|---------|
| 工单被委派 | 推送 `WORKFLOW_REASSIGNED` 事件，原处理人页面切换只读模式 |
| 工单被撤销 | 推送 `WORKFLOW_REVOKED` 事件，处理人页面自动关闭 |
| 工单被修改 | 推送 `WORKFLOW_MODIFIED` 事件，前端提示刷新或自动刷新 |

---

## 6. WebSocket事件

| 事件类型 | 触发时机 | 接收方 |
|---------|---------|-------|
| `WORKFLOW_CREATED` | 工单创建 | 处理人 |
| `WORKFLOW_ASSIGNED` | 工单分配 | 处理人 |
| `WORKFLOW_REASSIGNED` | 工单重新委派 | 原处理人、新处理人 |
| `WORKFLOW_STATUS_CHANGED` | 状态变更 | 发起人、处理人 |
| `WORKFLOW_REVOKED` | 工单撤销 | 处理人 |
| `WORKFLOW_MODIFIED` | 工单内容修改 | 处理人 |
| `WORKFLOW_TIMEOUT` | 工单超时 | 发起人、处理人 |
| `WORKFLOW_COMPLETED` | 工单完成 | 发起人 |

---

## 7. 流程图动态生成模块

### 7.1 模块概述

流程图动态生成模块负责根据工单状态动态生成Mermaid源码，由后端返回给前端，前端使用Mermaid库完成渲染。

### 7.2 架构设计

```mermaid
graph TB
    subgraph 后端 rmdc_work_procedure
        WS[WorkflowService] --> MG[MermaidGenerator]
        MG --> MT[Templates]
        MT --> T1[UserRegistrationTemplate]
        MT --> T2[UserManagementTemplate]
        MT --> T3[ProjectDetailTemplate]
        MT --> T4[DefaultTemplate]
    end

    subgraph API层
        H[WorkflowHandler] --> WS
    end

subgraph 前端
FE[WorkflowDetail.vue] -->|POST /workflow/diagram| H
FE --> DM[动态 import mermaid]
FE --> VM[VueMermaid<br/>@mermaid-js/mermaid-tiny]
DM -. 初始化 .-> VM
end

classDef async stroke:#ff9800,stroke-width:2px,stroke-dasharray: 4 2
class DM async

```

### 7.3 文件结构

```
rmdc-work-procedure/
├── pkg/
│   └── mermaid/
│       ├── types.go           # 数据类型定义
│       ├── generator.go       # 核心生成器逻辑：仅生成Mermaid源码
│       └── templates.go       # 工单类型模板
└── internal/
    └── service/
        └── mermaid_generator.go  # Service层封装
```

### 7.4 核心数据结构

```go
// DiagramResponse 流程图响应
type DiagramResponse struct {
    MermaidCode string        `json:"mermaid_code"` // Mermaid源代码
    CurrentNode string        `json:"current_node"` // 当前高亮节点ID
    Nodes       []DiagramNode `json:"nodes"`        // 节点详细信息
}

// DiagramNode 节点信息
type DiagramNode struct {
    ID          string `json:"id"`           // 节点ID
    Label       string `json:"label"`        // 显示文本
    Status      string `json:"status"`       // completed/current/pending/error
    Assignee    string `json:"assignee"`     // 处理人
    CompletedAt string `json:"completed_at"` // 完成时间
}
```

### 7.5 支持的工单模板

| 工单类型 | 模板类 | 说明 |
|---------|--------|------|
| `user_registration` | UserRegistrationTemplate | 用户注册流程图 |
| `user_management` | UserManagementTemplate | 用户管理流程图 |
| `project_detail` | ProjectDetailTemplate | 项目详情填写流程图 |
| 其他 | DefaultTemplate | 通用默认流程图 |

### 7.6 API接口详细

**请求**: `POST /api/workflow/diagram`

```json
{
    "workflow_id": "project-20260108100000-admin"
}
```

**响应**:

```json
{
    "code": 0,
    "message": "success",
    "data": {
        "mermaid_code": "stateDiagram-v2\n    direction LR\n    ...",
        "current_node": "pending_review",
        "nodes": [
            {
                "id": "created",
                "label": "创建项目",
                "status": "completed",
                "assignee": "超级管理员"
            },
            {
                "id": "in_progress",
                "label": "填写信息",
                "status": "current",
                "assignee": "张三"
            }
        ]
    }
}
```

### 7.7 项目详情工单流程图示例

```mermaid
stateDiagram-v2
    direction LR
    
    [*] --> created: 创建项目
    created --> assigned: 分配填写人
    assigned --> in_progress: 开始填写
    
    in_progress --> draft_saved: 保存草稿
    draft_saved --> in_progress: 继续填写
    in_progress --> pending_review: 提交审核
    
    pending_review --> approved: 审批通过
    pending_review --> returned: 审批打回
    
    returned --> in_progress: 重新填写
    
    approved --> closed: 项目认证完成
    
    closed --> [*]
    
    classDef completed fill:#4caf50,color:#fff
    classDef current fill:#ff9800,color:#fff,stroke-width:3px
    classDef pending fill:#e0e0e0,color:#666
```

### 7.8 前端渲染方案（Vue）

- **开源库**：采用 Vue-Mermaid 组件库 `@mermaid-js/mermaid-tiny`，保持与官方 Mermaid 渲染一致。
- **渲染流程**：调用 `/api/workflow/diagram` 获取 `mermaid_code`、`current_node`、`nodes` → 前端异步加载 `mermaid` → 将 `mermaid_code` 传入 VueMermaid 组件渲染 → 根据 `current_node`/`nodes` 动态追加 `classDef` 与 `class` 语句实现高亮。
- **兼容性**：使用 SVG 与 ES2020 基础能力，在 Chrome、Firefox 通过官方库验证；初始化时开启 `securityLevel: 'strict'`，避免依赖私有 API。
- **后端约束**：后端不做 SVG/PNG 渲染，无需配置 Node.js 或 Chrome 运行时，仅生成 Mermaid 源码。

### 7.9 动态加载与性能优化

- 通过 `import('mermaid')` 异步加载，避免进入主 bundle，可在组件 `mounted`/`onMounted` 时按需初始化。
- 初始化示例：

```js
const { default: mermaid } = await import('mermaid');
mermaid.initialize({
  startOnLoad: false,
  securityLevel: 'strict',
  theme: 'default',
});
```

- Vue 示例（伪代码）：

```vue
<template>
  <VueMermaid v-if="mermaidReady" :id="`workflow-${id}`" :value="patchedMermaidCode" />
  <div v-else>流程图加载中…</div>
  <button @click="prefetch()">预加载Mermaid</button>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import VueMermaid from '@mermaid-js/mermaid-tiny';

const props = defineProps({ code: String, currentNode: String, nodes: Array });
const mermaidReady = ref(false);
const patchedMermaidCode = computed(() => injectClasses(props.code, props.currentNode, props.nodes));

async function bootstrap() {
  if (mermaidReady.value) return;
  await import('mermaid'); // 不进入主 bundle
  mermaidReady.value = true;
}

function prefetch() {
  // 悬停/首屏可调用，进一步降低首次渲染等待
  bootstrap();
}

onMounted(bootstrap);
</script>
```

### 7.10 测试方法（项目详情工单）

目标：渲染项目详情工单在每个状态下的 Mermaid 源码，输出为一个 SVG 文件，人工核验是否与 [project-detail-workflow.md](diagrams/project-detail-workflow.md) 一致。

1. **准备状态集合**：`['created','assigned','in_progress','draft_saved','pending_review','approved','returned','closed']`。
2. **基准 Mermaid 模板**（包含扩展状态 `draft_saved` 与高亮占位符 `__CURRENT__`）：

```mermaid
stateDiagram-v2
    direction LR
    
    [*] --> created: 创建项目
    created --> assigned: 分配填写人
    assigned --> in_progress: 用户开始填写
    
    in_progress --> draft_saved: 保存草稿
    draft_saved --> in_progress: 继续填写
    in_progress --> pending_review: 提交审核
    in_progress --> assigned: 重新分配
    
    pending_review --> approved: 审批通过
    pending_review --> returned: 审批打回
    
    returned --> in_progress: 用户重新填写
    returned --> pending_review: 重新提交
    
    approved --> closed: 项目认证完成
    closed --> [*]
    
    classDef completed fill:#4caf50,color:#fff
    classDef current fill:#ff9800,color:#fff,stroke-width:3px
    classDef pending fill:#e0e0e0,color:#666
    class __CURRENT__ current
```

3. **浏览器端生成单一 SVG 文件**（在 Chrome/Firefox 打开任意页面按 F12 粘贴执行，需联网获取 `mermaid` 包，满足跨浏览器验证）：

```js
const states = ['created','assigned','in_progress','draft_saved','pending_review','approved','returned','closed'];
const template = `stateDiagram-v2
    direction LR
    
    [*] --> created: 创建项目
    created --> assigned: 分配填写人
    assigned --> in_progress: 用户开始填写
    
    in_progress --> draft_saved: 保存草稿
    draft_saved --> in_progress: 继续填写
    in_progress --> pending_review: 提交审核
    in_progress --> assigned: 重新分配
    
    pending_review --> approved: 审批通过
    pending_review --> returned: 审批打回
    
    returned --> in_progress: 用户重新填写
    returned --> pending_review: 重新提交
    
    approved --> closed: 项目认证完成
    closed --> [*]
    
    classDef completed fill:#4caf50,color:#fff
    classDef current fill:#ff9800,color:#fff,stroke-width:3px
    classDef pending fill:#e0e0e0,color:#666
    class __CURRENT__ current`;
const { default: mermaid } = await import('mermaid');
mermaid.initialize({ startOnLoad: false, securityLevel: 'strict' });

const fragments = [];
for (const [index, state] of states.entries()) {
  const code = template.replace('__CURRENT__', state);
  const { svg } = await mermaid.render(`project-detail-${state}`, code);
  const inner = svg.replace(/^<svg[^>]*>|<\/svg>$/g, '');
  fragments.push(`<g transform="translate(0, ${index * 360})">${inner}</g>`);
}
const height = states.length * 360 + 40;
const combined = `<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="${height}">${fragments.join('\n')}</svg>`;
const blob = new Blob([combined], { type: 'image/svg+xml' });
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = 'project-detail-states.svg';
a.click();
```

4. **人工核验**：打开 `project-detail-states.svg`，逐段确认节点、连线、文案及高亮与流程设计一致；如有差异，调整模板并重新生成。

---

## 8. 相关文档

| 文档 | 内容 |
|------|------|
| [用户注册工单流程](diagrams/user-registration-workflow.md) | 用户注册工单的状态机、流程图、时序图 |
| [用户管理工单流程](diagrams/user-management-workflow.md) | 用户管理工单的状态机、流程图、时序图 |
| [项目信息填写工单流程](diagrams/project-detail-workflow.md) | 项目详情工单的状态机、流程图、时序图 |
| [微服务更新工单流程](diagrams/microservice-update-workflow.md) | 微服务更新工单的状态机、流程图、时序图 |
| [工单流程PRD](2-rmdc-work-procedure-PRD.md) | 产品需求文档 |

---

## 9. 参考设计

设计参考了以下开源项目的最佳实践:

1. **Ferry** - Go语言工单系统，支持工作流引擎、权限管理、灵活配置
2. **Flowable** - Java工作流引擎，乐观锁并发控制机制
3. **Camunda** - BPMN工作流引擎，微服务编排
4. **NocoBase** - 低代码平台，灵活的数据建模与工作流设计
