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
|
e6515fe278
|
fix: 运行状态与日志三处修复;依赖改用 uv 锁 + 国内镜像
- 重启标记不再污染新一轮运行:hydrate_runs() 标记「已中断」后立即落库,runtime.set_state() 在切入 discovering/studying 时清掉上一轮的 error/progress/finished_at
- 服务重启后卡片「课程日志」能读到 SQLite 历史:前端兜底条件不再拿 status 是否为空做判断(重启后 status 恒为 interrupted)
- 删除账号连带清日志:account_delete() 按账号 id + 用户名清 run_state/run_log/login_log,删除接口同时清内存里两个 key
- 新增 uv.lock 依赖锁定;pyproject 走阿里云 PyPI 镜像,Dockerfile 支持 PIP_INDEX_URL 构建参数
- 文档移入 docs/,.gitignore 忽略 *.egg-info/(uv run 可编辑安装产物)
|
2026-10-31 00:53:40 +08:00 |
|