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

2.8 KiB

Shell 架构改造任务清单 (增强版)

基于您提供的 serveradminupload 逻辑,我们引入了 “用户分组 (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. 根据 usernamegroup_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-zipdist/core 压缩为 code_{timestamp}.zip
    3. Upload: 调用服务端接口 POST /archives 将 ZIP 上传。
    4. Register (可选): 自动调用接口将新版本注册到数据库(可选)。
  • 命令:

    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 的下载器,对接上述接口。