Skip to content

smartThise/NextTHUxk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NextTHUxk — 下一代选课

清华本科生选课增强工具。在原选课页面叠加全屏工作台,提供课程搜索、课表预览、暂存管理、AI 排课等功能。

安装

建议使用方式二(解压加载)。Chrome / Edge 已收紧外部 .crx 安装策略,直接拖入 .crx 可能被拦截。解压加载在所有浏览器均可正常使用。

🚀 校内访问 git.tsinghua.edu.cn/gjl25/NextTHUxk 下载速度更快。

方式一:.crx 拖入安装(Chrome / Arc)

  1. Releases 下载 NextTHUxk.crx
  2. 浏览器打开 chrome://extensions,右上角开启「开发者模式」
  3. 将 .crx 文件拖入浏览器窗口,确认安装
  4. 若提示无法安装,请改用方式二

方式二:解压加载(推荐 / 所有浏览器通用)

  1. Releases 下载 NextTHUxk.zip 并解压
  2. 浏览器打开扩展管理页(Chrome: chrome://extensions,Edge: edge://extensions),开启「开发者模式」
  3. 点击「加载已解压的扩展程序」,选择解压后的文件夹

使用

进入清华选课网站(zhjwxk.cic.tsinghua.edu.cn 或 zhjw.cic.tsinghua.edu.cn),右下角出现 ✨ 按钮,点击即可打开全屏工作台。

Preview

功能概览

课程浏览与搜索

  • 全校课程目录搜索(按课名、课号、教师模糊匹配)
  • 按类型快速筛选:必修 / 限选 / 体育 / 已选 / 我的队列 / 可选
  • 高级筛选:按学分数周几第几大节精确过滤
  • 时间冲突筛选:按与当前预览课表是否冲突过滤
  • 每门课显示余量、竞争热度、各志愿排队人数

中签概率计算(预选阶段)

  • 每门课程自动计算所有合法选法的抽中概率,红黄绿三色直观展示
  • 概率模型基于志愿级联机制:容量按志愿优先级递减分配,结合各志愿报名人数估算中签率
  • 课程卡片、暂存区、草稿列表、预览课表均显示概率信息
  • 修改课程类型或志愿号后概率实时刷新

课余量实时数据(抽签结果阶段)

预选抽签结果出来后,系统自动切换到课余量模式:

  • 实时课余量:从教务系统获取所有课程的容量、剩余座位和排队人数
  • 我的队列:显示个人候补队列,包含队列排名和总排队人数(如「排队第121名 / 共185人」)
  • 课程卡片显示余量/排队/排入希望值,替代预选阶段的概率显示
  • 课表预览中候补课程显示排队状态,已选课程显示「已选」
  • 草稿/暂存在课余量模式下也显示余量队列信息
  • 独立的「刷新队列」按钮,一键更新课余量和排队数据

时间冲突检测

  • 所有课程卡片自动检测与当前预览课表(正选/草稿/暂存)的时间冲突
  • 冲突信息直接显示在卡片上(如「⚠ 冲突: 周三3-4节 数据结构」)
  • 支持筛选「仅无冲突」或「仅冲突」课程

选课 & 退选

  • 课程类型选择遵循选课规则:必修课可选必修/限选/任选;限选课可选限选/任选;任选课只能任选;体育课只能体育
  • 直接在卡片上选择课程类型和志愿号,点击「选课」提交
  • 已选课程可调整志愿顺序(▲▼),系统自动校验志愿名额上限
    • 必修 / 限选 / 任选:1 志愿最多 1 门,2 志愿最多 2 门
    • 体育:1 志愿最多 1 门,2 志愿最多 1 门
  • 3 志愿不限数量
  • 操作后实时刷新选课状态

课表预览

  • 自动生成已选课程的周课表视图(周一至周日 × 第 1-12 大节)
  • 时间冲突标红显示
  • 可预览暂存区或任意草稿的课表,一键切回正式课表
  • 课表单元格显示课程名称和教师姓名
  • 可直接在课表上操作:鼠标悬停显示 ✕ 按钮,点击可退选(已选课)、从暂存移除、从草稿删除
  • 暂存/草稿预览课表按概率着色(预选阶段:绿/橙/红;课余量阶段:显示余量/排队人数)

暂存课表(草稿)

核心创新功能:在不直接提交选课的前提下,预先编排多套课表方案。

  • 将课程「暂存」到草稿区,最多保存 5 张草稿
  • 暂存区每门课可独立调整课程类型和志愿号,实时显示所有选法的概率
  • 已选课程也可一键转化为新的暂存草稿
  • 草稿支持展开查看全部课程列表,可逐门调整类型/志愿或删除
  • 提交选课」:自动退选所有已选课,再按草稿内容一次性选入
  • 提交后草稿保留,不会自动删除
  • 导出 / 导入:复制 JSON 分享给同学,对方导入后可直接提交
  • 自动检测草稿内课程的时间冲突

培养方案检测

  • 查看所有培养方案课组及完成进度
  • 自动检测:已选课 + 暂存课 + 所有草稿是否覆盖方案要求
  • 特殊规则:
    • 体育课互认:任一体育课可满足任意体育方案要求
    • 英语(3) 即「英语进阶读写」,可由「第二外国语」替代
    • 英语(1)(2) 即「英语阅读写作/听说交流(ABC)」,不可由第二外国语替代

AI 排课

  • 填入兼容 OpenAI 格式的 API 地址、模型名称和 Key
  • AI 自动读取:当前必修 + 体育课程目录、已选课程、所有暂存草稿、个人偏好
  • 生成推荐方案并自动存入暂存草稿区
  • 对任选 / 通识课仅给出方向建议,不硬选具体课程

自动更新

  • 定期检查 GitHub Releases 是否有新版本
  • 发现更新时在顶部显示提示横幅
  • 也可手动点击「检查更新」

学期管理

  • 自动从教务系统 URL 检测当前选课学期
  • 支持手动切换学期(点击右上角学期标签)
  • 切换后自动清空缓存并重新拉取数据

数据与隐私

  • 选课操作走原系统表单提交,与手动操作完全等价
  • 个人数据(草稿、API 配置等)全部存储在浏览器本地
  • 扩展代码中不包含任何个人数据
  • 课程目录和志愿数据有缓存机制:
    • 课程目录:首次加载后缓存,手动刷新时更新
    • 志愿排队数据:每日 8:00 / 12:00 / 16:00 / 20:00 自动刷新
    • 已选课程:每次打开工作台实时获取

注意事项

  • 仅在清华选课网站域名下生效(zhjwxk / zhjw / webvpn)
  • 需要已登录教务系统的浏览器 session
  • 体育课的志愿信息独立于其他课程类型,显示规则略有不同

文件结构

├── manifest.json        # 浏览器扩展配置 (Manifest V3)
├── content.css          # 全部样式
├── content.js           # 入口:HTML 模板 + Shadow DOM + 事件绑定 + 启动流程
├── src/
│   ├── config.js        # 命名空间 NX、常量、工具函数、存储、网络
│   ├── data.js          # 数据抓取与解析(课程目录、志愿、选退课 API)
│   ├── probability.js   # 中签概率计算、志愿格式化
│   ├── state.js         # 暂存/草稿管理、课表解析、冲突检测、选课状态
│   ├── render.js        # 所有渲染函数 + 筛选逻辑
│   ├── ai.js            # AI 搜索 + 智能排课
│   └── update.js        # 版本更新检查
├── popup.html           # 扩展弹出页
├── popup.js             # 弹出页逻辑
└── README.md            # 本文件

License

MIT

About

下一代选课 — 清华本科生选课增强浏览器扩展

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors