# 项目结构 ## 整体结构 ``` aiops/ ├── frontend/ # 前端 (React 19 + TypeScript + Vite) │ ├── src/ │ │ ├── components/ # 业务组件(单文件 <700 行) │ │ │ ├── agent/ # Agent 监控 │ │ │ ├── aiops/ # AI 智能运维 │ │ │ ├── approval/ # 审批流程 │ │ │ ├── automation/ # 自动化运维 │ │ │ ├── cloud/ # 云平台管理 │ │ │ ├── dashboard/ # 仪表盘 │ │ │ ├── deploy/ # CI/CD 部署 │ │ │ ├── k8s/ # K8s 集群管理 │ │ │ ├── monitor/ # 监控告警 │ │ │ ├── server/ # 服务器管理 │ │ │ ├── system/ # 系统管理 │ │ │ └── ui/ # shadcn/ui 基础组件 │ │ ├── hooks/ # 自定义 Hooks │ │ ├── services/ # API 封装 (api.ts / http.ts) │ │ ├── store/ # Zustand 状态管理 │ │ └── types/ # TypeScript 类型 │ ├── package.json │ ├── vite.config.ts │ └── Dockerfile # [legacy] 独立 Nginx 镜像 │ ├── backend/ # 后端 (Go 1.24 + Gin + GORM) │ ├── main.go # 应用入口(CLI + HTTP 服务) │ ├── embed.go # go:embed 前端静态资源 │ ├── static/ # 前端构建产物(embed 目录) │ ├── config/ # Viper 配置加载 │ ├── controller/ # HTTP 处理器 │ ├── middleware/ # JWT / 日志 / CORS │ ├── router/ # 路由注册 │ ├── model/ # GORM 数据模型 │ ├── dto/ # 请求/响应 DTO │ ├── service/ # 业务逻辑层 │ ├── repository/ # 数据访问层 │ ├── seed/ # 种子数据 │ ├── pkg/ # 公共包 │ │ ├── database/ # DB 连接 + AutoMigrate │ │ ├── kubernetesclient/ # 轻量 K8s 客户端 │ │ ├── remoteexec/ # Go-native SSH │ │ └── toolinstaller/ # 工具懒加载 │ ├── config.yaml # 默认配置 │ └── Dockerfile # [legacy] 分离式后端镜像 │ ├── agent/ # 监控 Agent(独立 Go module) │ ├── main.go # CLI 入口 │ ├── collector/ # /proc 指标采集 │ ├── task/ # 远程任务执行 │ ├── reporter/ # HTTP 上报 │ └── deploy/ # install.sh + systemd │ ├── deploy/kubernetes/ # K8s 清单 (devops 命名空间) │ ├── namespace.yaml │ ├── deployment.yaml # embed 单容器, lghost/aiops: │ ├── mysql.yaml / redis.yaml │ └── ... │ ├── docs/ # 开发文档(本目录) ├── docker-compose.yml # MySQL + Redis + AIOps embed ├── docker-compose.k8s.yml # 单应用 + 外部 DB ├── Dockerfile.embed # embed 单容器镜像(推荐) ├── run.sh # 统一入口脚本 ├── aiops # 独立二进制产物(gitignore) └── README.md ``` ## 部署相关文件 | 文件 | 用途 | |------|------| | `run.sh` | build / docker / kubernetes / release 统一入口 | | `Dockerfile.embed` | 生产推荐:前端嵌入后端单容器 | | `docker-compose.yml` | 3 容器:MySQL + Redis + AIOps | | `backend/static/` | `go:embed` 目标,由 `./run.sh build` 同步 | | `./aiops` | 独立二进制输出路径(项目根目录) | ## 技术栈 ### 前端 | 技术 | 版本 | 用途 | |------|------|------| | React | 19+ | 前端框架 | | TypeScript | 5+ | 类型安全 | | Vite | 7+ | 构建工具 | | Tailwind CSS | 3+ | 样式框架 | | shadcn/ui | - | UI 组件库 | | Zustand | - | 状态管理 | | TanStack Query | - | 数据请求 | ### 后端 | 技术 | 版本 | 用途 | |------|------|------| | Go | 1.24+ | 编程语言 | | Gin | v1.10+ | Web 框架 | | GORM | v1.25+ | ORM | | JWT | v5 | 认证 | | Viper | - | 配置管理 | | Zap | - | 结构化日志 | | SQLite / MySQL / Redis | - | 存储 | ## 端口分配 | 服务 | 端口 | 说明 | |------|------|------| | 前端 (Vite dev) | 5173 | 开发模式 | | 后端 / embed 部署 | 8080 | API + WebSocket + SPA | | Docker Compose MySQL | 3306 | 可选暴露 | | K8s NodePort | 30080 | 集群外访问 | ## 版本信息注入 编译时通过 ldflags 注入 `main.Version` / `BuildTime` / `GitCommit`: - `./run.sh build` / `./run.sh build tag v1.5.0` - `Dockerfile.embed` 构建参数 `VERSION` / `BUILD_TIME` / `GIT_COMMIT` - 运行时:`./aiops version`、`GET /version`