refactor(plugins): gdgxk 迁到 pugins/gdgxk,插件由目录扫描加载

- platforms/gdgxk.py → pugins/gdgxk/main.py(实现不变,仍是 class Gdgxk(Platform))
- pugins/gdgxk/pugin.json 只放注册信息 id / title / name,不声明任何能力绑定
- pugins/__init__.py:load_plugins() 扫 pugins/*/pugin.json、import 各自的 main.py,
  再用 pugin.json 的 id 校验注册结果;要换加载方式只改这一个函数
- platforms/__init__.py::load_builtin() 调 load_plugins();guanyixue 依赖 jspx/study,
  暂留 platforms/
- engine / routes / quiz / contract / 前端未改动
- 同步 AGENTS.md、docs/architecture.md、docs/OPTIMIZATION.md
This commit is contained in:
study-tool
2026-10-31 15:41:22 +08:00
parent bdd0bdf073
commit f1a57853f4
9 changed files with 62 additions and 19 deletions
+6 -4
View File
@@ -10,11 +10,13 @@
- `Platform` 从 dataclass「注册时逐项传函数」改成基类:`id` / `label` / `entries` 是类属性,
能力是子类方法;没实现的阶段保持基类的 `None`,`capabilities()` 与 `/api/platforms` 不变。
- `platforms/gdgxk.py`:`session`(原 `new_session`)/ `login` / `list_courses` / `discover` /
`study` 等收进 `class Gdgxk(Platform)`;解析 / 上报类 helper 仍是模块级函数。
- `pugins/gdgxk/main.py`(原 `platforms/gdgxk.py`):`session`(原 `new_session`)/ `login` /
`list_courses` / `discover` / `study` 等收进 `class Gdgxk(Platform)`;解析 / 上报类 helper
仍是模块级函数。
- `platforms/guanyixue.py`:改成 `class Guanyixue(Platform)`,方法转调 `jspx` / `study`。
- 删掉 `src/study_tool/pugins/` 草稿目录:它和 `platforms/gdgxk.py` 内容重复,
`pugin.json` 里「按名字声明 `study` / `entries`」的绑定方式作废,元数据改为类属性。
- `pugins/` 改成插件目录:`pugins/<名字>/pugin.json`(只放 `id` / `title` / `name`)+ `main.py`
(`Platform` 子类);`pugins/__init__.py::load_plugins()` 扫目录 import,`load_builtin()` 调它。
插件里不再声明任何能力绑定。
- 引擎 / 路由 / `quiz.py` / 前端 / `platforms/contract.py` 均未改动。
- 新增 [docs/pugin.md](plugin.md):插件骨架、槽位契约、新增与迁移流程、常见坑。