# 后端代码与工具说明 (DesignerCEP)

本文档详细说明了 `DesignerCEP` 项目的后端服务、测试脚本以及辅助管理工具。

---

## 1. 自动化发布 (`publish.py`)

位于项目根目录 `d:\main\DesignerCEP\publish.py`。

- **类型**: Python 脚本。
- **功能**: 实现 "一键发布" 流程。
  1.  **打包**: 自动将 `Designer` 目录压缩为 `.zip` 文件（自动排除 `.git`, `node_modules` 等无关文件）。
  2.  **上传**: 调用后端接口 `POST /api/v1/admin/upload_version` 将 ZIP 包上传到服务器。
  3.  **鉴权**: 使用 `token` 进行简单的管理员验证。
- **使用方法**:
  ```bash
  python publish.py ./Designer --name "release_v1.0"
  ```

---

## 2. 后端服务 (`Server/`)

位于 `d:\main\DesignerCEP\Server\`，基于 Python FastAPI 框架。

### 核心文件

| 路径/文件名                | 作用                                                                                                                                                                                 |
| :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`app/main.py`**          | **程序入口**。初始化 FastAPI 应用，配置 CORS（允许跨域），挂载路由，初始化数据库。                                                                                                   |
| **`app/api/v1/client.py`** | **客户端接口**。处理插件端的请求：<br>- `/check_update`: 检查更新（含过期校验）。<br>- `/login`: 用户登录（返回 Token 和权限）。                                                     |
| **`app/api/v1/admin.py`**  | **管理接口**。供 AdminTool 使用：<br>- `/upload_version`: 接收发布的 ZIP 包。<br>- `/groups`: 管理用户组 (Stable/Dev)。<br>- `/users`: 管理用户及其所属组。                          |
| **`app/models/`**          | **数据库模型 (SQLAlchemy)**。定义 `User` 和 `PluginGroup` 表结构。                                                                                                                   |
| **`tests/test_api.py`**    | **集成测试**。包含完整的业务流程测试：<br>1. 创建用户组。<br>2. 上传 ZIP 包。<br>3. 将组指向该 ZIP。<br>4. 模拟客户端检查更新，验证返回版本是否正确。<br>5. 验证过期用户是否被拦截。 |

---

## 3. 管理后台工具 (`AdminTool/`)

位于 `d:\main\DesignerCEP\AdminTool\`，基于 PyQt5 的桌面应用程序。

- **功能**: 为不熟悉命令行的管理员提供图形化界面。
- **主要能力**:
  - **用户管理**: 增删改查用户，设置过期时间，分配用户组。
  - **版本管理**: 切换某个组当前使用的插件版本（实现灰度发布或回滚）。
  - **发布管理**: (可选) 集成文件上传功能。

---

## 总结

整个后端生态由这三部分组成闭环：

1.  **Server**: 提供数据存储和 API 服务。
2.  **publish.py**: 开发者用的“发货工具”。
3.  **AdminTool**: 管理员用的“控制台”。
