549a91af1d
首次进入课程时课时树回 code=500「你还没有加入学习…」,前端把它渲染成挡路弹层, 人工点掉后 SPA 自己补发 syncSelf 才落库 —— 所以第二次进同一门课就正常。 - discover_study 返回值补 course_code(trainCourse/getById.courseCode) - 新增 study_mod_get:/mod/* 只带 cookie + Referer,不带 Bearer - 新增 study_sync_self:GET /mod/school/wanpeng/syncSelf?courseCode=… - 新增 study_sync_identity:GET /mod/gjt/roleList 补一刀身份 - ensure_study_join 改为:已加入 → student/join → syncSelf + 轮询 getById → 刷新 jspx 页 - todo.md 收尾,新增 OPTIMIZATION.md 记录待实测确认项
2.0 KiB
2.0 KiB
OPTIMIZATION
已实现、但还需要你实测确认的事项。确认没问题后把对应条目删掉。
首次进入课程自动加入(syncSelf)
状态:已实现,待实测确认。
做了什么
首次进入没加入过的课程时,平台课时树会回 code=500「你还没有加入学习…」,前端把这句话
渲染成挡路的弹层,不点就进不去。真正把账号同步进课程的是页面自己发的这一发:
GET /mod/school/wanpeng/syncSelf?courseCode=<courseCode>
(抓包实录:isJoin=0 needJoin=1 → syncSelf 约 2s → 再拉 getById 就是 isJoin=1。)
POST /course/front/student/join 对 isFreeJoin=0 的慕课课会被拒「该课程无法直接加入,请联系管理员」,
所以现在 ensure_study_join 的顺序是:已加入 → student/join → syncSelf + 轮询 getById(约 11s)
→ 刷新 jspx 课程页复查。course_code 取自 trainCourse/getById 的 courseCode。
怎么测
- 用一个没加入过该课程的账号,或把某课时的
studyLog清掉(制造「首次进入」)。 - 跑一次自动学习,看日志里加入那一段。
预期出现其中一条:
加入培训:同步课程页后已加入(student/join 被拒:…;syncSelf=请求成功)加入培训:刷新课程页后已加入(…)
确认点是:之后的 period/study/log 真记账(课时 completeTime 有值),且全程不需要人工点弹层。
如果没生效
- 日志是
加入培训被拒:…;课程没有 courseCode,无法走同步接口→ 该账号/该课程的getById没返回courseCode,需要再抓一次包定位它的来源 (抓包时重点看syncSelf?courseCode=参数是从哪个响应/本地状态来的)。 - 日志显示 syncSelf 成功但
getById一直isJoin=0→ 同步在服务端没落库,先看syncSelf响应的result.code,再考虑补/mod/gjt/roleList之外的接口。