Initial commit: TaskPool React panel

- React frontend with route-level code splitting
- Backend rebranded from Baihu to TaskPool
- DB brand migration script and local compatibility
This commit is contained in:
2026-07-26 08:43:52 +08:00
commit e6956aa001
397 changed files with 73621 additions and 0 deletions
+134
View File
@@ -0,0 +1,134 @@
# 前端定制 (WebUI)
taskpool支持完全接管和替换默认系统面板界面。你可以开发自己专属的前端主题,甚至添加自定义的前端交互功能,并打包为独立的 WebUI 资源包上传至系统应用。
> [!IMPORTANT]
> **安全与一致性维护声明**
> 更换前端包后,系统无法自动保障自定义前端的安全性,亦无法确保其与后续更新的后端 API 接口始终保持一致。**自定义前端包的更新、向后兼容维护与漏洞修复需完全由该前端资源提供者(或开发者)负责**。
---
## 快速使用
### 1. 网页端上传与切换
1. 进入系统后,点击导航栏的 **系统设置**
2. 切换到 **前端定制** 面板。
3. 点击右上角的 **上传前端资源包**,选择你打包好的 `.zip``.tar.gz``.tgz` 格式的前端资源包。
4. 上传成功后,列表会显示该包的信息(名称、版本、作者、状态等)。
5. 点击操作栏中的 **启用** 按钮,系统将自动重载并切换至你的自定义前端包。
> [!WARNING]
> 自定义前端包若存在 Bug 或打包不完整可能导致界面白屏。如果不慎应用了错误或不兼容的包,请使用下方命令行工具恢复。
### 2. 命令行 (CLI) 运维
当界面因异常白屏无法访问时,可以进入taskpool容器/服务器终端,使用 `taskpool webui` 命令一键管理或恢复:
- **一键恢复默认内置界面**
```bash
taskpool webui reset
```
- **查看已安装的资源包列表**
```bash
taskpool webui list
```
- **手动切换/启用前端包**
```bash
taskpool webui set <包名>
```
- **删除指定的前端包**
```bash
taskpool webui delete <包名>
```
---
## 开发自定义前端
taskpool的前端架构是完全解耦的。你可以选择以下两种方式之一来定制专属前端:
### 方式一:基于现有代码二次开发(推荐)
如果你只是想修改部分样式、布局,或者在原有功能基础上增加新特性,最简单的方式是 **Fork `taskpool` 项目**。
1. Fork 本项目并克隆代码到本地。
2. 直接在项目的 `web/` 目录下,对现有的 Vue3 源码进行修改与定制。
3. 修改完成后,利用项目自带的 Makefile 打包命令(见下方说明)一键将你的修改编译为独立的 WebUI 资源包。
### 方式二:从零开始全新开发
如果你想用自己熟悉的技术栈(如 React, Angular,或者是纯静态的 HTML/JS)完全重写整个面板,这也是完全支持的!你只需要按照下方的核心规范进行开发和打包即可。
### 1. 核心校验规则
taskpool后端提取并启用前端资源时,会执行以下强校验:
1. **压缩包根目录下必须包含 `index.html`**:作为单页应用 (SPA) 的静态入口文件。
2. **压缩包根目录下必须包含 `uimanifest.json`**:声明该前端包的元数据信息。
### 2. 配置文件 `uimanifest.json` 规范
在前端打包产物的根目录下(与 `index.html` 同级),必须创建一个 `uimanifest.json` 文件。格式示例如下:
```json
{
"name": "custom-neon-theme",
"version": "1.0.2",
"author": "YourName",
"description": "taskpool霓虹暗黑风定制前端主题",
"min_panel_version": "1.0.0"
}
```
*注:`name` 字段不能设置为 `"default"`(default 被保留作为内置前端的系统标识)。*
### 3. API 请求地址与开发环境代理
在独立开发自定义前端时,需要配置请求与后端的通信地址及代理:
- **后端默认服务地址与端口**
taskpool后端服务默认运行在端口 `8052` 上,本地调试 API 的基础 URL 通常为:
`http://127.0.0.1:8052/api/v1`
- **本地开发环境代理配置(以 Vite 为例)**:
为了避免跨域问题(CORS),推荐在前端开发服务器中设置代理。在 `vite.config.ts` 中配置示例如下:
```typescript
export default defineConfig({
server: {
proxy: {
'/api/v1': {
target: 'http://127.0.0.1:8052', // 本地运行的taskpool后端地址
changeOrigin: true
}
}
}
})
```
- **生产环境线上适配(相对路径)**:
前端包部署生效后,与后端处于同端口同域名下。后端会在返回的 `index.html` 的 `<head>` 中自动注入以下配置变量:
```html
<script>
window.__BASE_URL__ = ""; // 部署子路径前缀 (根据实际反代配置)
window.__API_VERSION__ = "/api/v1"; // API 接口版本前缀
</script>
```
建议在封装 Axios 或 Fetch 时,直接通过浏览器环境变量拼接相对路径作为 API 地址:
```typescript
const baseURL = `${window.location.origin}${window.__BASE_URL__ || ''}${window.__API_VERSION__ || '/api/v1'}`;
```
- **接口定义与类型参考**
默认系统中已经定义好了所有的后端 API 接口签名、传参格式以及 TS 类型声明。你在二次开发或自定义前端时,可以直接参考项目源码中的前端接口定义文件: `web/src/api/index.ts`。
---
## 打包前端资源包(现成)
你可以利用taskpool项目自带的 `Makefile` 脚本,在现在的前端页面进行修改,将开发好的前端项目快速编译打包成标准的 `.tar.gz` 前端资源包, 自己使用或者分享使用。
### 使用 Makefile 打包
在项目根目录下,运行以下指令(参数必须填写完整):
```bash
make pack-webui NAME=neon-theme VERSION=1.0.2 AUTHOR=MyName DESC="霓虹定制主题包"
```
该指令会自动执行以下步骤:
1. 进入 `web/` 目录并安装依赖;
2. 编译构建前端静态资源(默认输出到 `web/dist`);
3. 在 `web/dist` 中自动按参数生成校验所需的 `uimanifest.json`
4. 将该目录下所有文件使用 `tar` 命令进行 gzip 压缩打包;
5. 输出归档文件在项目根目录的 `bin/webui-neon-theme-1.0.2.tar.gz`,此包即可直接在面板中上传安装。