feat(web): 插件管理弹窗(启停 / 重载)
- 顶栏新增「插件管理」图标按钮,打开 PluginsDialog - 弹窗列出 pugins/ 下的插件:标题 / 目录名 / 是否启用与已加载 / 平台 label / 能力清单 - 每个插件可启用、停用、重载,底部有「全部重载」 - 启停成功后重新拉 /api/platforms,「添加账号」的平台下拉同步刷新 - types.ts 新增 PluginInfo;App.tsx 把平台列表加载提成 loadPlatforms 复用 - static/ 重新构建(pnpm typecheck + pnpm build 均通过) - 顺带把 .vscode/ 纳入跟踪
This commit is contained in:
@@ -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 → 「添加账号」的平台下拉立刻少一项;重新启用后恢复。
|
||||
|
||||
## 平台契约改为子类实现(注册方式调整)
|
||||
|
||||
|
||||
@@ -108,6 +108,7 @@ src/study_tool/pugins/
|
||||
启用清单存在设置项 `plugins`(`{"disabled": [...]}`):没列进去的默认启用,新丢进目录的插件自动生效。
|
||||
停用的插件会 `registry.unregister()`,从 `/api/platforms` 消失,账号的平台下拉里也不会出现。
|
||||
热重载先把旧实现从注册表摘掉再 import;正在跑的学习任务持有的是旧实例,跑到结束不受影响。
|
||||
前端顶栏的「插件管理」弹窗(`web/src/components/PluginsDialog.tsx`)就是这几个接口的界面。
|
||||
|
||||
## 槽位契约
|
||||
|
||||
|
||||
Reference in New Issue
Block a user