# 运维管理平台第一版开发内容 依据:[液态玻璃后台 UI 设计规范](./liquid-glass-admin-ui-guideline.md) 第一版目标:先做一个可用的运维控制台闭环,让用户可以在同一个平台里查看项目环境状态、管理微服务、执行发布/重启、查看公共数据资源状态,并追踪操作记录。 第一版不做成数据库客户端,也不引入复杂审批流。生产环境相关操作先通过二次确认、影响范围提示和审计记录来控制风险。 ## 1. 第一版范围 ### 1.1 必须完成 - 全局液态玻璃 UI 基础层。 - 项目运维台首页。 - 微服务列表。 - 服务详情页。 - 发布服务抽屉。 - 重启服务确认流程。 - 发布记录页。 - 数据资源状态页。 - 日志与事件页。 - 权限与审计页。 - Mock 数据层或接口适配层。 ### 1.2 第一版暂不做 - 生产数据库在线查询。 - 数据库恢复操作。 - 完整审批流。 - 多租户计费和组织管理。 - 自动扩缩容策略配置。 - 复杂灰度规则编排。 - 实时 WebSocket 日志流,第一版可用轮询或静态刷新替代。 - Kubernetes YAML 在线编辑。 ## 2. 用户角色 | 角色 | 第一版权限 | | --- | --- | | SRE Admin | 查看全部页面,执行发布、重启、回滚入口可见,查看审计 | | Developer | 查看服务、日志、事件,非生产环境可发版,生产环境只读 | | Viewer | 只读查看首页、服务、资源、发布记录 | 权限第一版可以先前端状态控制,但操作接口必须预留服务端校验字段。 ## 3. 全局信息架构 左侧导航: - 总览 - 微服务 - 发布记录 - 数据漫游 - 配置中心 - 日志与事件 - 监控告警 - 权限与审计 第一版页面实现优先级: 1. 总览 2. 微服务 3. 服务详情 4. 发布记录 5. 数据漫游 6. 日志与事件 7. 权限与审计 配置中心和监控告警第一版保留导航入口,可以先显示建设中空状态。 ## 4. 全局框架开发 ### 4.1 App Shell 开发内容: - 左侧玻璃导航。 - 顶部上下文工具栏。 - 主内容区。 - 右侧操作抽屉容器。 - 全局 Toast 容器。 顶部工具栏字段: - 项目:`Project A` - 环境:`dev / test / staging / prod` - 集群:`cluster-cn-1` - 当前告警数 - 当前用户 - 当前角色 验收标准: - 切换项目、环境、集群后,当前页面列表和统计数据同步刷新。 - `prod` 环境下,发布和重启流程显示生产环境提醒。 - 侧边导航、顶部栏、主内容区都符合液态玻璃层级规范。 ### 4.2 全局样式基础 开发内容: - `tokens.css`:颜色、圆角、阴影、字号、间距。 - `glass.css`:玻璃容器、强玻璃面、弱玻璃面。 - `layout.css`:后台布局、页面间距、响应式约束。 - `components.css`:按钮、Badge、表格、输入框、菜单、Tabs。 验收标准: - 所有页面共用同一套 Token。 - 禁止页面内随意写新的主色、状态色和玻璃阴影。 - 不支持 `backdrop-filter` 时,表格和表单仍然可读。 ## 5. 页面开发内容 ## 5.1 总览页 页面目标:用户进入平台后第一眼看到当前项目环境是否健康。 模块: - 顶部筛选栏。 - 状态总览卡。 - 微服务列表。 - 最近事件。 - 数据资源摘要。 状态总览卡: | 卡片 | 数据 | | --- | --- | | 运行中服务数 | healthy 服务数量 | | 异常服务数 | warning + critical 服务数量 | | 最近发布 | 服务名、版本、时间 | | 活跃告警 | 当前未恢复告警数量 | | 数据库状态 | 正常资源数 / 总资源数 | 微服务列表字段: - 服务名 - 状态 - 当前版本 - 实例数 - CPU / 内存 - 最近发布 - 负责人 - 操作:日志、详情、更多 更多菜单: - 发布 - 重启 - 配置 - 回滚 验收标准: - 首页主体是微服务表格,不是卡片墙。 - 异常服务在表格中有清晰状态。 - 点击发布打开发布抽屉。 - 点击重启打开重启确认流程。 - 点击详情进入服务详情页。 ## 5.2 微服务页 页面目标:集中检索和管理所有服务。 筛选能力: - 服务名搜索。 - 状态筛选。 - 负责人筛选。 - 命名空间筛选。 列表字段: - 服务名 - 命名空间 - 状态 - 当前版本 - 实例数 - CPU - 内存 - 最近发布 - 负责人 - 操作 验收标准: - 搜索和筛选可以组合使用。 - 表格支持空状态、加载状态、错误状态。 - 危险操作不直接暴露为大按钮。 ## 5.3 服务详情页 页面目标:围绕单个服务完成状态排查和操作决策。 顶部信息: - 返回按钮。 - 面包屑:项目 / 环境 / 集群 / 服务。 - 服务名。 - 状态 Badge。 - 命名空间。 - 负责人。 - 创建时间。 Tabs: - 概览 - 实例 - 发布 - 日志 - 监控 - 配置 - 事件 概览 Tab: - 状态摘要。 - 依赖服务:MySQL、Redis、MongoDB、MQ。 - 监控概览:CPU、内存、QPS、错误率、平均响应延迟、P95 响应延迟。 - 最近事件。 - 实例列表。 实例 Tab: - Pod / 实例名。 - 节点。 - 重启次数。 - 健康状态。 - 运行时长。 - 操作:查看日志、重启单实例。 发布 Tab: - 当前版本。 - 历史版本。 - 发布策略。 - 操作人。 - 发布时间。 - 状态。 日志 Tab: - 时间范围。 - 日志级别。 - 关键词搜索。 - 服务实例筛选。 - 日志列表。 监控 Tab: - CPU。 - 内存。 - QPS。 - 错误率。 - 延迟。 配置 Tab: - 环境变量只读展示。 - 配置项只读展示。 - Secret 只显示引用名,不显示明文。 事件 Tab: - 健康检查失败。 - 发布事件。 - 重启事件。 - 配置变更事件。 - 依赖连接异常。 验收标准: - 所有 Tabs 有稳定布局,不因为数据为空而塌陷。 - 日志、监控、事件可以按当前服务过滤。 - Secret 不展示明文。 - 从详情页也可以打开发布抽屉和重启确认流程。 ## 5.4 发布服务抽屉 页面目标:完成一次可控、可追踪的服务发布。 入口: - 首页服务行更多菜单。 - 微服务页服务行更多菜单。 - 服务详情页主操作。 流程: 1. 选择版本或镜像 Tag。 2. 选择发布策略。 3. 查看变更内容。 4. 预检查。 5. 确认执行。 6. 发布中。 7. 完成。 发布策略第一版: | 策略 | 第一版能力 | | --- | --- | | 滚动发布 | 可选择,默认推荐 | | 灰度发布 | 可展示为禁用或基础选项 | | 全量发布 | 可选择,但显示高风险提示 | 预检查项: - 实例状态。 - 依赖服务。 - 配置变更。 - 镜像拉取。 生产环境规则: - 显示当前环境 `prod`。 - 显示影响实例数。 - 要求勾选“我已阅读并确认以上信息”。 - 主按钮在勾选前禁用。 - 操作完成后生成审计记录。 验收标准: - 发布抽屉顶部和底部固定,中间可滚动。 - 发布前能看到当前版本和目标版本。 - 发布执行中显示步骤状态。 - 发布成功后服务当前版本更新。 - 发布失败时显示失败原因和查看事件入口。 ## 5.5 重启确认流程 页面目标:安全执行单实例或全部实例重启。 入口: - 服务行更多菜单。 - 服务详情页实例列表。 流程: 1. 选择重启范围:单实例 / 全部实例。 2. 选择重启方式:滚动重启 / 立即重启。 3. 展示影响范围。 4. 确认执行。 5. 展示执行结果。 生产环境规则: - 默认选择滚动重启。 - 立即重启需要二次确认。 - 显示预计影响实例数。 验收标准: - 全部实例重启必须展示影响范围。 - 单实例重启必须展示实例名和节点。 - 操作完成后生成事件和审计记录。 ## 5.6 发布记录页 页面目标:追踪所有发布行为。 筛选能力: - 时间范围。 - 服务。 - 环境。 - 状态。 - 操作人。 表格字段: - 时间。 - 服务。 - 环境。 - 版本变更。 - 发布策略。 - 操作人。 - 状态。 - 耗时。 - 操作:详情、查看事件。 发布详情: - 基本信息。 - 预检查结果。 - 步骤日志。 - 关联审计记录。 验收标准: - 发布成功、失败、执行中、已回滚有清晰状态。 - 点击记录可以查看发布详情。 - 首页和服务详情页的发布记录数据一致。 ## 5.7 数据资源状态页 页面目标:从运维视角查看公共数据资源状态。 资源类型: - MySQL。 - MongoDB。 - Redis。 - MQ / Kafka。 列表字段: - 资源名。 - 类型。 - 状态。 - 主从/副本状态。 - 容量。 - 连接数。 - 慢查询/错误摘要。 - 备份状态。 - 关联服务。 - 负责人。 资源详情: - 基础信息。 - 连接状态。 - 容量趋势。 - 关联服务列表。 - 最近异常事件。 - 最近备份记录。 第一版限制: - 不开放 SQL 查询。 - 不开放 Mongo 查询。 - 不开放备份恢复。 - 可以展示“申请权限”或“建设中”入口,但不执行真实操作。 验收标准: - 用户可以看出 MySQL、MongoDB、Redis、MQ 是否正常。 - 能看出资源和服务之间的关联关系。 - 生产环境不出现直接查询入口。 ## 5.8 日志与事件页 页面目标:集中排查问题。 日志筛选: - 时间范围。 - 服务。 - 实例。 - 级别。 - 关键词。 事件筛选: - 时间范围。 - 服务。 - 类型。 - 状态。 事件类型: - 发布。 - 重启。 - 健康检查。 - 配置变更。 - 数据库连接异常。 验收标准: - 从服务详情跳转过来时自动带上服务过滤条件。 - 错误事件可以跳转到服务详情。 - 日志区支持空状态和错误状态。 ## 5.9 权限与审计页 页面目标:追踪谁在什么环境操作了什么。 审计字段: - 操作时间。 - 操作人。 - 角色。 - 操作对象。 - 操作类型。 - 环境。 - 集群。 - 执行结果。 - 关联发布记录。 - 关联事件。 操作类型: - 发布服务。 - 重启服务。 - 重启实例。 - 回滚版本。 - 查看配置。 - 查看日志。 验收标准: - 发布、重启操作完成后必须出现审计记录。 - 生产环境操作有明显标识。 - 审计列表支持按时间、操作人、环境筛选。 ## 6. 核心组件清单 ### 6.1 基础组件 - `GlassSurface` - `GlassPanel` - `GlassDrawer` - `Button` - `IconButton` - `StatusBadge` - `MetricCard` - `ProgressMeter` - `Tabs` - `Select` - `SegmentedControl` - `SearchInput` - `DropdownMenu` - `Toast` - `Skeleton` - `EmptyState` ### 6.2 业务组件 - `AppSidebar` - `TopContextBar` - `ServiceTable` - `ServiceActionMenu` - `ServiceHeader` - `MetricsGrid` - `MetricLineChart` - `InstanceTable` - `ReleaseDrawer` - `RestartDialog` - `ReleaseRecordTable` - `DataResourceTable` - `EventTimeline` - `AuditTable` ## 7. 数据结构 ### 7.1 Project ```ts type Project = { id: string; name: string; }; ``` ### 7.2 Environment ```ts type Environment = "dev" | "test" | "staging" | "prod"; ``` ### 7.3 Cluster ```ts type Cluster = { id: string; name: string; region: string; }; ``` ### 7.4 Service ```ts type ServiceStatus = "healthy" | "warning" | "critical" | "unknown" | "running"; type Service = { id: string; name: string; namespace: string; status: ServiceStatus; version: string; desiredInstances: number; readyInstances: number; cpuUsage: number; memoryUsage: number; lastReleaseAt: string; owner: string; dependencies: string[]; }; ``` ### 7.5 ServiceInstance ```ts type ServiceInstance = { id: string; name: string; node: string; status: ServiceStatus; restartCount: number; uptime: string; }; ``` ### 7.6 ReleaseRecord ```ts type ReleaseStatus = "success" | "failed" | "running" | "rolled_back"; type ReleaseStrategy = "rolling" | "canary" | "full"; type ReleaseRecord = { id: string; serviceId: string; serviceName: string; environment: Environment; fromVersion: string; toVersion: string; strategy: ReleaseStrategy; operator: string; status: ReleaseStatus; durationSeconds: number; createdAt: string; }; ``` ### 7.7 DataResource ```ts type DataResourceType = "mysql" | "mongodb" | "redis" | "kafka"; type DataResourceStatus = "healthy" | "warning" | "critical" | "unknown"; type DataResource = { id: string; name: string; type: DataResourceType; status: DataResourceStatus; topology: string; capacityUsedPercent: number; connections: number; slowQueryCount: number; backupStatus: string; relatedServices: string[]; owner: string; }; ``` ### 7.8 EventRecord ```ts type EventType = "release" | "restart" | "health_check" | "config_change" | "database_connection"; type EventRecord = { id: string; type: EventType; serviceId?: string; resourceId?: string; level: "info" | "warning" | "error"; message: string; createdAt: string; }; ``` ### 7.9 AuditRecord ```ts type AuditRecord = { id: string; operator: string; role: string; action: string; targetType: "service" | "instance" | "resource" | "config"; targetName: string; environment: Environment; cluster: string; result: "success" | "failed"; relatedId?: string; createdAt: string; }; ``` ## 8. 接口草案 第一版可以先用 Mock 接口,真实后端接入时保持路径和字段稳定。 | 方法 | 路径 | 用途 | | --- | --- | --- | | GET | `/api/projects` | 项目列表 | | GET | `/api/clusters` | 集群列表 | | GET | `/api/dashboard/summary` | 首页统计 | | GET | `/api/services` | 服务列表 | | GET | `/api/services/:id` | 服务详情 | | GET | `/api/services/:id/instances` | 服务实例 | | GET | `/api/services/:id/metrics` | 服务监控 | | GET | `/api/services/:id/logs` | 服务日志 | | GET | `/api/services/:id/events` | 服务事件 | | POST | `/api/services/:id/releases` | 创建发布任务 | | POST | `/api/services/:id/restart` | 重启服务 | | GET | `/api/releases` | 发布记录 | | GET | `/api/releases/:id` | 发布详情 | | GET | `/api/resources` | 数据资源列表 | | GET | `/api/resources/:id` | 数据资源详情 | | GET | `/api/events` | 事件列表 | | GET | `/api/audits` | 审计列表 | 所有列表接口都需要支持: - `projectId` - `environment` - `clusterId` - `page` - `pageSize` ## 9. Mock 数据要求 第一版 Mock 数据必须覆盖以下状态: - Healthy 服务。 - Warning 服务。 - Critical 服务。 - 实例数不满足期望值。 - CPU / 内存较高。 - 发布成功。 - 发布失败。 - 发布中。 - MySQL 正常。 - MongoDB 警告。 - Redis 正常。 - Kafka 异常。 - prod 环境发布确认。 - 权限不足禁用操作。 验收标准: - 不依赖真实后端也能完整走通页面和操作流程。 - Mock 发布成功后,当前服务版本和发布记录同步变化。 - Mock 重启成功后,事件列表和审计列表同步新增记录。 ## 10. 路由建议 ```text /overview /services /services/:serviceId /releases /resources /resources/:resourceId /logs-events /audit /settings /alerts ``` 第一版默认进入 `/overview`。 ## 11. 开发里程碑 ### 11.1 M1:视觉基础和全局框架 交付: - Token。 - 玻璃样式。 - App Shell。 - 侧边导航。 - 顶部上下文工具栏。 - 基础按钮、Badge、表格、输入框。 验收: - 页面整体接近 UI 规范中的液态玻璃风格。 - 基础组件有 hover、active、focus、disabled 状态。 ### 11.2 M2:首页和微服务列表 交付: - 总览页。 - 微服务列表页。 - 服务表格。 - 状态总览卡。 - 搜索和筛选。 验收: - 可以通过首页定位异常服务。 - 可以进入服务详情。 - 可以打开发布和重启入口。 ### 11.3 M3:服务详情和操作流程 交付: - 服务详情页。 - Tabs。 - 监控概览。 - 实例列表。 - 发布抽屉。 - 重启确认。 验收: - 发布流程可完整走完。 - 重启流程可完整走完。 - prod 环境必须出现确认约束。 ### 11.4 M4:记录、资源和审计 交付: - 发布记录页。 - 数据资源状态页。 - 日志与事件页。 - 权限与审计页。 验收: - 发布和重启后有事件记录。 - 发布和重启后有审计记录。 - 数据资源页不暴露生产查询入口。 ### 11.5 M5:联调和验收 交付: - Mock 数据完整。 - 接口适配层稳定。 - 空、加载、错误状态补齐。 - 响应式和可访问性检查。 验收: - 所有第一版页面可通过导航访问。 - 所有第一版操作可从入口到反馈闭环。 - UI 视觉符合液态玻璃规范。 ## 12. 验收清单 ### 12.1 视觉验收 - 页面背景是浅色冰蓝液态玻璃风格。 - 主界面信息密度足够,不是营销页。 - 表格、抽屉、状态卡、菜单的玻璃层级清晰。 - 状态色只用于语义,不滥用。 - 文本不和背景纹理冲突。 ### 12.2 功能验收 - 能切换项目、环境、集群。 - 能查看服务状态。 - 能搜索和筛选服务。 - 能进入服务详情。 - 能执行发布流程。 - 能执行重启流程。 - 能查看发布记录。 - 能查看数据资源状态。 - 能查看日志和事件。 - 能查看审计记录。 ### 12.3 风险验收 - prod 发布必须二次确认。 - prod 重启必须二次确认。 - 危险操作不裸露成主按钮。 - Secret 不显示明文。 - 生产数据库没有直接查询入口。 - 发布和重启都有审计记录。 ### 12.4 状态验收 - 页面有 Loading 状态。 - 页面有 Empty 状态。 - 页面有 Error 状态。 - 操作有 Success 反馈。 - 操作有 Failed 反馈。 - 禁用按钮有原因说明。 ## 13. 第一版最终交付物 - 可运行的前端页面。 - 全局 UI Token 和玻璃样式。 - 第一版 Mock 数据。 - 第一版接口适配层。 - 核心业务组件。 - 发布和重启操作闭环。 - 发布、事件、审计记录闭环。 - README 中补充启动、构建、预览和验证方式。 ## 14. 后续版本方向 第二版建议补充: - 接入真实 Kubernetes / Docker 部署状态。 - 接入真实日志系统。 - 接入 Prometheus 或其他监控数据。 - 增加灰度发布策略。 - 增加回滚流程。 - 增加审批流。 - 增加数据库备份恢复。 - 增加告警规则管理。 - 增加团队和权限模型。