Files
ocdp-go/frontend/README.md
mangomqy c5e51ed069 ocdp v1
2025-11-13 02:54:06 +00:00

261 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# OCDP Frontend
OCDP (Open Cloud Development Platform) Frontend - **Helm Chart 管理平台**
> 🎯 **专注于 Helm Charts**: 基于后端 OpenAPI 的前端应用,用于浏览、部署和管理 Helm Charts
---
## 🚀 快速开始
### 1. 安装依赖
```bash
npm install
```
### 2. 选择开发模式
本项目支持三种运行模式,通过 `Makefile` 命令启动:
#### **Mode 0** - Mock API热重载推荐快速开发
```bash
make run-0
```
- ✅ 前端:`localhost:5173`Vite 热重载)
- ✅ 后端Mock/Stub 数据(不需要真实后端)
- ✅ 适用:快速 UI 开发和调试
#### **Mode 1** - Real API热重载集成测试
```bash
make run-1
```
- ✅ 前端:`localhost:5173`Vite 热重载)
- ✅ 后端:真实 API`http://localhost:8080`
- ⚠️ 需要后端服务运行
#### **Mode 2** - Docker Compose 部署(生产测试)
```bash
make run-2
```
- ✅ 前端:`localhost:3000`Nginx + Docker 容器)
- ✅ 后端:容器化部署
- ✅ 适用:生产环境测试
### 3. 清理Mode 2
```bash
make clean-2
```
---
## 📋 命令列表
| 命令 | 说明 |
|------|------|
| `make run-0` | Mode 0 - Mock API热重载前端 |
| `make run-1` | Mode 1 - Real API热重载前端 |
| `make run-2` | Mode 2 - Docker Compose 部署 |
| `make clean-2` | 清理 Mode 2 容器 |
---
## 🔌 Backend OpenAPI 集成
### 架构
```
backend/docs/openapi.yaml
OpenAPI Generator
src/api/generated/ (自动生成的 API 客户端)
src/api/client.ts (封装层,支持 Mode 切换)
React Components
```
### API 客户端使用
项目使用 OpenAPI Generator 生成的 TypeScript 客户端,根据运行模式自动切换:
- **Mode 0**: 使用 Mock 数据
- **Mode 1**: 调用真实后端 API`localhost:8080`
- **Mode 2**: Docker 环境,通过 Nginx 反向代理
### 使用示例
```typescript
import { api } from '@/api/client';
// 获取 Registries
const registries = await api.registries.list();
// 获取 Helm Chart 列表(自动过滤,只返回 Charts
const charts = await api.artifacts.list('registry-id', 'repo-name');
// 获取 Chart 详情
const chart = await api.artifacts.get('registry-id', 'repo-name', 'version');
// 获取 Chart 的 values schema用于部署配置
const schema = await api.artifacts.getValuesSchema('registry-id', 'repo-name', 'version');
// 部署 Helm Chart
const instance = await api.instances.create({
name: 'my-app',
namespace: 'default',
registry_id: 'registry-id',
artifact_id: 'repo-name',
version: '1.0.0',
cluster_id: 'cluster-id'
});
```
### 重新生成 API Client
当后端 OpenAPI 规范更新时:
```bash
cd ..
make openapi-gen-frontend
```
---
## 🛠 技术栈
- **React 19** + **TypeScript** - UI 框架
- **Vite 7** - 构建工具和开发服务器
- **Tailwind CSS** - 样式框架
- **OpenAPI Generator** - API 客户端生成
- **Axios** - HTTP 客户端
- **React Router v7** - 路由管理
---
## 🎯 核心功能
-**Helm Chart 浏览**: 从 OCI Registry 浏览 Helm Charts自动过滤
-**Chart 部署**: 部署 Helm Chart 到 Kubernetes 集群
-**实例管理**: 管理已部署的 Helm Chart 实例
-**集群管理**: 管理 Kubernetes 集群连接
-**Registry 管理**: 管理 OCI Registry 配置
-**不支持**: 容器镜像管理(仅 Helm Charts
---
## 📁 项目结构
```
frontend/
├── src/
│ ├── api/
│ │ ├── generated/ # 🤖 OpenAPI 自动生成的客户端
│ │ └── client.ts # API 客户端封装Mode 切换)
│ ├── features/ # 功能模块
│ │ ├── auth/ # 认证
│ │ ├── artifact/ # Helm Charts
│ │ ├── configuration/ # 配置管理
│ │ └── monitoring/ # 监控
│ ├── shared/ # 共享组件
│ ├── app/ # 应用配置
│ └── main.tsx # 入口文件
├── Makefile # 开发命令(三种模式)
├── package.json # 依赖配置
├── vite.config.ts # Vite 配置
├── docker-compose.dev.yml # Docker Compose 配置
├── Dockerfile # 生产构建
└── nginx.conf # Nginx 配置
```
---
## 💡 开发工作流
### 日常开发Mode 0
```bash
make run-0
# 修改代码 → 自动热重载
```
### 集成测试Mode 1
```bash
# 1. 确保后端运行在 localhost:8080
cd ../backend
make run
# 2. 启动前端Mode 1
cd ../frontend
make run-1
```
### 生产测试Mode 2
```bash
make run-2
# 测试生产构建
# 完成后清理:
make clean-2
```
---
## 🐛 常见问题
### Mode 0 - 端口占用
```bash
lsof -ti:5173 | xargs kill -9
```
### Mode 1 - 后端连接失败
确保后端服务运行:
```bash
curl http://localhost:8080/health
```
### Mode 2 - 容器问题
```bash
# 查看日志
docker compose -f docker-compose.dev.yml logs -f
# 清理并重建
make clean-2
make run-2
```
### OpenAPI 客户端更新
```bash
# 在项目根目录执行
cd ..
make openapi-gen-frontend
```
---
## 📚 更多信息
- **后端项目**: `../backend`
- **OpenAPI 规范**: `../backend/docs/openapi.yaml`
- **查看所有命令**: `make help`
---
## 📄 License
MIT