为开放实验教学管理系统(lab2026)的「实验列表」页提供选课增强:智能筛选、余量排序、节次码翻译、课表冲突检测。只读增强,绝不自动提交任何预约请求。
两个发行版本功能一致,任选其一安装即可(都装会出现两层面板,不建议):
| 版本 | 适合人群 | 安装方式 |
|---|---|---|
| 油猴脚本版 | 已装 Tampermonkey 的用户 | 粘贴脚本代码或拖入 .user.js 文件 |
| 浏览器扩展版 | Chrome / Edge 用户 | 开发者模式「加载已解压的扩展程序」 |
- 🔍 关键字搜索:实验名 / 教师 / 地点
- 🏷️ 星期、场次点选筛选:chip 标签显示真实时段(如「第2场 10:20」,悬停看完整时间)
- ✅ 一键过滤:仅看可约 / 隐藏已满 / 隐藏冲突场次
- 🔢 剩余人数优先排序,筛选条件自动记忆(刷新后保留)
- 🈯 节次码人话徽标:
3-1-2→ 「第3周 周一 第2场 10:20–11:50」 - 📅 课表冲突检测:按真实时间重叠判定(重叠 ≥ 10 分钟才标红并注明冲突课程),支持 PDF 课表粘贴解析 / 周网格手动勾选
- 🔁 已预约 + 已做实验自动同步:每次进列表页自动从「我的实验」页同步已预约名单、从「成绩查询」页同步已做完实验,行级标记「已预约」/「已做」徽标,默认隐藏已选/已做同类,一键抢课自动跳过已做实验
- 浏览器安装 Tampermonkey 扩展
- Tampermonkey → 「添加新脚本」→ 粘贴 experiment-helper.user.js 全部内容 →
Ctrl+S保存 - 打开实验列表页,表格上方出现「实验选课助手(油猴版)」面板即安装成功
- 地址栏进入
chrome://extensions(Edge 为edge://extensions) - 打开右上角「开发者模式」
- 「加载已解压的扩展程序」→ 选择本仓库的 extension 文件夹
experiment-helper/
├── HANDOFF.md # 二次开发交接提示词(接手必读 / 可直接投喂 AI)
├── userscript/ # Tampermonkey 单文件脚本
│ ├── experiment-helper.user.js
│ └── README.md
├── extension/ # Chrome/Edge 扩展(Manifest V3)
│ ├── manifest.json
│ ├── shared.js # 节次码解析 / 课表解析 / 冲突检测(纯函数)
│ ├── content.js # 注入实验列表页与我的实验页
│ ├── panel.css / options.* # 面板与课表设置页
│ └── vendor/ # pdf.js(Apache-2.0,本地 PDF 解析用)
└── site-reference/ # 目标网站源码快照(已脱敏,对照开发用)
├── pages/ # 各页面 HTML(含路由对照表见其 README)
├── assets/ # 站点自有 JS / CSS
├── data/ # 实验列表真实数据样本(可当测试 fixture)
└── WEBSITE_BUSINESS_LOGIC_ANALYSIS.md # 业务逻辑完整分析报告
- 只读解析与界面增强,不自动提交任何预约请求,预约仍需手动点击
- 不上传任何数据,课表与筛选条件仅存浏览器本地(GM storage /
chrome.storage)
本工具不携带任何用户数据——课表、筛选条件、「不想选」名单全部存在你自己的浏览器本地,换人时原使用者的数据不会跟过来。新用户首次打开实验列表页,面板状态栏会依次显示四段确认信息,据此判断是否已就绪:
列表场次:第N周— N 取自当前实验列表的真实周次,确认你打开的是正确周次的页面已预约 N 个实验(自动同步)— 每次进列表页自动从「我的实验」页同步已预约名单(同源 fetch,不跳页)。新用户显示已预约 0 个实验属正常;悬停可看已预约实验名与节次明细。若同步失败则显示警告而非「已预约 0」,避免误导已做 N 个(自动同步)— 自动从「成绩查询」页同步已做完的实验(有成绩记录的),对应行标记「已做」徽标且默认隐藏。选课时不会再误选已做过的实验- 课表导入状态 — 显示
未导入课表/已导入 N 门课。冲突检测、个性化推荐等功能需导入课表后才生效
换人交接流程:原使用者「课表设置 → 一键清空课表」即可清除本地数据;新使用者重新导入自己的课表即可。两版(油猴 / 扩展)数据互不相通,如需迁移用「导出 / 导入 JSON」。