Files
study-tool/todo.md
T

3.1 KiB
Raw Blame History

TODO

待评估:接入广东公需课平台(jsxx.gds.edu.cn)

状态:只沉淀思路,不实现。手上没有公需课账号,接口抓不到,代码不动。

背景

参考脚本:2026广东公需课·全自动完美版(后台保活+10分钟刷新).js(油猴 v1.3,@match https://jsxx.gds.edu.cn/*)。

它做的事:悬浮面板 + 后台保活 + 10 分钟整页刷新 + 视频题目题库命中(约 200 条)+ 未命中时 12 轮 暴力试错 + 考核页按课程 id 硬编码两套 30 题答案自动勾选(不代交卷)。

注意:这是广东专业技术人员继续教育公需课,跟本项目的 dgjy(东莞教师培训)不是一套系统, 连登录入口都不同。

结论:不能直接融合

维度 该脚本 本项目 能不能用
站点 jsxx.gds.edu.cn jspx / study.dgjy.net 无交集
实现层 页面 DOM 点击、layui/mylayer 弹层 服务端接口 + Playwright 真播 不同层
答案 硬编码题库 + 按课程 id 两套答案 大模型现算 数据不可复用
保活 setInterval、伪造 mousemove、整页 reload 服务端跑逻辑,浏览器只播视频 reload 会打断播放
兜底 12 轮暴力试错 LLM + 交卷前人工核对 平台限次,会烧光重考机会

真要接入时的顺序

  1. 抓包取证(阻塞项,必须有公需课账号)
    • 登录链路:账号密码还是统一身份认证?落哪些 cookie / token
    • 课程列表与课时树接口
    • 课时上报接口:视频进度怎么记账,是否要心跳
    • 考试接口:取卷、交卷、重考次数(对应 dgjy 的 surplusExamCount 那一套)
    • 视频是不是直链,需不需要 Playwright 真播到结尾
  2. 适配层分派:app.py 现在 login() / discover() / detect_platform() / StudyClient 全是 dgjy 专用,得按平台分支;accounts 表加平台标识,控制台卡片显示平台
  3. 答题:本地题库命中优先、LLM 兜底(题库得自己攒 dgjy 的,脚本那 200 条是公需课内容,搬不过来)
  4. UI:课程卡片区分平台;公需课的「考核」页结构跟 dgjy 完全不同,不能复用测验弹窗

明确不照抄的部分

  • 暴力试错答题:dgjy 平台一般只给 3 次重考,试错直接废掉机会
  • 10 分钟整页刷新:打断正在播放的视频,进度白费
  • 按课程 id 硬编码答案:换课程批次即失效,脚本注释自己写了「已反转,解决反了问题」,说明是试错出来的
  • .layui-layer / .mylayer-wrap / #studySelectAct .next / #topicList .m-topic-item 这些选择器
  • 用 innerText 包含「正确」判断已答弹层:题干带「正确」二字就会被误点
  • 把「下一节」按钮 pointer-events:none 锁死:平台一改版就失效

可以借鉴的

  • 题库命中优先、LLM 兜底(省 token、命中时更准)
  • 强制播完才放开「下一节」—— 项目已有等价实现(播到 ended + completeTime 校验)

已完成

  • 「首次进入课程弹『未加入课堂』」已修复,实测确认见 OPTIMIZATION.md。