2.8 KiB
2.8 KiB
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:- 根据
username查group_id。 - 查
psmark_group表获取该组的current_version。 - 返回该版本的下载地址。
- 优势: 您可以在后台把某个测试用户切到 "DevGroup",他重启插件就会立刻下载最新的测试版,而其他用户不受影响。
- 根据
3. 发布流程 (Publishing Workflow)
为了实现“上传时编译”,我们将编写一个自动化脚本。
3.1 自动化发布脚本 (scripts/publish.ts)
这个脚本将在您的开发机上运行,一键完成所有操作。
-
执行流程:
- Compile: 运行
npm run build:core(生成dist/core)。 - Package: 使用
adm-zip将dist/core压缩为code_{timestamp}.zip。 - Upload: 调用服务端接口
POST /archives将 ZIP 上传。 - Register (可选): 自动调用接口将新版本注册到数据库(可选)。
- Compile: 运行
-
命令:
npm run publish # 一键发布
3.2 服务端支持
- 确保
POST /archives接口能接收文件并保存到archives/目录 (参考server.py已有逻辑)。
4. 后台管理工具 (Admin Tool)
您可以直接复用或升级现有的 PyQt 工具 (upload/admin.py)。
- 功能需求:
- 用户分理: 设置用户的
group_id。 - 版本指派: 设置某个 Group 使用哪个 ZIP 版本。
- 用户分理: 设置用户的
5. 执行路线图
- Day 1 (Publishing): 写好
scripts/publish.ts,确保能一键编译并上传 ZIP 到您的服务器。 - Day 2 (Backend): 改造 Python 后端,加入 Group 表,在此基础上实现“根据用户返回版本”的接口。
- Day 3 (Shell): 开发插件 Shell 的下载器,对接上述接口。