Files
DP/tempdocs/后端开发需求文档.md

4.2 KiB
Raw Blame History

DesignerCEP 后端开发需求文档

请根据以下需求使用 Python (Flask/FastAPI) + MySQL 开发后端服务。

1. 核心需求概览

我们需要实现一个 “灰度发布系统”

  • 用户与权限: 用户属于不同的“组” (Group),如 "Stable Group", "Dev Group"。
  • 版本控制: 不同的组对应不同的插件版本 (ZIP 包)。
  • 客户端交互: 客户端插件 (Shell) 登录时,根据用户所在的组,返回对应的 ZIP 包下载地址。

2. 数据库设计 (Database Schema)

请创建以下两张核心表(基于 MySQL

2.1 用户组表 (plugin_group)

用于管理不同的发布通道。

字段名 类型 描述 示例值
id INT (PK) 组 ID 1
name VARCHAR 组名称 "正式版用户组"
current_version_file VARCHAR 当前使用的版本文件名 "plugin_v1.0.2.zip"
comment TEXT 备注 "稳定版本通道"

2.2 用户表 (user)

需关联到组表

字段名 类型 描述 示例值
id INT (PK) 用户 ID 1001
username VARCHAR 用户名 "designer01"
password VARCHAR 密码 "123456"
group_id INT (FK) 所属组 ID 1 (关联 plugin_group.id)
permissions TEXT 权限列表 (逗号分隔) "batch_process,vip_export"
expire_date DATETIME 过期时间 "2025-12-31 23:59:59"

3. API 接口规范 (API Specification)

所有接口前缀建议为 /api/v1

3.1 检查更新 (Client 接口)

客户端插件启动时调用,查询自己应该下载哪个版本。

  • URL: POST /api/v1/client/check_update
  • 请求参数: { "username": "..." }
  • 逻辑:
    1. 检查用户是否过期 (expire_date < user.expire_date). 如果过期,返回 403 或特定状态码。
    2. 根据 username 查询用户所在的 group_id
    3. 根据 group_id 查询 plugin_group 表,获取 current_version_file
    4. 拼接下载链接。
  • 返回示例:
    {
      "code": 200,
      "data": {
        "version": "v1.0.2",
        "download_url": "http://your-server.com/download/plugin_v1.0.2.zip",
        "force_update": false,
        "is_expired": false // 明确告知是否过期
      },
      "message": "success"
    }
    

3.2 登录验证 (Client 接口)

  • URL: POST /api/v1/client/login
  • 请求参数: { "username": "...", "password": "..." }
  • 逻辑: 校验密码及过期状态。
  • 返回:
    {
      "code": 200,
      "data": {
        "token": "...",
        "username": "...",
        "expire_date": "2025-12-31",
        "permissions": ["batch_process", "vip_export"] // 返回权限数组
      }
    }
    

3.3 上传新版本 (Admin/CI 接口)

用于发布脚本上传新的 ZIP 包。

  • 请求参数: file (multipart/form-data)
  • 逻辑:
    1. 校验管理员权限(可硬编码 Token 或密码)。
    2. 将上传的文件保存到服务器的 archives/ 目录。
    3. 文件名通常包含版本号或时间戳,如 plugin_v1.0.3_20251216.zip
    4. (可选) 自动更新相关数据库记录。

3.4 文件下载 (Download)

  • URL: GET /download/<filename>
  • 功能: 提供静态文件下载服务(指向 archives/ 目录)。

4. 后台管理功能 (Admin Tool 支持)

后端需要提供基础的数据增删改查接口,以支持 PyQt 或 Web 管理后台:

  1. 用户管理: 新增用户、修改用户所属组 (group_id)。
  2. 组管理: 修改组指向的版本 (current_version_file)。
    • 场景: 管理员发现 "v1.1-beta" 有 Bug可以将 "Dev Group" 的 current_version_file 改回 "v1.0-stable",实现快速回滚。