feat: 完善堡垒机与 Agent 智能运维能力

- 支持 Windows Agent 构建、安装脚本和统一上报协议

- 增强 RDP 剪贴板、虚拟盘和文件传输能力

- 新增 AIOps 上下文工具、告警 RCA trace 落库和回放接口

- 重构 docs 模块文档并补充终端、堡垒机、监控、AI Agent 设计
This commit is contained in:
Logan.Li committed 2026-07-05 23:49:36 +08:00
1 parent a9513c2056
commit e0d652d211
169 files changed
+12192 -9116

No files matched your search

+210
View File
@@ -0,0 +1,210 @@
# 数据库设计
## 概述
AIOps 使用 GORM 作为 ORM 框架,支持 SQLite / MySQL / PostgreSQL。
- **默认**: SQLite(零配置,数据文件 `backend/data/aiops.db`)
- **生产**: 推荐使用 MySQL 或 PostgreSQL
首次启动时,`AutoMigrate` 会自动创建所有表。
## 数据模型
### 用户体系
#### users - 用户表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 主键 |
| username | string | 用户名(唯一) |
| password | string | 密码(bcrypt 加密) |
| email | string | 邮箱 |
| phone | string | 手机号 |
| real_name | string | 真实姓名 |
| avatar | string | 头像 URL |
| status | int | 状态(1=正常 0=禁用) |
| last_login | time | 最后登录时间 |
| created_at | time | 创建时间 |
| updated_at | time | 更新时间 |
#### roles - 角色表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 主键 |
| name | string | 角色名称 |
| code | string | 角色代码 |
| description | string | 角色描述 |
| sort | int | 排序 |
#### permissions - 权限表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 主键 |
| name | string | 权限名称 |
| code | string | 权限代码 |
| type | string | 权限类型(menu/btn/api) |
| path | string | 路由路径 |
| method | string | HTTP 方法 |
### 服务器管理
#### servers - 服务器表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 主键 |
| name | string | 服务器名称 |
| hostname | string | 主机名 |
| ip | string | IP 地址 |
| port | int | SSH 端口 |
| os | string | 操作系统 |
| cpu | int | CPU 核数 |
| memory | int64 | 内存(MB) |
| disk | int64 | 磁盘(GB) |
| status | string | 状态(online/offline/maintenance) |
| tags | string | 标签(JSON) |
| cloud_id | uint | 关联云账号 |
| region | string | 地域 |
#### clouds - 云平台表
#### cloud_accounts - 云账号表
#### regions - 地域表
#### domains - 域名表
### K8s 管理
#### k8s_clusters - K8s 集群表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 主键 |
| name | string | 集群名称 |
| version | string | K8s 版本 |
| api_server | string | API Server 地址 |
| kubeconfig | string | Kubeconfig 内容 |
| status | string | 集群状态 |
#### k8s_nodes, k8s_pods, k8s_deployments, k8s_services, k8s_ingresses
### 监控告警
#### alert_rules - 告警规则表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 主键 |
| name | string | 规则名称 |
| description | string | 规则描述 |
| type | string | 告警类型 |
| source | string | 数据源 |
| expression | string | PromQL 表达式 |
| severity | string | 严重级别(critical/warning/info) |
| duration | string | 持续时间 |
| notify_channels | string | 通知渠道(JSON) |
| enabled | bool | 是否启用 |
#### alert_events - 告警事件表
#### notify_channels - 通知渠道表
#### metric_data - 指标数据表
### CI/CD
#### pipelines - 流水线表
#### pipeline_runs - 流水线执行记录表
#### app_releases - 应用发布表
### 自动化运维
#### cron_jobs - 定时任务表
#### scripts - 脚本表
#### task_executions - 任务执行记录表
#### playbooks - Ansible Playbook 表
### 审批流程
#### approval_templates - 审批模板表
#### approval_processes - 审批流程表
#### approval_steps - 审批步骤表
### 其他
#### navigation_groups - 导航分组表
#### navigation_links - 导航链接表
#### audit_logs - 审计日志表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 主键 |
| user_id | *uint | 操作用户 ID |
| module | string | 模块 |
| action | string | 操作类型 |
| resource | string | 资源标识 |
| request | string | 请求内容 |
| response | string | 响应内容 |
| error | string | 错误信息 |
| ip | string | 操作 IP |
| created_at | time | 操作时间 |
## 表关系
```
users ──< user_roles >── roles ──< role_permissions >── permissions
servers ──> cloud_accounts ──> clouds
servers ──> regions
alert_rules ──< alert_events
alert_rules ──> notify_channels
pipelines ──< pipeline_runs
app_releases ──> pipelines
approval_templates ──< approval_processes ──< approval_steps
navigation_groups ──< navigation_links
```
## AutoMigrate
表结构在 `backend/pkg/database/database.go` 中定义,服务启动时自动执行:
```go
func AutoMigrate(db *gorm.DB) error {
return db.AutoMigrate(
&models.User{}, &models.Role{}, &models.Permission{},
&models.Server{}, &models.Cloud{}, ...
)
}
```
## 切换数据库
### MySQL
编辑 `backend/config.yaml`:
```yaml
database:
driver: mysql
host: localhost
port: 3306
user: root
password: your_password
dbname: aiops
charset: utf8mb4
```
### PostgreSQL
```yaml
database:
driver: postgres
host: localhost
port: 5432
user: postgres
password: your_password
dbname: aiops
```