4.2 KiB
4.2 KiB
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": "..." } - 逻辑:
- 检查用户是否过期 (
expire_date< user.expire_date). 如果过期,返回 403 或特定状态码。 - 根据
username查询用户所在的group_id。 - 根据
group_id查询plugin_group表,获取current_version_file。 - 拼接下载链接。
- 检查用户是否过期 (
- 返回示例:
{ "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) - 逻辑:
- 校验管理员权限(可硬编码 Token 或密码)。
- 将上传的文件保存到服务器的
archives/目录。 - 文件名通常包含版本号或时间戳,如
plugin_v1.0.3_20251216.zip。 - (可选) 自动更新相关数据库记录。
3.4 文件下载 (Download)
- URL:
GET /download/<filename> - 功能: 提供静态文件下载服务(指向
archives/目录)。
4. 后台管理功能 (Admin Tool 支持)
后端需要提供基础的数据增删改查接口,以支持 PyQt 或 Web 管理后台:
- 用户管理: 新增用户、修改用户所属组 (
group_id)。 - 组管理: 修改组指向的版本 (
current_version_file)。- 场景: 管理员发现 "v1.1-beta" 有 Bug,可以将 "Dev Group" 的
current_version_file改回 "v1.0-stable",实现快速回滚。
- 场景: 管理员发现 "v1.1-beta" 有 Bug,可以将 "Dev Group" 的