Files
DP/tempdocs/Shell架构改造任务清单.md

84 lines
2.8 KiB
Markdown

# Shell 架构改造任务清单 (增强版)
基于您提供的 `serveradmin``upload` 逻辑,我们引入了 **“用户分组 (Gray Release)”** 和 **“一键发布 (CI/CD)”** 机制。
## 1. 插件端 (Frontend - Shell)
Shell 端不需要太大变化,主要是版本检查接口需要携带用户信息。
- `src/launcher/utils/`
- [ ] **增强版版本检查**:
- 请求 `POST /api/check_update`
- 参数: `{ username: "当前登录用户" }`
- 逻辑: 服务端会根据用户所在的组,返回不同的版本。普通用户返回 `v1.0`,测试组用户返回 `v1.1-beta`
## 2. 服务端 (Backend - Python)
参考 `serveradmin` 逻辑进行改造。
### 2.1 数据库结构升级
需要支持不同用户获取不同版本。
- **表 `psmark_group` (用户组)**:
- `id`: int (主键)
- `name`: string (组名,如 "Stable", "Beta")
- `current_version`: string (该组当前使用的版本文件名,如 "release_v1.0.zip")
- `comment`: string
- **表 `user` (原有表增强)**:
- `group_id`: int (外键,关联 psmark_group)
### 2.2 接口逻辑增强
- `POST /api/check_update`:
1. 根据 `username``group_id`
2.`psmark_group` 表获取该组的 `current_version`
3. 返回该版本的下载地址。
- **优势**: 您可以在后台把某个测试用户切到 "DevGroup",他重启插件就会立刻下载最新的测试版,而其他用户不受影响。
---
## 3. 发布流程 (Publishing Workflow)
为了实现“上传时编译”,我们将编写一个自动化脚本。
### 3.1 自动化发布脚本 (`scripts/publish.ts`)
这个脚本将在您的开发机上运行,一键完成所有操作。
- **执行流程**:
1. **Compile**: 运行 `npm run build:core` (生成 `dist/core`)。
2. **Package**: 使用 `adm-zip``dist/core` 压缩为 `code_{timestamp}.zip`
3. **Upload**: 调用服务端接口 `POST /archives` 将 ZIP 上传。
4. **Register (可选)**: 自动调用接口将新版本注册到数据库(可选)。
- **命令**:
```bash
npm run publish # 一键发布
```
### 3.2 服务端支持
- 确保 `POST /archives` 接口能接收文件并保存到 `archives/` 目录 (参考 `server.py` 已有逻辑)。
---
## 4. 后台管理工具 (Admin Tool)
您可以直接复用或升级现有的 PyQt 工具 (`upload/admin.py`)。
- **功能需求**:
- [ ] **用户分理**: 设置用户的 `group_id`。
- [ ] **版本指派**: 设置某个 Group 使用哪个 ZIP 版本。
---
## 5. 执行路线图
1. **Day 1 (Publishing)**: 写好 `scripts/publish.ts`,确保能一键编译并上传 ZIP 到您的服务器。
2. **Day 2 (Backend)**: 改造 Python 后端,加入 Group 表,在此基础上实现“根据用户返回版本”的接口。
3. **Day 3 (Shell)**: 开发插件 Shell 的下载器,对接上述接口。