feat: complete unified plugin admin v1.1.0
Business Plugins CI / check (plugin-admin) (push) Successful in 1m42s
Business Plugins CI / check (subscription-admin) (push) Successful in 1m30s

This commit is contained in:
Qiufeng
2026-08-30 12:10:04 +08:00
parent 3c1a17f4d7
commit ada4ab3c21
69 changed files with 6681 additions and 901 deletions
+26 -8
View File
@@ -9,11 +9,17 @@ HTTP API、管理员鉴权和 `custom_menu_items` 接入 Core;插件不导入
- `plugins/plugin-admin`:通用插件管理控制面,负责清单、签名、插件市场、
下载入库、启用、停用、升级、回滚、删除、配置、健康检查、审计和菜单注入。
- `plugins/subscription-admin`:可选的订阅管理业务插件。它不是插件管理
控制面,只有安装、启用并应用菜单后才会出现。
- `plugins/subscription-admin`:可选的订阅管理业务模块后端。它不是插件管理
控制面;只有安装并启用后才会挂载到 Plugin Admin 的统一导航中。
- `docs/`:插件框架、清单、边界、架构、开发和验收契约。
两个插件都是独立 Go module,可以分别构建和发布。生产环境应使用独立的
Plugin Admin 的浏览器控制面位于 `plugins/plugin-admin/ui-vue`,基于腾讯
TDesign Vue Next starter。运行 `plugins/plugin-admin/build-ui.sh` 会完成
TypeScript/Vite 构建,并把本地打包的 TDesign、线性图标和 ECharts 嵌入
Go 服务;官方 Core 的 `frontend/` 不参与构建。
控制面和业务模块后端可以独立构建和发布,但浏览器端只有一个 Plugin Admin
登录入口。生产环境应使用独立的
低权限服务账号、HTTPS 反向代理、签名包和稳定的 Core API 兼容基线。
## 推荐部署顺序
@@ -48,12 +54,16 @@ Core 仓库,也不要让插件连接 Core PostgreSQL/Redis。
## 接入顺序
1. 启动 `plugin-admin` 和需要的业务插件,各自监听独立端口。
2. 使用 Core 管理员账号登录插件服务;普通账号被拒绝。
1. 启动 `plugin-admin` 和需要的业务模块后端,各自监听独立端口。
2. 使用 Core 管理员账号登录 Plugin Admin 一次;普通账号被拒绝,业务模块不再单独登录。
3. 在 `plugin-admin` 上传或从插件市场下载并校验业务插件包;包只进入“已入库,待启用”状态。
4. 配置 loopback `service_url`,点击启用并完成健康检查后,插件才会启动。
5. 预览、确认并应用插件声明的管理员菜单;停用后可删除插件。
订阅模块进入统一控制面后使用 `/modules/subscription/*` 路由。Plugin Admin
通过同源 BFF 代理固定的套餐、订阅和用户只读接口,浏览器不再访问订阅
服务的登录页,也不会创建第二个管理员会话。
Core 继续作为用户、余额、订阅、计费和用量账本的权威来源。插件浏览器端
不持有 Core JWT、Admin Key 或其他服务密钥。
@@ -62,14 +72,22 @@ Core 继续作为用户、余额、订阅、计费和用量账本的权威来源
Linux + systemd 环境可直接使用仓库内的安装脚本:
```sh
curl -fsSL https://git.awaioi.com/awaioi/sub2api-add/raw/branch/main/deploy/install.sh \
| sudo bash -s -- --plugin all
RELEASE_SHA=COMMIT_SHA_40_HEX
curl -fsSL "https://git.awaioi.com/awaioi/sub2api-add/raw/commit/${RELEASE_SHA}/deploy/install.sh" \
| sudo env PLUGIN_REF=v1.1.0 PLUGIN_COMMIT_SHA="$RELEASE_SHA" bash -s -- --plugin all
```
生产安装必须提供发布提交的 `PLUGIN_COMMIT_SHA`;上面的 `RELEASE_SHA`
应从受信任的发布记录中复制,并与 `PLUGIN_REF` 对应。脚本默认使用
`v1.1.0` tag,但 tag 本身不作为完整性证明。可变分支和未 pin 的 tag
仅能在开发环境分别显式开启 `PLUGIN_ALLOW_MUTABLE_REF=true` 或
`PLUGIN_ALLOW_UNPINNED_TAG=true`。
默认卸载并保留配置/数据:
```sh
curl -fsSL https://git.awaioi.com/awaioi/sub2api-add/raw/branch/main/deploy/uninstall.sh \
RELEASE_SHA=COMMIT_SHA_40_HEX
curl -fsSL "https://git.awaioi.com/awaioi/sub2api-add/raw/commit/${RELEASE_SHA}/deploy/uninstall.sh" \
| sudo bash -s -- --plugin all
```