chore: 初始化项目骨架结构

- 创建前端 Vue3 项目目录结构(components、views、router、stores 等)
- 创建后端 Go 项目目录结构(cmd、internal、pkg 等分层架构)
- 创建部署配置目录(docker、k8s)
- 创建文档目录
- 添加 .gitignore 忽略规则
- 添加 Makefile 构建脚本
- 更新 README.md 项目说明文档
- 每个目录添加 .gitkeep 文件说明目录用途
This commit is contained in:
2026-07-14 14:34:10 +08:00
parent 8b46d5c403
commit 1bd5921fd4
33 changed files with 413 additions and 2 deletions
+50
View File
@@ -0,0 +1,50 @@
# XINFRA .gitignore
# Go
*.exe
*.exe~
*.dll
*.so
*.dylib
*.test
*.out
/go.sum
/vendor/
# Node.js
node_modules/
dist/
.env
.env.local
.env.*.local
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
.DS_Store
# Logs
*.log
logs/
# Temp files
tmp/
temp/
# Build output
build/
bin/
# Coverage
coverage/
*.cover
*.coverprofile
# Docker
docker-compose.override.yml
# Kubernetes secrets (local dev)
*-secret.yaml
+85
View File
@@ -0,0 +1,85 @@
# XINFRA Makefile
.PHONY: help build run test docker clean
# 默认目标
help:
@echo "XINFRA - 统一运维入口平台"
@echo ""
@echo "可用命令:"
@echo " make help - 显示此帮助信息"
@echo " make build - 构建前后端项目"
@echo " make run - 启动开发服务器"
@echo " make test - 运行测试"
@echo " make docker - 构建 Docker 镜像"
@echo " make clean - 清理构建产物"
@echo ""
# 构建前后端项目
build: build-frontend build-server
build-frontend:
@echo "Building frontend..."
cd frontend && npm install && npm run build
build-server:
@echo "Building server..."
cd server && go build -o bin/xinfra ./cmd/server
# 启动开发服务器
run: run-frontend run-server
run-frontend:
@echo "Starting frontend dev server..."
cd frontend && npm run dev
run-server:
@echo "Starting server..."
cd server && go run ./cmd/server
# 运行测试
test: test-frontend test-server
test-frontend:
@echo "Running frontend tests..."
cd frontend && npm run test
test-server:
@echo "Running server tests..."
cd server && go test ./...
# 构建 Docker 镜像
docker: docker-frontend docker-server
docker-frontend:
@echo "Building frontend Docker image..."
docker build -t xinfra-frontend:latest -f deploy/docker/Dockerfile.frontend .
docker-server:
@echo "Building server Docker image..."
docker build -t xinfra-server:latest -f deploy/docker/Dockerfile.server .
# 清理构建产物
clean:
@echo "Cleaning build artifacts..."
rm -rf frontend/dist frontend/node_modules
rm -rf server/bin server/vendor
find . -type d -name vendor -exec rm -rf {} + 2>/dev/null || true
# 本地开发环境
dev-up:
@echo "Starting local development environment..."
docker-compose up -d
dev-down:
@echo "Stopping local development environment..."
docker-compose down
# 数据库迁移
migrate-up:
@echo "Running database migrations..."
cd server && go run ./cmd/server migrate up
migrate-down:
@echo "Rolling back database migrations..."
cd server && go run ./cmd/server migrate down
+126 -2
View File
@@ -1,2 +1,126 @@
# xinfra # XINFRA - 统一运维入口平台
Empowering developers to focus on delivery, ops to control risk, and management to gain full visibility — this is Xinfra in action.
XINFRA 是一个统一运维入口平台,整合多个运维子系统,提供统一的登录认证、子系统导航、审计日志和 Ansible 运维调度功能。
## 项目特性
- 🔐 **统一认证**:支持 LDAP + SAML + OAuth 2.0 认证
- 🎯 **子系统导航**:卡片式展示 6 个运维子系统,支持 SSO 跳转
- 📊 **审计面板**:登录审计 + 运维操作审计,完整的操作追溯
- 🚀 **Ansible 调度**:Playbook 执行、实时日志推送
- 🔒 **安全可靠**:JWT 认证、HTTPS 传输、敏感配置 K8s Secret 管理
## 技术栈
| 层级 | 技术 |
|------|------|
| 后端 | Go 1.21+ / Gin |
| 前端 | Vue 3.3+ / Element Plus / Vite |
| 数据库 | MySQL 8.0 |
| 缓存 | Redis |
| 部署 | Kubernetes + Nginx |
## 项目结构
```
xinfra/
├── frontend/ # 前端 Vue 3 项目
│ ├── src/
│ │ ├── api/ # API 请求封装
│ │ ├── components/ # 可复用组件
│ │ ├── composables/ # 组合式函数
│ │ ├── layouts/ # 页面布局
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── views/ # 页面视图
│ │ └── utils/ # 工具函数
│ └── ...
├── server/ # 后端 Go 项目
│ ├── cmd/ # 程序入口
│ ├── internal/ # 内部包(分层架构)
│ ├── pkg/ # 可复用公共包
│ └── migrations/ # 数据库迁移
├── deploy/ # 部署配置
│ ├── docker/ # Docker 构建配置
│ └── k8s/ # Kubernetes 配置
├── docs/ # 项目文档
└── ...
```
## 快速开始
### 环境要求
- Go 1.21+
- Node.js 18+
- MySQL 8.0
- Redis 7.0+
### 本地开发
1. 克隆项目
```bash
git clone <repository-url>
cd xinfra
```
2. 启动开发环境
```bash
make dev-up
```
3. 启动前端开发服务器
```bash
make run-frontend
```
4. 启动后端开发服务器
```bash
make run-server
```
### 构建部署
1. 构建项目
```bash
make build
```
2. 构建 Docker 镜像
```bash
make docker
```
3. 部署到 Kubernetes
```bash
kubectl apply -f deploy/k8s/
```
## 开发规范
### Git 提交规范
使用语义化提交信息:
- `feat:` 新功能
- `fix:` 修复 bug
- `docs:` 文档更新
- `style:` 代码格式调整
- `refactor:` 重构
- `test:` 测试相关
- `chore:` 构建/工具相关
### 代码规范
- Go 代码遵循 `gofmt` 格式
- Vue/TypeScript 代码遵循 ESLint 规范
- 提交前请确保代码通过所有测试
## 相关文档
- [MVP 方案文档](docs/mvp-skeleton-plan.md)
- [API 接口文档](docs/api.md)(待补充)
- [部署文档](docs/deployment.md)(待补充)
## 许可证
[待添加]
+5
View File
@@ -0,0 +1,5 @@
# Docker 构建配置
存放 Docker 镜像构建相关文件:
- Dockerfile.frontend: 前端镜像,基于 Node 构建 + Nginx 托管静态文件
- Dockerfile.server: 后端镜像,基于 Go 编译 + 运行时最小镜像
+6
View File
@@ -0,0 +1,6 @@
# Kubernetes 部署配置
存放 K8s 资源编排配置文件:
- frontend.yaml: 前端 Deployment,副本数、Service、环境变量配置
- server.yaml: 后端 Deployment,副本数、Service、Secret 挂载
- ingress.yaml: Ingress 配置,域名路由规则、TLS 证书
+6
View File
@@ -0,0 +1,6 @@
# 项目文档目录
存放项目相关文档:
- mvp-skeleton-plan.md: MVP 方案文档,定义代码骨架和实现要点
- api.md: API 接口文档
- deployment.md: 部署文档
+5
View File
@@ -0,0 +1,5 @@
# 静态资源目录
存放静态资源文件,构建时原样复制到 dist 目录:
- favicon.ico: 网站图标
- 图片资源等
+7
View File
@@ -0,0 +1,7 @@
# API 请求模块
存放封装后端 API 请求的文件:
- request.ts: Axios 实例封装,请求拦截器(Token 注入)、响应拦截器(错误处理)
- auth.ts: 认证相关接口:登录、登出、获取用户信息
- audit.ts: 审计相关接口:查询登录审计、运维操作审计
- subsystem.ts: 子系统相关接口:获取子系统列表、SSO 跳转 URL
+6
View File
@@ -0,0 +1,6 @@
# 可复用 UI 组件
存放按功能模块组织的可复用组件:
- Layout/: 页面布局组件(AppHeader、AppSidebar、AppMain)
- SubsystemCard.vue: 子系统卡片组件
- AuditLogTable.vue: 审计日志表格组件
+6
View File
@@ -0,0 +1,6 @@
# 布局组件
存放页面布局相关的组件:
- AppHeader.vue: 顶部导航栏,显示 Logo、用户名、退出登录
- AppSidebar.vue: 侧边菜单栏,导航菜单项(仪表盘、子系统、审计)
- AppMain.vue: 主内容区,包裹路由视图的容器
+4
View File
@@ -0,0 +1,4 @@
# Vue 3 组合式函数
存放可复用的业务逻辑:
- useAuth.ts: 认证状态管理,包括登录、登出、Token 校验、路由守卫
+4
View File
@@ -0,0 +1,4 @@
# 页面布局定义
存放不同页面的布局组件:
- DefaultLayout.vue: 默认布局,包含顶栏 + 侧边栏 + 内容区
+4
View File
@@ -0,0 +1,4 @@
# 前端路由配置
存放路由相关配置:
- index.ts: 路由实例,定义路由表、路由守卫(未登录重定向)
+5
View File
@@ -0,0 +1,5 @@
# Pinia 状态管理
存放全局状态管理模块:
- auth.ts: 认证状态,存储 Token、用户信息,提供登录/登出 actions
- user.ts: 用户信息状态,缓存当前登录用户的详细信息
+4
View File
@@ -0,0 +1,4 @@
# 通用工具函数
存放不依赖业务逻辑的通用工具:
- auth.ts: 认证工具,Token 解析、过期校验、本地存储读写
+7
View File
@@ -0,0 +1,7 @@
# 页面视图组件
存放页面级组件,一个文件对应一个完整页面:
- auth/: 认证相关页面(Login.vue)
- dashboard/: 仪表盘页面(Index.vue)
- subsystem/: 子系统导航页面(Navigation.vue)
- audit/: 审计面板页面(LoginAudit.vue、OpsAudit.vue)
+5
View File
@@ -0,0 +1,5 @@
# 审计面板页面
存放审计相关的视图组件:
- LoginAudit.vue: 登录审计页,查询登录记录、按时间/IP/结果筛选
- OpsAudit.vue: 运维操作审计页,查询操作记录、按类型/状态筛选
+4
View File
@@ -0,0 +1,4 @@
# 认证相关页面
存放认证相关的视图组件:
- Login.vue: 登录页,包含用户名密码表单、LDAP 认证入口
+4
View File
@@ -0,0 +1,4 @@
# 仪表盘页面
存放仪表盘相关的视图组件:
- Index.vue: 首页仪表盘,展示系统概览、快捷入口
+4
View File
@@ -0,0 +1,4 @@
# 子系统导航页面
存放子系统导航相关的视图组件:
- Navigation.vue: 子系统导航页,6 个子系统卡片网格展示
+4
View File
@@ -0,0 +1,4 @@
# 服务启动入口
存放 Go 程序入口文件:
- main.go: 服务启动入口,初始化配置、数据库、路由,启动 HTTP 服务
+4
View File
@@ -0,0 +1,4 @@
# 配置管理模块
存放配置加载相关代码:
- config.go: 配置加载,读取 YAML 配置文件,支持环境变量覆盖
+8
View File
@@ -0,0 +1,8 @@
# HTTP 处理器层(Controller)
存放请求处理器,负责接收请求、校验参数、调用 Service:
- auth.go: 认证处理器,处理登录/登出/用户信息请求
- audit.go: 审计处理器,处理登录审计/运维操作审计查询请求
- subsystem.go: 子系统处理器,处理子系统列表/SSO URL 生成请求
- task.go: 任务处理器,处理 Ansible 任务创建/状态查询请求
- response.go: 统一响应,定义标准 JSON 响应格式和错误码
+6
View File
@@ -0,0 +1,6 @@
# HTTP 中间件
存放请求处理前后执行的通用逻辑:
- auth.go: 认证中间件,校验 JWT Token,注入用户信息到 Context
- logger.go: 日志中间件,记录请求方法、路径、耗时、状态码
- audit.go: 审计中间件,自动记录非 GET 请求的操作审计日志
+6
View File
@@ -0,0 +1,6 @@
# 数据模型层
存放数据库表结构和业务实体定义:
- user.go: 用户模型,对应 users 表,定义用户字段和状态枚举
- audit.go: 审计模型,对应 login_audit / ops_audit 表
- subsystem.go: 子系统模型,对应 subsystems 表,定义子系统信息
+5
View File
@@ -0,0 +1,5 @@
# 数据访问层(DAO)
存放数据库 CRUD 操作封装:
- user.go: 用户仓储,用户查询、创建、更新、LDAP DN 映射
- audit.go: 审计仓储,审计记录插入、分页查询、条件筛选
+4
View File
@@ -0,0 +1,4 @@
# 路由注册模块
存放 API 路由配置:
- router.go: 路由注册,定义 API 路由表,绑定 Handler 和 Middleware
+8
View File
@@ -0,0 +1,8 @@
# 业务逻辑层
存放核心业务逻辑,编排 Repository:
- auth.go: 认证服务,LDAP 认证、本地降级认证、JWT 生成
- ldap.go: LDAP 服务,封装 LDAP 连接、查询、认证逻辑
- audit.go: 审计服务,记录登录审计、运维操作审计
- subsystem.go: 子系统服务,子系统查询、OAuth 2.0 SSO URL 生成
- ansible.go: Ansible 调度服务,创建任务、执行 Playbook、推送日志
+4
View File
@@ -0,0 +1,4 @@
# WebSocket 实时推送模块
存放 WebSocket 连接管理相关代码:
- hub.go: WebSocket Hub,管理客户端连接,广播 Ansible 任务日志
+4
View File
@@ -0,0 +1,4 @@
# 数据库迁移脚本
存放按版本管理的表结构变更脚本:
- 001_init.sql: 初始化迁移,创建 users / subsystems / audit / ansible_tasks 表
+4
View File
@@ -0,0 +1,4 @@
# 数据库连接管理
存放数据库连接相关代码:
- mysql.go: MySQL 连接池,初始化连接、健康检查、优雅关闭
+4
View File
@@ -0,0 +1,4 @@
# LDAP 客户端封装
存放可复用的 LDAP 相关代码:
- client.go: LDAP 客户端,连接管理、用户认证、属性查询
+5
View File
@@ -0,0 +1,5 @@
# SSO 协议处理
存放 SSO 相关协议实现:
- oauth2.go: OAuth 2.0 客户端,主系统↔子系统的 Authorization Code 流程
- saml.go: SAML 处理,主系统↔LDAP 的 SAML 断言生成和验证