# 项目部署管理 — 金山多维表格方案优化分析与完善文档

> **文档版本**: v1.0  
> **日期**: 2026-03-06  
> **目的**: 基于初始需求，对现有金山多维表格方案进行 **需求覆盖分析 → 缺口识别 → 优化建议 → 完善方案输出**

---

## 一、初始需求回顾与拆解

根据 [项目部署管理.md](项目部署管理.md) 的原始需求，可以拆解为以下 **6 大核心诉求**：

| # | 核心诉求 | 关键细节 |
|---|---------|---------|
| R1 | **项目部署信息表**（行业组 / 交付人员填写） | 必须包含部署必要条件等信息 |
| R2 | **项目部署台账** / 甘特图视图 | 日历/列表双视图，支持可视化部署排期 |
| R3 | **部署排期表功能** | 行业组能一目了然查看项目状态、部署进度 |
| R4 | **部署基本信息记录** | 项目名称、版本、时间、状态、人员、结果 |
| R5 | **工具要求** | 富文本、附件上传、客户端简洁免安装 |
| R6 | **远期目标** | 最终在 RMDC 系统中实现 |

---

## 二、现有方案覆盖分析

### 2.1 覆盖矩阵

| 需求编号 | 需求摘要 | 现有方案覆盖情况 | 覆盖评级 |
|---------|---------|---------------|---------|
| R1 | 部署信息表（行业组填写） | ✅ 项目基本信息表 + 升级信息表 | ⭐⭐⭐⭐ 基本覆盖 |
| R2 | 甘特图/日历视图 | ⚠️ 方案中未明确提及视图配置 | ⭐⭐ 未覆盖 |
| R3 | 部署排期进度可视化 | ⚠️ 部署状态表有状态字段，但缺少排期/进度可视化设计 | ⭐⭐ 部分覆盖 |
| R4 | 部署基本信息记录 | ✅ 部署状态表包含核心字段 | ⭐⭐⭐⭐ 基本覆盖 |
| R5 | 富文本/附件/免安装 | ✅ 金山多维表格天然支持 | ⭐⭐⭐⭐⭐ 完全覆盖 |
| R6 | 远期 RMDC 集成 | ⚠️ 未涉及数据迁移/API 对接规划 | ⭐ 未覆盖 |

### 2.2 覆盖得分: **约 60%**

> [!WARNING]
> 现有方案在 **数据建模层面** 做得比较扎实（表结构、关联关系设计合理），但在 **视图层面、流程自动化、权限管控、用户体验** 方面存在明显缺口。

---

## 三、逐项差距分析与优化建议

### 3.1 🔴 甘特图 / 日历视图（R2 — 未覆盖）

**问题**: 初始需求明确要求 "甘特图类似" 的部署台账和日历展示，但现有方案仅定义了表结构，未设计任何视图。

**优化建议**:

1. **在「项目本地化部署状态表」上创建以下视图**：

   | 视图名称 | 视图类型 | 用途 | 关键配置 |
   |---------|---------|------|---------|
   | 部署排期甘特图 | 甘特视图 | 直观展示每个部署任务的时间跨度 | 开始时间=部署开始时间，结束时间=部署结束时间，分组=部署状态 |
   | 部署日历 | 日历视图 | 按日查看部署安排 | 日期字段=部署开始时间，颜色=按部署状态区分 |
   | 全部部署列表 | 表格视图 | 默认列表，全量信息查看 | 默认按创建时间倒序 |
   | 进行中部署 | 表格视图（筛选） | 仅展示"部署中"的任务 | 筛选: 部署状态=部署中 |
   | 我的部署任务 | 表格视图（筛选） | 部署人员查看自己的任务 | 筛选: 部署人=当前用户 |

2. **甘特图配置要点**：
   - 横轴: 时间线（按周/按月切换）
   - 纵轴: 每个部署任务为一行
   - 颜色编码: 排期中=灰色, 部署中=蓝色, 部署完成=绿色, 部署异常=红色
   - 支持拖拽调整部署时间段

---

### 3.2 🔴 部署排期与进度可视化（R3 — 部分覆盖）

**问题**: 行业组需要"一目了然"查看部署进度，但现有方案缺少：
- 进度百分比的概念
- 部署阶段的细化
- 可视化仪表盘

**优化建议**:

1. **细化部署状态枚举**（从 3 个扩展为 6 个）：

   ```
   原方案: 排期中 → 部署中 → 部署完成
   优化后: 待排期 → 已排期 → 环境准备中 → 部署中 → 验证中 → 已完成
   ```

   补充异常状态：**部署异常** / **已暂停** / **已取消**

2. **新增「部署进度」公式字段**：
   - 类型: 公式字段
   - 逻辑: 根据关联子表的填写完成度自动计算百分比
   - 示例公式:
     ```
     进度 = (环境信息已填 × 25% + 网络信息已填 × 25% + 中间件信息已填 × 25% + 业务信息已填 × 25%)
     ```

3. **新增仪表盘视图**（金山多维表格支持）：
   - 部署状态分布饼图
   - 本月部署任务数柱状图
   - 平均部署耗时趋势线
   - 各状态任务数统计卡片

---

### 3.3 🟡 项目基本信息表优化（R1 — 需完善）

**现有问题**:
1. 缺少「部署必要条件」相关字段（初始需求明确要求）
2. 省份/城市二级联动在多维表格中难以实现级联
3. 缺少项目紧急程度/优先级字段（影响排期）

**优化建议**:

在「项目基本信息表」中 **新增以下字段**：

| 字段名 | 字段类型 | 说明 |
|-------|---------|------|
| 部署优先级 | 单选 | P0-紧急 / P1-高 / P2-中 / P3-低 |
| 期望部署日期 | 日期 | 行业组期望的上线时间 |
| 部署必要条件说明 | 多行文本(富文本) | 描述部署前置条件，如：VPN 准备、服务器交付、License 等 |
| 必要条件是否满足 | 单选 | 是 / 否 / 部分满足 |
| 条件不满足说明 | 多行文本 | 记录哪些条件未满足 |
| 项目类型 | 单选 | 新部署 / 升级 / 迁移 / 扩容 |
| 省份 | 单选 | 保持下拉选择 |
| 城市 | 文本 | 改为文本输入（多维表格暂不支持级联选择，备注关联省份） |
| 特殊要求备注 | 多行文本(富文本) | 任何非标准化的部署需求 |

---

### 3.4 🟡 项目本地化部署升级信息表优化

**现有问题**:
1. 与基本信息表字段重复度高，且缺少升级场景的特有字段
2. 缺乏升级版本号的变更记录（从什么版本升级到什么版本）

**优化建议**:

| 字段名 | 字段类型 | 说明 |
|-------|---------|------|
| 项目名称 | 关联字段 | 关联「项目基本信息表」而非文本匹配 |
| 升级类型 | 单选 | 全量升级 / 增量升级 / 热修复 / 回滚 |
| 当前版本（飞服） | 文本 | 升级前的版本号 |
| 目标版本（飞服） | 文本 | 升级后的版本号 |
| 当前版本（监管） | 文本 | 升级前的版本号 |
| 目标版本（监管） | 文本 | 升级后的版本号 |
| 升级影响评估 | 多行文本(富文本) | 本次升级是否需要停机、预计影响范围 |
| 回滚方案 | 多行文本(富文本) | 升级失败时的回滚策略 |
| 期望升级时间窗口 | 日期范围 | 允许升级的时间窗口 |

---

### 3.5 🟡 项目本地化部署状态表优化（核心锚表）

**现有问题**:
1. 状态粒度过粗（仅 3 个状态）
2. 缺少部署结果字段（成功/失败）
3. 「部署时长」应为自动计算而非手动填写
4. 缺少部署关联的来源类型标识（是首次部署还是升级）

**优化建议**:

| 字段名 | 字段类型 | 说明 |
|-------|---------|------|
| 部署编号 | 自动编号 | 唯一标识，格式如 `DEPLOY-2026-0001` |
| 来源类型 | 单选 | 首次部署 / 升级部署 |
| 关联项目 | 关联字段 | → 项目基本信息表 |
| 关联升级记录 | 关联字段 | → 项目本地化部署升级信息表（当来源类型=升级时） |
| 部署状态 | 单选 | 待排期 / 已排期 / 环境准备中 / 部署中 / 验证中 / 已完成 / 部署异常 / 已暂停 / 已取消 |
| **部署结果** | 单选 | 成功 / 失败 / 部分成功 |
| 部署优先级 | 引用字段 | 从项目基本信息表引用 |
| 计划开始时间 | 日期时间 | 排期时确定 |
| 计划结束时间 | 日期时间 | 排期时确定 |
| 实际开始时间 | 日期时间 | 开始部署时记录 |
| 实际结束时间 | 日期时间 | 部署完成时记录 |
| **部署时长(小时)** | 公式 | `= 实际结束时间 - 实际开始时间`（自动计算） |
| 部署进度 | 公式 | 基于关联子表填写状态自动计算 |
| 命名空间 | 文本(唯一) | K8s Namespace |
| 部署人 | 成员 | 使用成员字段而非文本 |
| 部署人电话 | 引用字段 | 从成员信息自动引用 |
| 备注 | 多行文本(富文本) | |

---

### 3.6 🟡 项目部署环境信息表优化

**现有问题**:
1. 关联方式写了 `todo`，未明确
2. SSH 密码标记为"不允许填写"，但未说明密码如何管理
3. 缺少主机状态字段

**优化建议**:

| 改动 | 说明 |
|------|------|
| 关联方式 | 通过「所属部署」关联字段 → 部署状态表（已在方案中提及，需明确为关联字段类型） |
| 新增「主机状态」 | 单选: 待交付 / 已交付 / 已初始化 / 运行中 / 异常 |
| 新增「操作系统」 | 单选: CentOS 7 / CentOS 8 / Ubuntu 20.04 / Ubuntu 22.04 / 其他 |
| 新增「GPU信息」 | 文本（如有 GPU 需求的项目） |
| 敏感信息处理 | SSH 密码字段 → 建议改为「密码存储方式」单选 (密码管理器/加密文档/其他)，实际密码不存入多维表格 |
| 新增「主机标签」 | 多选: 可标记主机用途组合 |

---

### 3.7 🟡 项目部署中间件信息表优化

**现有问题**:
1. "每行一个中间件实例，固定 7 个" — 这意味着每次部署需手动创建 7 行，效率低
2. 缺少中间件版本信息
3. 缺少中间件健康状态

**优化建议**:

| 改动 | 说明 |
|------|------|
| 新增「中间件版本」 | 文本，如 MySQL 8.0.32, Redis 7.0 等 |
| 新增「部署方式」 | 单选: 容器化 / 主机部署 / 云服务 |
| 新增「所在主机」 | 关联字段 → 项目部署环境信息表（明确中间件运行在哪台主机上） |
| 新增「管理后台地址」 | URL 类型（如 RabbitMQ/NACOS/K8S Dashboard 的管理界面） |
| 自动化创建 | 建议通过多维表格的「表单模板」或「自动化」功能，在新建部署时自动创建 7 条中间件记录 |

---

### 3.8 🔴 权限与角色设计（未覆盖）

**问题**: 原始需求中有明确的角色分工（行业组填写 vs 特战队填写），但现有方案未设计权限体系。

**优化建议 — 权限矩阵**:

| 表名 | 行业组人员 | 交付部署特战队 | 小组长 |
|------|----------|-------------|-------|
| 项目基本信息表 | ✏️ 可编辑 | 👁️ 只读 | ✏️ 可编辑 |
| 部署升级信息表 | ✏️ 可编辑 | 👁️ 只读 | ✏️ 可编辑 |
| 部署状态表 | 👁️ 只读 | ✏️ 可编辑 | ✏️ 可编辑 |
| 部署环境信息表 | 🚫 不可见 | ✏️ 可编辑 | ✏️ 可编辑 |
| 部署网络信息表 | 🚫 不可见 | ✏️ 可编辑 | ✏️ 可编辑 |
| 部署中间件信息表 | 🚫 不可见 | ✏️ 可编辑 | ✏️ 可编辑 |
| 部署业务信息表 | 🚫 不可见 | ✏️ 可编辑 | ✏️ 可编辑 |
| 项目信息汇总表 | 👁️ 只读 (部分) | 👁️ 只读 | 👁️ 只读 |
| 仪表盘 | 👁️ 只读 | 👁️ 只读 | ✏️ 可编辑 |

**实施方式**: 
- 金山多维表格支持「协作者权限」和「字段级权限」
- 对行业组使用 **表单视图** 提交信息，限制其只能填写特定字段
- 敏感字段（密码类）设置为仅管理员查看

---

### 3.9 🔴 自动化流程设计（未覆盖）

**问题**: 方案中提到了"自动化触发"的概念，但未设计具体的自动化规则。

**优化建议 — 自动化规则清单**:

| # | 触发条件 | 执行动作 | 说明 |
|---|---------|---------|------|
| A1 | 新建「项目基本信息」记录 | 自动在「部署状态表」创建一条记录（状态=待排期） | 首次部署自动关联 |
| A2 | 新建「升级信息」记录 | 自动在「部署状态表」创建一条记录（来源类型=升级，状态=待排期） | 升级部署自动关联 |
| A3 | 「部署状态」变更为"部署中" | ① 自动记录「实际开始时间」 ② 检查「环境信息表」是否已填（否则阻止切换） | 状态守卫 |
| A4 | 「部署状态」变更为"已完成" | ① 自动记录「实际结束时间」 ② 检查网络/中间件信息是否已填 ③ 自动计算部署时长 | 完成守卫 |
| A5 | 「部署状态」变更为"部署异常" | 发送通知给小组长和部署人 | 异常告警 |
| A6 | 新建「部署状态」记录 | 自动创建 7 条中间件记录模板 | 减少手动操作 |
| A7 | 「部署优先级」为 P0 且超过 24h 未排期 | 发送催办通知 | 优先级预警 |

> **注意**: 金山多维表格的「自动化」功能支持上述大部分规则，但 **状态守卫（A3/A4 的条件检查阻止切换）** 可能需要通过 **AirScript 脚本** 实现，建议优先验证此能力。

---

### 3.10 🟡 通知机制设计（未覆盖）

| 通知场景 | 通知对象 | 通知方式 |
|---------|---------|---------|
| 新部署需求提交 | 特战队全员 | 多维表格通知 + 企微/飞书机器人 |
| 部署排期确认 | 行业组提交人 | 多维表格通知 |
| 部署状态变更 | 行业组提交人 + 部署人 | 多维表格通知 |
| 部署异常 | 小组长 + 部署人 | 多维表格通知 + 企微/飞书机器人 |
| 部署超时预警 | 小组长 | 多维表格通知 |

---

## 四、完善后的表结构总览

### 4.1 ER 关系图

```mermaid
erDiagram
    PROJECT_INFO["项目基本信息表"] {
        string 项目名称
        string 行业组人员
        string 电话
        string 省份
        string 城市
        enum 部署优先级 "P0-P3"
        date 期望部署日期
        text 部署必要条件说明
        enum 必要条件是否满足
        enum 项目类型
        file 部署资源信息
    }

    UPGRADE_INFO["部署升级信息表"] {
        ref 项目名称 "关联项目基本信息"
        enum 升级类型
        string 当前版本_飞服
        string 目标版本_飞服
        string 当前版本_监管
        string 目标版本_监管
        text 升级影响评估
        text 回滚方案
        daterange 期望升级窗口
        file 部署资源信息
    }

    DEPLOY_STATUS["部署状态表(核心锚表)"] {
        auto 部署编号
        enum 来源类型
        enum 部署状态
        enum 部署结果
        ref 部署优先级 "引用"
        datetime 计划开始时间
        datetime 计划结束时间
        datetime 实际开始时间
        datetime 实际结束时间
        formula 部署时长
        formula 部署进度
        string 命名空间
        member 部署人
        text 备注
    }

    ENV_INFO["部署环境信息表"] {
        string 公网IP
        bool 能否访问公网
        string 内网IP
        int SSH端口
        string SSH用户名
        enum 主机功能
        enum 主机状态
        enum 操作系统
        int CPU核心数
        string CPU型号
        string 内存大小
        string 系统盘大小
        string 数据盘大小
        string GPU信息
        text 备注
    }

    NET_INFO["部署网络信息表"] {
        string 访问地址
        bool 是否开启SSL
        text 端口信息说明
        enum 网络环境
        enum 主机管理方式
        string 管理后台地址
        string VPN下载地址
        text 备注
    }

    MIDDLEWARE_INFO["部署中间件信息表"] {
        enum 中间件类型
        string 中间件版本
        enum 部署方式
        bool 是否暴露公网
        string 公网端口
        string 内网IP
        string 内网端口
        string 用户名
        string 管理后台地址
    }

    BIZ_INFO["部署业务信息表"] {
        string 微服务名称
        string 微服务分支
        string 微服务镜像
        string 微服务版本
        enum 部署状态
    }

    PROJECT_INFO ||--o{ DEPLOY_STATUS : "触发创建"
    UPGRADE_INFO ||--o{ DEPLOY_STATUS : "触发创建"
    UPGRADE_INFO }o--|| PROJECT_INFO : "关联"
    DEPLOY_STATUS ||--o{ ENV_INFO : "1:N 关联"
    DEPLOY_STATUS ||--o{ NET_INFO : "1:N 关联"
    DEPLOY_STATUS ||--o{ MIDDLEWARE_INFO : "1:N 关联"
    DEPLOY_STATUS ||--o{ BIZ_INFO : "1:N 关联"
    ENV_INFO ||--o{ MIDDLEWARE_INFO : "所在主机"
```

### 4.2 多视图设计一览

```mermaid
graph LR
    A["部署状态表"] --> B["表格视图 - 全量列表"]
    A --> C["甘特视图 - 部署排期"]
    A --> D["日历视图 - 按日查看"]
    A --> E["看板视图 - 按状态分列"]
    A --> F["表单视图 - 行业组提交入口"]
    A --> G["仪表盘 - 统计概览"]
    
    style C fill:#4CAF50,color:#fff
    style D fill:#2196F3,color:#fff
    style E fill:#FF9800,color:#fff
    style G fill:#9C27B0,color:#fff
```

---

## 五、行业组用户体验优化

### 5.1 提交入口设计

> 行业组人员不应直接操作表格，而应通过 **表单视图** 提交部署需求，降低使用门槛。

```
行业组填写流程:
┌─────────────────────────────────────┐
│   部署需求提交表单（表单视图）         │
│                                     │
│   ① 选择: 新部署 / 升级              │
│   ② 填写项目基本信息                 │
│   ③ 上传部署资源附件                 │
│   ④ 填写必要条件说明                 │
│   ⑤ 选择优先级                      │
│   ⑥ 填写期望部署日期                │
│   ⑦ 提交                            │
│                                     │
│   → 自动触发创建部署状态记录          │
│   → 自动通知特战队                   │
└─────────────────────────────────────┘
```

### 5.2 查询入口设计

```
行业组查询流程:
┌─────────────────────────────────────┐
│   部署进度看板（看板视图）            │
│                                     │
│   待排期  │  已排期  │  部署中  │  已完成  │
│   ┌───┐  │  ┌───┐  │  ┌───┐  │  ┌───┐  │
│   │P01│  │  │P03│  │  │P02│  │  │P05│  │
│   │P04│  │  │   │  │  │   │  │  │P06│  │
│   └───┘  │  └───┘  │  └───┘  │  │P07│  │
│          │         │         │  └───┘  │
│                                     │
│   点击卡片 → 查看部署详情            │
│   包含: 状态、部署人、进度、时间线    │
└─────────────────────────────────────┘
```

---

## 六、敏感信息安全策略

| 信息类型 | 处理方式 | 说明 |
|---------|---------|------|
| SSH 密码 | ❌ 不存入多维表格 | 使用密码管理器（如 1Password / Vault）单独管理 |
| 管理后台密码 | ❌ 不存入多维表格 | 同上 |
| VPN 账号密码 | ❌ 不存入多维表格 | 同上 |
| 公网 IP | ⚠️ 字段权限控制 | 仅特战队和小组长可见 |
| 内网 IP | ⚠️ 字段权限控制 | 仅特战队和小组长可见 |

> **安全提醒**: 金山多维表格作为在线协作工具，**严禁**在表格中存储任何明文密码。建议统一使用 **密码管理平台** 管理所有凭据，表格中仅存储「密码存储路径/编号」的引用。

---

## 七、远期 RMDC 集成规划

### 7.1 数据迁移路径

```mermaid
graph LR
    A["金山多维表格(当前方案)"] -->|API导出| B["数据清洗 ETL"]
    B -->|API导入| C["RMDC系统(远期目标)"]
    
    A -->|阶段1| D["业务验证期 跑通流程"]
    D -->|阶段2| E["模板固化期 优化表结构"]
    E -->|阶段3| C
```

### 7.2 设计原则

- **字段命名规范化**: 当前表格的字段命名应与 RMDC 数据库 Schema 保持一致，降低迁移成本
- **状态枚举统一**: 部署状态的枚举值应提前定义常量表，一致对齐
- **API 预留**: 利用金山多维表格的开放 API，定期将数据同步到内部数据库备份

---

## 八、实施计划

| 阶段 | 时间 | 内容 | 交付物 |
|------|------|------|-------|
| Phase 1 | 第 1 周 | 创建优化后的表结构 + 基础视图 | 7 张数据表 + 5 个视图 |
| Phase 2 | 第 2 周 | 配置自动化规则 + 权限设置 | 自动化规则 7 条 + 权限矩阵 |
| Phase 3 | 第 3 周 | 创建表单入口 + 仪表盘 | 表单视图 2 个 + 仪表盘 1 个 |
| Phase 4 | 第 4 周 | 试运行 + 收集反馈 + 调整 | 试运行报告 |
| Phase 5 | 持续 | RMDC 集成设计 + 数据迁移准备 | 迁移方案文档 |

---

## 九、总结

### 现有方案的优点 ✅
1. **数据建模思路正确** — 以部署状态表为核心锚表的设计符合一对多关系
2. **表结构划分合理** — 环境、网络、中间件、业务分表管理，职责清晰
3. **关联关系设计到位** — 子表通过「所属部署」字段关联核心表

### 需要重点补强的方面 🔧
1. **视图层面** — 必须增加甘特图、日历、看板、仪表盘视图（核心差距）
2. **流程自动化** — 状态变更触发、自动化创建、通知机制
3. **权限管控** — 不同角色的数据可见性和可编辑性
4. **用户体验** — 行业组通过表单提交，看板查询进度
5. **安全策略** — 敏感信息不入表，统一密码管理
6. **状态精细化** — 部署状态从 3 个细化到 6+3 个，增加部署结果字段
7. **远期集成** — 提前规划 RMDC 数据迁移路径
