# RMDC 产品需求文档 (PRD)

**产品名称**: RMDC (Runtime Management & DevOps Center)  
**版本**: v1.0  
**编制日期**: 2026-01-06

---

## 1. 产品背景

### 1.1 业务背景

在复杂的混合云/边缘计算环境中，运维团队面临以下挑战：
- **网络隔离**: 多个项目部署在不同网络环境（内网、边缘、公网）
- **权限分散**: Jenkins、K8S、主机等资源权限管理分散
- **状态不可见**: 无法统一查看各项目的运行状态
- **操作复杂**: 跨网络的操作需要繁琐的VPN/跳板机流程

### 1.2 痛点总结

| 痛点 | 当前方案 | 问题 |
|------|----------|------|
| 跨网络访问 | VPN + 跳板机 | 效率低，依赖人工 |
| 分支权限管理 | Jenkins原生 | 粒度粗，无法精细控制 |
| 项目状态监控 | 分散的监控系统 | 无统一视图 |
| 自动化部署 | 手动脚本 | 可靠性差，无审计 |

---

## 2. 产品定位

RMDC是**以项目(K8s Namespace)为核心维度**的统一运维与交付平台，通过"边缘代理 + 消息总线"架构打通网络边界，提供：

- **统一入口**: 一个平台管理所有项目
- **精细权限**: 分支级别的构建权限控制
- **实时可见**: 项目状态、构建进度、监控数据统一展示
- **全程审计**: 所有操作可追溯

---

## 3. 目标用户

| 用户角色 | 关键诉求 |
|----------|----------|
| **超级管理员(SuperAdmin)** | 管理所有项目、用户、权限 |
| **管理员(Admin)** | 管理负责的项目，分配权限给普通用户 |
| **普通人员(Normal)** | 查看项目信息，触发被授权的构建 |
| **第三方人员(Third)** | 有限度地查看被授权的内容 |

---

## 4. 功能范围

### 4.1 核心功能模块

```mermaid
mindmap
  root((RMDC))
    Jenkins模块
      组织/仓库/分支管理
      分支级权限控制(DAC)
      构建触发与追踪
      镜像打包(DCU)
    项目管理模块
      项目信息CRUD
      部署信息管理
      授权管理(一级)
    消息网关模块
      MQTT消息中继
      指令生命周期
      同步/异步指令
    边缘代理模块
      K8S操作代理
      主机操作代理
      二级授权管理
    监控日志模块
      实时日志查看
      监控数据采集
      告警通知
    用户权限模块
      用户管理
      角色管理
      权限分配
    审计模块
      操作审计
      日志查询
      导出功能
```

### 4.2 第一期功能(MVP)

| 模块 | 功能 | 优先级 |
|------|------|--------|
| Jenkins | 组织/仓库/分支查询 | P0 |
| Jenkins | 构建触发与状态追踪 | P0 |
| Jenkins | 分支级权限控制 | P0 |
| 项目管理 | 项目信息CRUD | P0 |
| 项目管理 | 授权密钥生成 | P0 |
| 用户权限 | RBAC权限管理 | P0 |
| 审计 | 基础操作审计 | P1 |
| DCU | 镜像下载压缩上传 | P1 |

### 4.3 第二期功能

| 模块 | 功能 | 优先级 |
|------|------|--------|
| 消息网关 | MQTT消息中继 | P0 |
| 消息网关 | 指令生命周期管理 | P0 |
| 边缘代理 | K8S操作代理 | P0 |
| 边缘代理 | 主机操作代理 | P1 |
| 监控日志 | 实时日志查看 | P1 |
| 监控日志 | 监控数据展示 | P2 |

---

## 5. 用户故事

### 5.1 Jenkins构建

**作为** 开发人员  
**我需要** 在RMDC平台触发指定分支的构建  
**以便于** 快速验证代码变更，无需登录Jenkins

**验收标准**:
- [ ] 能够查看被授权的分支列表
- [ ] 能够触发分支构建
- [ ] 能够查看构建进度和结果
- [ ] 能够查看构建日志

### 5.2 权限管理

**作为** 管理员  
**我需要** 为团队成员分配分支级构建权限  
**以便于** 确保只有授权人员能够构建特定分支

**验收标准**:
- [ ] 能够按组织/仓库/分支粒度分配权限
- [ ] 权限支持继承（组织→仓库→分支）
- [ ] 能够一键复制其他用户的权限

### 5.3 项目管理

**作为** 超级管理员  
**我需要** 创建和管理项目信息  
**以便于** 统一维护各项目的基本信息和授权配置

**验收标准**:
- [ ] 能够创建项目并录入基本信息
- [ ] 能够管理项目的部署信息和中间件配置
- [ ] 能够生成项目授权密钥
- [ ] 能够导出项目信息

---

## 6. 非功能性需求

### 6.1 性能要求

| 指标 | 要求 |
|------|------|
| API响应时间 | P90 < 300ms |
| 构建状态同步延迟 | < 15s |
| MQTT消息传输延迟 | < 5s |
| 系统可用性 | 99.9% |

### 6.2 安全要求

| 类别 | 要求 |
|------|------|
| 认证 | JWT Token，有效期可配置 |
| 授权 | RBAC + 资源级ACL |
| 传输 | HTTPS/TLS加密 |
| 存储 | 敏感字段AES-256加密 |
| 审计 | 所有写操作记录审计日志 |

### 6.3 兼容性

- **前端**: Chrome 80+, Edge 80+, Firefox 75+
- **后端**: Go 1.21+
- **数据库**: PostgreSQL 13+

---

## 7. 系统边界

### 7.1 与外部系统的关系

| 外部系统 | 交互方式 | 说明 |
|----------|----------|------|
| Jenkins | REST API | 构建管理、状态同步 |
| MinIO | S3 API | 镜像包存储 |
| MQTT Broker | MQTT协议 | 消息中继 |
| K8S | K8S API | 容器编排 |

### 7.2 不在范围内

- 源代码管理（由GitLab/GitHub负责）
- CI/CD编排逻辑（由Jenkins Pipeline负责）
- 容器镜像仓库（由Harbor负责）
- 基础设施管理（由IaaS平台负责）

---

## 8. 约束和假设

### 8.1 约束

1. 必须兼容现有Jenkins配置，不修改Jenkinsfile
2. 边缘项目通过公网MQTT通信，需考虑弱网环境
3. 授权密钥离线部署，不通过网络传输

### 8.2 假设

1. 所有边缘项目均部署在K8S环境
2. 各项目有独立的K8S Namespace
3. MQTT Broker可从公网访问

---

## 9. 版本历史

| 版本 | 日期 | 修改内容 |
|------|------|----------|
| v1.0 | 2026-01-06 | 初始版本 |
