Commit Graph

10 Commits

Author SHA1 Message Date
study-tool 106818cfc2 docs: 消解 AGENTS.md 规则冲突,项目契约迁入架构文档
现象:AGENTS.md 里 5 处规则互相打架——逐次询问 vs 认领/提交/升版本;不构建 vs 前端必须
build;全部提交 vs 禁 add -A;每次提交 bump 版本号,而实际 24 次提交版本仍是 0.0.8。
docs/agent_board.md 没有 Agent 列,认领规则无法落地;docs/agent_workflow.md 是 0 字节;
docs/todo.md 与 docs/progress/todo.md 双账本漂移,旧文件还写 platforms/gdgxk.py。

根因:规则按「想防的事」逐条追加,没有回头消解冲突;项目契约和 Agent 行为混在同一个入口文件里。

边界:
- AGENTS.md 只留行为规则;日志 / 目录 / 插件契约指向 docs/architecture.md(两节内容已并入,未丢失)
- 版本号改为只在发版提交时 bump,普通提交不动
- 看板改四列表头,状态带时间戳「进行中 (MM-DD HH:mm)」,超 24h 可接管
- 删除 docs/todo.md;其中 2 条仍未修的代码问题已迁入 docs/progress/todo.md,待办按 待做 / 已知偏差 / 未验证 重排
- 不改代码、不改版本号、不打 tag

运行了什么:git status 自查(只提交这 6 个文档文件,uv.lock 是原有改动未提交);提交时 pre-commit 跑 ruff / web typecheck / commitizen
没跑什么:没跑测试、没构建、没跑 pnpm build(本次无代码改动)
2026-11-01 20:06:23 +08:00
study-tool aa48145557 feat: 故障推送 / 公需课自动重学 / 插件解耦,发版 v0.0.8
体检修复:启动日志不再打印 AUTH_TOKEN、密钥可清空、推送失败不占整段冷却、目录名与文案统一成 plugins/。
2026-11-01 17:47:22 +08:00
study-tool 491fd08c1e refactor(plugins): 莞易学迁到 pugins/guanyixue
- platforms/guanyixue.py → pugins/guanyixue/main.py
- jspx.py / study.py / detect.py 一并搬进插件目录,插件自包含:
  热重载会把实现模块一起重新 import,不再是半截插件
- 导入路径改成 study_tool.pugins.guanyixue.*;quiz.py 两处引用同步更新
- platforms/__init__.py 只剩运行时,load_builtin() 只调 load_plugins()
- 新增 pugins/guanyixue/pugin.json(id / title / name)
- 同步 AGENTS.md、docs/architecture.md、docs/pugin.md、docs/OPTIMIZATION.md
2026-10-31 16:18:45 +08:00
study-tool f8458cff51 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
2026-10-31 15:50:06 +08:00
study-tool f1a57853f4 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
2026-10-31 15:41:22 +08:00
study-tool f999e4fa4d refactor(platforms): 平台能力改为子类实现,注册不再逐项绑定函数
- Platform 由 dataclass 字段绑定改为基类:id / label / entries 是类属性,能力是子类方法,
  未实现的阶段保持基类 None,capabilities() 与 /api/platforms 输出不变
- gdgxk:session(原 new_session)/ login / list_courses / discover / study / _relogin
  收进 class Gdgxk(Platform),解析与上报 helper 仍是模块级函数
- guanyixue:改成 class Guanyixue(Platform),方法转调 jspx / study
- 删除 src/study_tool/pugins/ 草稿目录(内容与 platforms/gdgxk.py 重复,
  pugin.json 里按名字声明 study / entries 的绑定方式作废,元数据改由类属性承载)
- 引擎 / 路由 / quiz / contract / 前端未改动
- 同步 docs/architecture.md、AGENTS.md、docs/OPTIMIZATION.md
2026-10-31 15:02:21 +08:00
study-tool 7259ab8d96 refactor(platforms): 学习流程下沉到平台层,engine 只保留编排
SessionExpired 移到 platforms/errors.py;旧版流程(_study_builtin)搬到 jspx.py,新版 SPA 流程(run_study_course + 视频)搬到 study.py;engine.py 只剩账号级编排,不再 import 具体平台;routes/quiz 去掉平台 star import,session/dump_cookies 缺失时明确报错。顺带修复学习链路三处未定义全局名(jspx/study/quiz)。
2026-10-31 14:21:36 +08:00
study-tool d702830470 feat(platforms): 增加能力推导与 /api/platforms capabilities 字段
新增 platforms/contract.py:生命周期 ↔ 槽位 ↔ 能力名映射,capabilities_of 按非空槽位推导;Platform.capabilities() 供 /api/platforms 返回 capabilities。行为不变,现有流程与前端未改。同步 architecture.md(生命周期与能力、广东公需课)、todo 第二/三步、OPTIMIZATION 平台列表。
2026-10-31 13:54:28 +08:00
study-tool 1a3347f7f9 feat: 添加账号支持选择学习平台
账号新增 platform 字段,登录/刷新课程/发现课程按平台分发;同时把 JS 脚本收进 script/(目录规范调整)。
2026-10-30 01:13:47 +08:00
study-tool e8634a6317 refactor: React 前端重构,新旧平台合并为莞易学 2026-10-29 23:53:17 +08:00