docs(console): update architecture to frontend-only, remove backend project

This commit is contained in:
Sam 2026-02-02 10:13:35 +08:00
parent bbecd7348a
commit e6827ede0b

View File

@ -4,41 +4,53 @@
**项目名称**: Fengling.Console **项目名称**: Fengling.Console
**中文名称**: 风铃运管中心 **中文名称**: 风铃运管中心
**定位**: 统一运维管理平台 **定位**: 统一运维管理平台前端Vue项目
## 架构整合 ## 架构设计
### 1. 后端整合 ### 前端(新建)
- **原项目**: `src/YarpGateway/` (YARP Gateway) - **项目**: `src/Fengling.Console.Web/` (Vue 3 + Vite)
- **整合到**: `src/Fengling.Console/` (新建) - **功能**:
- **新增功能**: OAuth Client管理
### 2. 前端整合
- **原项目**: `src/YarpGateway.Admin/` (Vue 3 + Vite)
- **整合到**: `src/Fengling.Console.Web/` (新建)
- **功能扩展**:
- 网关路由管理 - 网关路由管理
- 租户管理 - 租户管理
- OAuth Client管理 - OAuth Client管理
- 用户管理通过AuthService API - 用户管理
- 集群实例管理
### 后端API已有
1. **Fengling.AuthService** - 认证服务
- OAuth Client管理 API
- 用户管理 API
- Token 端点
2. **YarpGateway** - 网关服务
- 租户管理 API
- 路由管理 API
- 集群实例管理 API
## 功能模块 ## 功能模块
### 模块1: 网关管理 ### 模块1: 认证登录
- OAuth2 授权码流登录
- Token刷新机制
- 登出功能
- Client: fengling-console
### 模块2: 网关管理
- 租户列表 - 租户列表
- 租户路由配置 - 租户路由配置
- 集群实例管理 - 集群实例管理
- 全局路由配置 - 全局路由配置
- 负载均衡策略 - 负载均衡策略
### 模块2: OAuth Client管理 ### 模块3: OAuth Client管理
- Client ID/Secret管理 - Client ID/Secret管理
- 重定向URI配置 - 重定向URI配置
- 授权类型配置 - 授权类型配置
- Scope配置 - Scope配置
- Client状态管理 - Client状态管理
### 模块3: 用户管理 ### 模块4: 用户管理
- 用户列表 - 用户列表
- 用户角色分配 - 用户角色分配
- 租户分配 - 租户分配
@ -47,12 +59,11 @@
## 认证集成 ## 认证集成
### Fengling.Console作为OAuth Client ### Fengling.Console作为OAuth Client
需要在AuthService初始化时注册: 已在AuthService中预注册:
```csharp ```yaml
// Client配置
ClientId: "fengling-console" ClientId: "fengling-console"
ClientSecret: "console-secret-xxx" ClientSecret: "console-secret-change-in-production"
RedirectUris: ["http://console.fengling.local/auth/callback"] RedirectUris: ["http://console.fengling.local/auth/callback"]
PostLogoutRedirectUris: ["http://console.fengling.local/"] PostLogoutRedirectUris: ["http://console.fengling.local/"]
Scopes: ["api", "offline_access"] Scopes: ["api", "offline_access"]
@ -63,95 +74,130 @@ GrantTypes: ["authorization_code", "refresh_token"]
``` ```
src/ src/
├── Fengling.AuthService/ # 认证服务(已完成部分) ├── Fengling.AuthService/ # 认证服务(已完成)
├── Fengling.Console/ # 运管中心后端(新建)
│ ├── Controllers/ │ ├── Controllers/
│ │ ├── Gateway/ # 网关管理 │ │ ├── OAuthClientsController.cs # OAuth Client管理API
│ │ ├── OAuth/ # OAuth Client管理 │ │ └── AuthController.cs # 认证API
│ │ └── Users/ # 用户管理代理 │ ├── Models/
│ ├── Services/ │ │ ├── OAuthApplication.cs
│ │ ├── ApplicationUser.cs
│ │ └── ApplicationRole.cs
│ └── Data/ │ └── Data/
├── Fengling.Console.Web/ # 运管中心前端(新建) │ ├── SeedData.cs # 预注册fengling-console
│ ├── src/ │ └── ApplicationDbContext.cs
│ │ ├── views/ ├── YarpGateway/ # 网关服务(已有)
│ │ │ ├── gateway/ # 网关管理 │ ├── Controllers/
│ │ │ ├── oauth/ # OAuth管理 │ │ ├── GatewayConfigController.cs
│ │ │ └── users/ # 用户管理 │ │ ├── TenantController.cs
│ │ └── components/ │ │ └── ClusterInstanceController.cs
│ └── YarpGateway.Admin/ # 原有代码迁移 │ ├── Models/
└── YarpGateway/ # 网关服务(保留) │ │ ├── GwTenant.cs
│ │ ├── GwTenantRoute.cs
│ │ └── GwServiceInstance.cs
│ └── Data/
│ └── GatewayDbContext.cs
└── Fengling.Console.Web/ # 运管中心前端(新建)
├── src/
│ ├── views/
│ │ ├── Auth/ # 认证相关
│ │ │ ├── Login.vue
│ │ │ └── Callback.vue
│ │ ├── Gateway/ # 网关管理
│ │ │ ├── TenantList.vue
│ │ │ ├── TenantRoutes.vue
│ │ │ ├── ClusterInstances.vue
│ │ │ └── GlobalRoutes.vue
│ │ ├── OAuth/ # OAuth管理
│ │ │ └── ClientList.vue
│ │ └── Users/ # 用户管理
│ │ └── UserList.vue
│ ├── components/
│ ├── api/
│ │ ├── auth.ts # AuthService API
│ │ ├── gateway.ts # Gateway API
│ │ └── oauth.ts # OAuth API
│ ├── stores/
│ │ ├── auth.ts
│ │ └── user.ts
│ └── router/
│ └── index.ts
├── package.json
└── vite.config.ts
```
## API调用关系
```
Fengling.Console.Web (前端)
├── OAuth2登录 → Fengling.AuthService (/connect/authorize)
├── OAuth Client管理 → Fengling.AuthService (/api/oauthclients)
├── 用户管理 → Fengling.AuthService (/api/users)
├── 租户管理 → YarpGateway (/api/tenants)
├── 路由管理 → YarpGateway (/api/routes)
└── 集群管理 → YarpGateway (/api/instances)
``` ```
## 技术栈 ## 技术栈
### 后端 (Fengling.Console)
- .NET 10.0
- ASP.NET Core Web API
- EF Core 10.0
- PostgreSQL
- OpenTelemetry
### 前端 (Fengling.Console.Web) ### 前端 (Fengling.Console.Web)
- Vue 3 + TypeScript - Vue 3 + TypeScript
- Vite - Vite
- Element Plus - Element Plus (UI组件库)
- Pinia - Pinia (状态管理)
- Vue Router - Vue Router
- Axios (HTTP客户端)
### 后端API
- Fengling.AuthService: .NET 10.0, OpenIddict 7.2.0
- YarpGateway: .NET 10.0, YARP 2.2.0
## 实施计划 ## 实施计划
### Phase 1: 认证服务扩展 ### Phase 1: 认证服务扩展(已完成)
1. [ ] Task 5-9: 完成AuthService基础功能 - [x] Task 1-9: 完成AuthService基础功能
2. [ ] Task 10: 添加OAuth Client模型和管理 - [x] Task 10: 添加OAuth Client模型和管理API
3. [ ] Task 11: 预注册Fengling.Console作为Client - [x] Task 11: 预注册Fengling.Console作为Client
### Phase 2: 运管中心后端 ### Phase 2: 运管中心前端(待开始)
1. [ ] Task 12: 创建Fengling.Console项目 - [ ] Task 12: 创建Fengling.Console.Web Vue项目
2. [ ] Task 13: 迁移网关管理功能 - [ ] Task 13: 配置项目结构和依赖
3. [ ] Task 14: 添加OAuth Client管理API - [ ] Task 14: 实现OAuth2登录流程
4. [ ] Task 15: 添加用户管理代理API - [ ] Task 15: 实现网关管理界面迁移YarpGateway.Admin
- [ ] Task 16: 实现OAuth Client管理界面
### Phase 3: 运管中心前端 - [ ] Task 17: 实现用户管理界面
1. [ ] Task 16: 创建Fengling.Console.Web项目 - [ ] Task 18: 配置API封装调用AuthService和YarpGateway
2. [ ] Task 17: 迁移YarpGateway.Admin代码 - [ ] Task 19: 添加Dockerfile和部署配置
3. [ ] Task 18: 添加OAuth管理界面
4. [ ] Task 19: 集成OAuth认证登录
## 依赖关系 ## 依赖关系
``` ```
Fengling.Console.Web Fengling.Console.Web (Vue前端)
↓ (OAuth 2.0) ↓ (OAuth2)
Fengling.Console Fengling.AuthService (认证API)
↓ (数据库) ↓ (JWT Token验证)
PostgreSQL YarpGateway (网关API)
↓ (路由配置)
YarpGateway
``` ```
## 数据库设计 ## 环境配置
### OAuth Applications表 ### 开发环境
```sql ```env
CREATE TABLE oauth_applications ( VITE_AUTH_SERVICE_URL=http://auth.fengling.local:5000
id BIGSERIAL PRIMARY KEY, VITE_GATEWAY_SERVICE_URL=http://gateway.fengling.local:5000
client_id VARCHAR(100) UNIQUE NOT NULL, VITE_CLIENT_ID=fengling-console
client_secret VARCHAR(200), VITE_REDIRECT_URI=http://console.fengling.local:5173/auth/callback
display_name VARCHAR(100), ```
redirect_uris TEXT[],
post_logout_redirect_uris TEXT[], ### 生产环境
scopes TEXT[], ```env
grant_types TEXT[], VITE_AUTH_SERVICE_URL=https://auth.fengling.local
client_type VARCHAR(20), VITE_GATEWAY_SERVICE_URL=https://gateway.fengling.local
consent_type VARCHAR(20),
status VARCHAR(20),
created_at TIMESTAMP DEFAULT NOW()
);
``` ```
## 注意事项 ## 注意事项
1. **向后兼容**: YarpGateway继续独立运行 1. **无后端项目**: Fengling.Console是纯前端项目
2. **渐进式迁移**: 先完成Console后端再迁移前端 2. **直接调用现有API**: 复用AuthService和YarpGateway的API
3. **统一认证**: 所有管理界面通过AuthService OAuth登录 3. **OAuth2认证**: 使用授权码流登录
4. **权限控制**: Console内部API也需要认证 4. **Token管理**: 自动刷新access token
5. **跨域处理**: 配置CORS或使用同域代理