# BladeX 完整架构说明

## 一、BladeX 完整系统架构

BladeX 是一个**前后端分离**的企业级微服务架构，完整的系统包含多个项目：

```
BladeX 完整架构
├── 后端项目（当前）
│   ├── martial-master              # Spring Boot 后端 API（当前项目）
│   └── martial-tool                # BladeX 框架核心（依赖库）
│
├── 前端项目（独立仓库）
│   ├── Saber (推荐)                # Vue 3 + Element Plus 管理后台 ⭐
│   └── Sword (旧版)                # Vue 2 + Avue 管理后台（已不推荐）
│
└── 可选组件
    ├── BladeX-Auth                 # 独立认证中心（微服务版）
    ├── BladeX-Gateway              # 网关服务（微服务版）
    └── BladeX-Register             # 注册中心（Nacos）
```

### 当前项目状态

根据 `CLAUDE.md` 的说明：
```
"The frontend is a separate Vue.js project (not in this repository)"
```

**当前您手上只有后端项目** `martial-master`，前端管理系统是独立的项目。

---

## 二、前端管理系统 - Saber

### 2.1 Saber 是什么？

**Saber** 是 BladeX 官方的 Vue 3 管理后台系统，提供可视化的管理界面。

**主要功能**：
- 🏠 **仪表盘**：数据统计、图表展示
- 👥 **用户管理**：用户增删改查、角色分配
- 🔐 **权限管理**：角色管理、菜单管理、权限分配
- 🏢 **组织架构**：部门管理、岗位管理
- 📋 **系统管理**：字典管理、参数配置、日志查看
- 🗂️ **资源管理**：文件上传、OSS 配置
- ⚙️ **开发工具**：代码生成器、数据源管理
- 🥋 **业务功能**：武术比赛管理（根据菜单配置）

### 2.2 Saber 技术栈

```
前端框架：Vue 3
UI 组件：Element Plus
状态管理：Pinia
路由：Vue Router 4
构建工具：Vite
HTTP 库：Axios
```

### 2.3 Saber 项目地址

**官方仓库**（需要授权访问）：
```
Gitee: https://gitee.com/smallc/Saber
GitHub: https://github.com/chillzhuang/Saber
```

**注意**：BladeX 是商业框架，完整源码需要购买授权。

### 2.4 Saber 运行端口

根据配置文件中的线索：
```yaml
# application-dev.yml
blade:
  token:
    domain: http://127.0.0.1:1888  # 前端地址
```

**默认端口**：`1888`（开发环境）

---

## 三、前后端交互流程

```
┌─────────────────────────────────────────────────────────────┐
│                    用户浏览器                                  │
└──────────────┬──────────────────────────────────────────────┘
               │
               │ http://localhost:1888
               ▼
┌──────────────────────────────────────────────────────────────┐
│              Saber 前端 (Vue 3)                               │
│  - 登录页面                                                    │
│  - 仪表盘                                                      │
│  - 用户管理                                                    │
│  - 权限管理                                                    │
│  - 武术比赛管理（调用后端 API）                                │
└──────────────┬───────────────────────────────────────────────┘
               │
               │ HTTP 请求（JSON）
               │ POST /blade-auth/token
               │ GET /blade-system/user/list
               │ GET /api/martial/competition/list
               ▼
┌──────────────────────────────────────────────────────────────┐
│         martial-master 后端 (Spring Boot)                     │
│  http://localhost:8123                                        │
│                                                                │
│  ├── /blade-auth/**      → 认证模块                           │
│  ├── /blade-system/**    → 系统管理                           │
│  ├── /blade-desk/**      → 仪表盘                             │
│  ├── /blade-resource/**  → 资源管理                           │
│  ├── /blade-develop/**   → 开发工具                           │
│  └── /api/martial/**     → 武术比赛（您的业务）               │
└──────────────┬───────────────────────────────────────────────┘
               │
               ▼
        ┌──────────────┐
        │    MySQL     │
        │  Redis       │
        └──────────────┘
```

---

## 四、当前项目的使用方式

### 方式一：仅使用 API（当前可用）✅

**适合场景**：
- 前端单独开发
- 移动端开发
- API 集成测试

**访问方式**：
```
Knife4j API 文档：http://localhost:8123/doc.html

直接调用 API：
POST http://localhost:8123/blade-auth/token
GET  http://localhost:8123/api/martial/competition/list
```

**优点**：
- ✅ 无需前端，可以直接测试 API
- ✅ 适合后端开发和调试

**缺点**：
- ❌ 没有可视化界面
- ❌ 需要手动构造 HTTP 请求

---

### 方式二：搭配 Saber 前端（需要获取源码）

**步骤 1：获取 Saber 源码**

如果您有 BladeX 授权，可以从官方获取 Saber 源码：
```bash
# Gitee
git clone https://gitee.com/smallc/Saber.git

# GitHub
git clone https://github.com/chillzhuang/Saber.git
```

**步骤 2：配置后端地址**

```javascript
// Saber/src/config/website.js
export default {
  // 后端 API 地址
  apiUrl: 'http://localhost:8123',

  // Token 存储键
  tokenHeader: 'Blade-Auth',

  // 其他配置...
}
```

**步骤 3：安装依赖并启动**

```bash
cd Saber

# 安装依赖
npm install
# 或
yarn install

# 启动开发服务器
npm run dev
# 或
yarn dev
```

**步骤 4：访问**

```
浏览器访问：http://localhost:1888

默认账号：
用户名：admin
密码：admin
```

**步骤 5：使用管理后台**

登录后，您可以在 Saber 管理后台中：
- 📊 查看仪表盘数据
- 👥 管理用户和角色
- 📋 配置菜单权限
- 🥋 使用武术比赛管理功能（需要先配置菜单）

---

### 方式三：使用第三方 API 工具（临时方案）

如果暂时没有 Saber 源码，可以使用：

**Postman / Apifox / Insomnia**
```
1. 先调用登录接口获取 Token：
   POST http://localhost:8123/blade-auth/token
   Body: {
     "tenantId": "000000",
     "username": "admin",
     "password": "admin",
     "grant_type": "captcha",
     "scope": "all"
   }

2. 复制返回的 access_token

3. 在后续请求中添加 Header：
   Blade-Auth: bearer <access_token>

4. 调用业务接口：
   GET http://localhost:8123/api/martial/competition/list
```

**VS Code REST Client 扩展**
```http
### 1. 登录获取 Token
POST http://localhost:8123/blade-auth/token
Content-Type: application/json

{
  "tenantId": "000000",
  "username": "admin",
  "password": "admin",
  "grant_type": "captcha",
  "scope": "all"
}

### 2. 调用业务接口
GET http://localhost:8123/api/martial/competition/list
Blade-Auth: bearer {{token}}
```

---

## 五、模块启动管理

### 5.1 单体架构（当前项目）

**当前项目是单体应用**，所有模块在一个进程中运行：

```
java -jar blade-api.jar

启动后，所有模块同时可用：
✅ auth 模块
✅ system 模块
✅ resource 模块
✅ desk 模块
✅ develop 模块
✅ martial 模块
✅ job 模块
```

**没有独立的模块启动管理**，因为不是微服务架构。

---

### 5.2 微服务架构（可选升级）

如果升级到微服务版本，架构会变成：

```
BladeX 微服务架构
├── BladeX-Register (Nacos)      # 注册中心，管理所有服务
├── BladeX-Gateway               # 网关服务
├── BladeX-Auth                  # 认证服务
├── BladeX-System                # 系统服务
├── BladeX-Resource              # 资源服务
├── BladeX-Desk                  # 工作台服务
└── Martial-Service              # 武术比赛服务（您的业务）
```

**此时会有管理界面**：

**Nacos 控制台**：
```
地址：http://localhost:8848/nacos
功能：
- 查看所有注册的服务
- 服务健康检查
- 配置管理
- 服务上下线
```

**Sentinel 控制台**（可选）：
```
地址：http://localhost:8858
功能：
- 流量控制
- 熔断降级
- 系统负载保护
```

**Spring Boot Admin**（可选）：
```
地址：http://localhost:7002
功能：
- 监控所有 Spring Boot 应用
- 查看日志
- 查看 JVM 信息
- 健康检查
```

---

## 六、常见疑问解答

### Q1: 为什么没有找到管理界面？

**A**: 当前项目是**纯后端 API 项目**，前端管理系统（Saber）是独立的项目，需要单独获取和部署。

### Q2: 如何获取 Saber 前端源码？

**A**:
- 如果您有 BladeX 授权，从官方仓库获取
- 如果是开源版本，部分功能可能不可用
- 可以联系 BladeX 官方获取试用版

### Q3: 没有 Saber 可以开发吗？

**A**: 可以！
- 使用 Knife4j API 文档测试：http://localhost:8123/doc.html
- 使用 Postman/Apifox 调用 API
- 自己开发前端（任何技术栈都可以）

### Q4: 如何查看系统运行状态？

**A**:
- 查看日志：`tail -f application.log`
- 健康检查：http://localhost:8123/actuator/health
- Druid 监控：http://localhost:8123/druid
- Knife4j 文档：http://localhost:8123/doc.html

### Q5: 这个项目是微服务吗？

**A**: 当前是**单体应用**（Monolithic），但使用了模块化设计。如果需要，可以升级为微服务架构。

---

## 七、推荐的开发方式

### 当前阶段（无 Saber）

```
1. 后端开发：
   - 在 VS Code 中开发业务逻辑
   - 使用 F5 调试运行

2. 接口测试：
   - 使用 Knife4j：http://localhost:8123/doc.html
   - 使用 Postman/Apifox

3. 数据库操作：
   - 使用 Navicat/DBeaver 连接 MySQL
   - 执行 SQL 查看数据
```

### 有 Saber 前端时

```
1. 启动后端：
   cd martial-master
   mvn spring-boot:run

2. 启动前端：
   cd Saber
   npm run dev

3. 访问管理后台：
   http://localhost:1888

4. 全栈开发：
   - 后端改代码 → 前端调用 API
   - 前端页面 → 调用后端接口
```

---

## 八、总结

| 组件 | 状态 | 地址 | 说明 |
|------|------|------|------|
| **后端 API** | ✅ 有 | http://localhost:8123 | 当前项目 |
| **API 文档** | ✅ 有 | http://localhost:8123/doc.html | Knife4j |
| **Druid 监控** | ✅ 有 | http://localhost:8123/druid | 数据库监控 |
| **前端管理系统** | ❌ 无 | http://localhost:1888 | Saber（需单独获取） |
| **模块管理界面** | ❌ 无 | - | 单体应用，无需管理 |

**关键点**：
- ✅ 后端可以独立运行和开发
- ✅ 使用 Knife4j 可以完成所有测试
- ❌ 如需可视化管理界面，需要部署 Saber 前端
- ❌ 单体架构下没有"模块启动管理"的概念

---

**建议**：
1. 现阶段专注后端 API 开发
2. 使用 Knife4j 测试接口
3. 如需前端，可以自己用 Vue/React 开发，或等待获取 Saber 源码
