ANU 课表

查看你在 ANU 的辅导课和实验课分组如何与讲座安排在一起,每次看一个带日期的教学周。

在线地址: https://comp4020-crit7-petrewei.fly.dev/zh/

MyTimetable 把每门课的分组分开显示,无法看到已分配的分组在不同课程之间如何衔接。这个应用列出每个实验课和辅导课的分组并标出已分配的那一组,可以记录另一个分组,并按上课日期显示你的讲座和已分配的分组,冲突标在发生冲突的日期上。

它按我自己的 2026 年第二学期课表(COMP3300、COMP3500 和 COMP4020)建模,没有登录功能,所以任何拿到网址的人都可以更改记录的分配。

功能

数据

课程和分组于 2026 年 9 月 29 日从 MyTimetable 复制到 src/data/timetable-2026-s2.json,COMP4020 辅导课的小组名称和助教于 9 月 30 日从课程网站复制,每次启动时都用这个文件填充数据库。日历订阅网址不放在仓库里,因为它能读取我的课表。

技术栈

快速开始

你需要 Node 24 和 pnpm 11;mise install 会根据 mise.toml 安装这两个工具。

pnpm install
pnpm dev

开发服务器运行在 http://localhost:4321。数据库创建在 .data/app.db;设置 DATABASE_PATH 可以使用其他文件。

命令 作用
pnpm dev 启动开发服务器
pnpm build 把 Node 服务器构建到 dist/
pnpm check 类型检查、构建并运行所有测试
pnpm db:generate 编辑 src/lib/schema.ts 后生成迁移文件

测试

spec/ 中的测试用一个全新的数据库启动构建好的服务器,覆盖刷新和重启后的持久化、页面自带的表单、被拒绝的请求、冲突规则、中文页面、每个分组都来自 MyTimetable 的副本,以及仓库中没有提交订阅网址或学号。页面是否比 MyTimetable 更清楚、在手机上是否好读,则要在浏览器中判断。

部署

每次推送到 main 都会在 GitHub Actions 中运行检查,通过后部署到 Fly.io。迁移在持有数据卷的机器启动时运行。

项目结构

未实现

偏好排序、登录、标签页之间的实时更新,以及编辑课表。

智能体的工作规则在 CLAUDE.md 中,应用的构建过程记录在 PROCESS.md 中。