3.9 KiB
3.9 KiB
更新日志
Unreleased
重构
- 前端从单文件
static/index.html(原生 JS)改为web/工程:React 19 + TypeScript + Vite + Tailwind CSS v4;Vite 直接输出到static/,FastAPI 托管/与/assets,运行 Python 不再需要 Node - 新旧学习平台合并为「莞易学」:
jspx.dgjy.net(登录入口)与study.dgjy.net(学习入口)统一注册为Platform(id="guanyixue", label="莞易学"),课程页代际(legacy/spa)由platforms/detect.py判断,平台内部按代际分发到jspx.py/study.py Platform新增entries(登录 / 学习入口 URL 片段)与registry.detect();课程发现按入口识别平台,新增平台不再需要改引擎。新增GET /api/platforms供前端展示平台名- 测验交卷从
platform(jspx / study)改为generation(legacy / spa),接口返回platform="guanyixue"+generation - 代码改为标准
src/包布局:业务代码全部在src/study_tool/,根目录app.py只做启动壳(python app.py、start.bat、Dockerfile 都不用改);新增pyproject.toml,pip install -e .后可用study-tool命令 - 平台拆成插件包
src/study_tool/platforms/:base.py定义Platform契约、registry.py注册表;引擎按course["platform"]从注册表分发 - HTTP 接口收进
routes/(accounts / misc / logs),docs/architecture.md说明分层、平台识别与新增平台的步骤
新增
- 统一日志源
runtime.log():控制台、内存(/api/log)、SQLite(/api/log/history)同一份内容;新增右上角「系统日志」弹窗查看key=system的启动/设置类日志 - 设置保存、服务启动都写入统一日志;卡片「课程日志」和「系统日志」的「清空」会同时清内存和 SQLite
- 前端:卡片状态徽标、学习进度、课程勾选、卡片内实时日志、测验 / 设置 / 系统日志弹窗全部保留;新增平台名徽标与空态引导
修复
discover()引用未定义的detect_platform/has_study_marker导致课程发现NameError:代际识别集中到platforms/detect.py,两代页面共用同一套判断- 系统设置里的大模型配置保存后重新打开会回到默认值:
save_settings写的是嵌套结构{llm, study},load_settings却按顶层字段读,现在改成从llm子对象读取 - AI 答题整段同步等待导致浏览器 / 反代超时:
/api/quiz/answer改为流式(text/event-stream)分批返回,每批失败自动重试一次 - AI 答题解析不出 JSON 时直接判空:补
max_tokens、空内容 / 非 JSON 抛错重试,并支持从自由文本、截断 JSON 里抠答案,多选连写(AC)也能识别 - 控制台是 GBK 时日志里含
⚠之类字符会让工作线程抛UnicodeEncodeError:runtime.log现在编码失败会自动降级
v0.0.1
首个版本。
新增
- 学习方式配置:快速学习(只调
period/study/log接口)/ 常规学习(开浏览器真播视频,1–5 路并发) - 常规学习:每路独立无头浏览器,可见性补丁防暂停;平台按课节顺序放行时自动降为 1 路,并把被指定的课时提到队首
- 抓包模式:
POST /api/capture记录所有 XHR/fetch(不限域名),window.open新开的标签页同样挂监听,结果落data/capture-*.json - 界面:系统设置新增「学习方式」(模式 + 并发数),卡片「更多」菜单新增「抓包 / 停止抓包」
修复
- 视频完成上报补齐学时台账
study/log/detail/save(stime/etime),完成包不再带lastProgressTime - 培训里的「课程」容器节点(periodType 10/13)不会自动完成:补一发
isComplete,并用PUT /course/front/calFinalScore重算课程完成计数 - 并发上报导致课程完成计数丢失(实测 14 个课时只记 11 个),现在每门课跑完自动重算