feat(web): 插件管理弹窗(启停 / 重载)

- 顶栏新增「插件管理」图标按钮,打开 PluginsDialog
- 弹窗列出 pugins/ 下的插件:标题 / 目录名 / 是否启用与已加载 / 平台 label / 能力清单
- 每个插件可启用、停用、重载,底部有「全部重载」
- 启停成功后重新拉 /api/platforms,「添加账号」的平台下拉同步刷新
- types.ts 新增 PluginInfo;App.tsx 把平台列表加载提成 loadPlatforms 复用
- static/ 重新构建(pnpm typecheck + pnpm build 均通过)
- 顺带把 .vscode/ 纳入跟踪
This commit is contained in:
study-tool
2026-10-31 16:01:44 +08:00
parent f8458cff51
commit cfa960221e
12 changed files with 471 additions and 244 deletions
+4 -1
View File
@@ -16,7 +16,9 @@
- `platforms/registry.py` 新增 `unregister(pid)`。
- 新增接口:`GET /api/plugins`、`POST /api/plugins/{name}/enable|disable`、
`POST /api/plugins/reload`、`POST /api/plugins/{name}/reload`;失败返回 `{"ok": false, "error": ...}`。
- 引擎 / 路由 / 前端 / 平台实现均未改动。
- 前端顶栏新增「插件管理」弹窗(`web/src/components/PluginsDialog.tsx`):列出插件与状态,
支持启停 / 单个重载 / 全部重载;启停后会重新拉 `/api/platforms`,「添加账号」的平台下拉同步变化。
- 引擎 / 路由 / 平台实现均未改动。
### 怎么测
@@ -25,6 +27,7 @@
3. 改 `pugins/gdgxk/main.py` 里一句日志文案 → `POST /api/plugins/gdgxk/reload` →
不重启服务再跑一次学习,日志应变成新文案。
4. 重启服务:停用状态应被记住(设置项 `plugins`)。
5. 前端顶栏「插件管理」:停用 gdgxk → 「添加账号」的平台下拉立刻少一项;重新启用后恢复。
## 平台契约改为子类实现(注册方式调整)