feat(plugins): 插件支持热加载与启用/停用清单

- pugins/__init__.py 重写:load_plugins / discover / set_enabled / reload
- 热加载:把 study_tool.pugins.<名字> 的模块从 sys.modules 摘掉后重新 import;
  重载前先 registry.unregister 旧 id,平台 id 改了也不会留残影
- 启用清单存设置项 plugins({"disabled": [...]}):未列出的默认启用,新插件自动生效;
  停用即从注册表摘掉,/api/platforms 与账号平台下拉同步消失
- 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
- 同步 docs/pugin.md(新增「加载与启停」)、docs/architecture.md、docs/OPTIMIZATION.md、AGENTS.md
This commit is contained in:
study-tool
2026-10-31 15:50:06 +08:00
parent f1a57853f4
commit f8458cff51
7 changed files with 219 additions and 31 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ src/study_tool/
jspx.py 莞易学旧版:会话 / 登录 / 课程抓取 / 旧版学习流程
study.py 莞易学新版 SPA:StudyClient / 接口学习 / 视频流程
pugins/ 插件式平台(加载器扫目录,新增插件不改代码)
__init__.py load_plugins():扫 pugins/*/pugin.json 并 import main.py
__init__.py load_plugins / discover / set_enabled / reload(启停 + 热重载)
gdgxk/
pugin.json 注册信息:id / title / name(只放元数据)
main.py 广东公需课:SSO 换票 + 视频进度心跳