Skip to content

feat(MYSY): 新增「实际上课时间」时间表(上午 4 节)并换算课程节次 - #10

Merged
Mutx163 merged 1 commit into
Mutx163:mainfrom
Guzheng3:feat/mysy-actual-timetable
Sep 9, 2026
Merged

feat(MYSY): 新增「实际上课时间」时间表(上午 4 节)并换算课程节次#10
Mutx163 merged 1 commit into
Mutx163:mainfrom
Guzheng3:feat/mysy-actual-timetable

Conversation

@Guzheng3

@Guzheng3 Guzheng3 commented Sep 9, 2026

Copy link
Copy Markdown

接续 #9(已合并)。#9 提供了「教务 / 预设」二选一,但预设表只有 11 节且没有换算课程节次,选它会出现节次错位(教务第 6 节 14:00 显示成第 6 节的 14:50)。本 PR 把预设表明确为「实际上课时间」,并补上节次换算。

背景

绵阳师范学院实际上课时间与教务系统课表时间不一致,脚本此前只能把教务课表的时间直接交给 App,课表显示的上课时间与实际作息对不上。本 PR 新增「实际上课时间」时间表,导入时让用户二选一。

教务系统课表时间(13 小节)

大节 时间 小节
第一大节 08:00-09:35 第 1、2 节
第二大节 09:55-12:20 第 3、4、5 节
第三大节 14:00-15:35 第 6、7 节
第四大节 15:55-18:20 第 8、9、10 节
第五大节 19:00-21:25 第 11、12、13 节

实际上课时间(11 节,本 PR 新增)

上午只有 4 节 —— 教务第 5 节(11:35-12:20)实际无课;晚上 2 节。

节次 时间 节次 时间
1 08:15-09:00 7 16:05-16:50
2 09:05-09:50 8 16:55-17:40
3 10:20-11:05 9 17:45-18:30
4 11:10-11:55 10 19:00-19:45
5 14:00-14:45 11 19:50-20:35
6 14:50-15:35

与教务口径的差异:上午 4 节 vs 5 节;下午第 1 节 14:00(教务第 6 节);晚上 2 节 vs 3 节;上午第 1 节晚 15 分钟(08:15 vs 08:00)。

改动

导入时弹窗二选一(默认「教务系统课表时间」,不改变现有行为):

选择课表使用的时间表
  ● 教务系统课表时间(13 节)
  ○ 实际上课时间(11 节,上午 4 节)
  1. 新增 ACTUAL_TIME_SLOTS:上表的 11 节实际作息
  2. 新增 JWC_TO_ACTUAL_SECTION + remapCoursesToActualSections():选择「实际上课时间」时把课程节次由教务口径换算为实际作息口径(教务 6→实际 5、7→6…),避免只换时间表导致的节次错位
  3. chooseTimeSlots() 返回 {useActual, slots}runImportFlow() 据此决定是否换算节次
  4. 位于教务第 5/13 节(实际作息无对应节次)的课程保留原节次并 toast 提示
  5. 取消 / 越界 / 旧版 App 无 showSingleSelection → 回落「教务系统课表时间」,不阻断导入
  6. JWC_FALLBACK_TIME_SLOTS 仍为教务口径兜底(#kbtable 存在但读不到时间块时)

验证

jsdom 加载真实课表页(jw.mtc.edu.cn/jsxsd/xskb/xskb_list.do#kbtable,14 门课程),22 项断言全部通过:

用例 结果
选「实际上课时间」→ 11 节,上午 4 节(08:15 / 09:05 / 10:20 / 11:10),不含 11:35
14 门课程节次全部换算,且落在 1-11 范围内
教务 6-7 节 → 实际 5-6 节,时间 14:00-15:35
教务第 5/13 节课程保留原节次 + 提示用户
选「教务系统课表时间」→ 13 节、首节 08:00-08:45、课程节次不变
取消 / 回传 -1 / 越界 9 / 旧桥接层 → 回落教务口径且不抛错

兼容性

  • 默认选项是「教务系统课表时间」,老用户导入行为完全不变
  • 只调用 showSingleSelection / saveImportedCourses / savePresetTimeSlots,均已在 docs/SCRIPT_API.md 定义
  • App 端 _decodeImportedSections() 只取 startTime/endTime(忽略 number),两套表均按数组顺序生效

绵阳师范学院实际作息与教务系统课表时间不一致:教务课表按 13 小节编号,
实际上午只上 4 节(教务第 5 节 11:35-12:20 无课),晚上 2 节,
且上午第 1 节实际 08:15 开始(教务为 08:00)。

导入时弹窗二选一(默认「教务系统课表时间」,不改变现有行为):
- 教务系统课表时间(13 节):沿用页面 #kbtable 推导结果
- 实际上课时间(11 节,上午 4 节):新增实际作息时间表

选择「实际上课时间」时,按 JWC_TO_ACTUAL_SECTION 把课程节次由教务口径
换算为实际作息口径(教务 6→实际 5 等),避免节次错位;位于教务第 5/13 节
(实际作息无对应节次)的课程保留原节次并提示用户。
@Mutx163

Mutx163 commented Sep 9, 2026

Copy link
Copy Markdown
Owner

检查通过了吗这个

@Mutx163
Mutx163 merged commit 7e25749 into Mutx163:main Sep 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants