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