本文写于 2026 年 9 月 22 日,旧版本存档于 这里
致谢随笔 & 开发故事
本项目由 EnderWolf006/ElectronClassSchedule 大改而来,虽然本项目已经大量修改了原版代码,上游也已停止更新,但仍感谢原作者 EnderWolf 给予的启发。许多新功能与灵感都来源于我中学的同学、老师,感谢你们!
有关项目的一些故事
我初一的时候任班级的电教委,当时是在 B 站上看到了 这个视频 ,觉得做的不错,就给我们班安装上了这个,老班也觉得挺好。后来我在 GitHub 上刷到了一个类似的项目,叫 ClassIsland ,当然我承认这个项目比我这个做得更加成熟,UI 也更加好看,功能当然更加完善。 但是我这个支持集控,还能自动推算调休 ,但是由于我所在学校使用的电脑是 Windows 7,而 ClassIsland 又不能在 Windows 7 中很好地工作,所以只能望而却步。好吧,那我自己造还不行吗?所以如果你的学校电脑版本在 Windows 10 及以上而且不需要集控调休等等本项目特有的功能,那确实不妨试试 ClassIsland。
不建议在 Windows 10 以下的系统运行本应用。在 Windows 7 中,.NET 运行时会产生严重的内存泄漏问题。
—— ClassIsland README(节选)
所以我就选择继续在 ElectronClassSchedule 这个项目上耕耘,第一个大的改动就是配置迁移云上,其实也就是配一个 HTTP 文件服务器,然后启动时从云端下载服务替代。再之后有其他班也听说并引入了这个项目,然后又遇到了我们学校临时调课的情况,但是跑到别的班通知重启软件实在太麻烦,需要一个高效的通知方法,这个项目后端的第一个版本诞生了。第一个后端的行为很简单,只有两个接口:读取文件,拼接 JSON,返回;接受 WS,广播信息。
其实当时我就已经有了对集控功能的构思,我本来想看看 ClassIsland 作为一个成熟的项目是怎么做的,结果他们没有集控,或者说很简陋,好吧,自己动手丰衣足食。
再之后,由于我这人吧经常做事儿不咋过脑子,不会回头去检查,导致我经常对着一个 2x2 的时间表也能录错,还不是说录窜行了,是连 JSON 格式都写不对。所以再之后,我着手开发了一个前端,后端随之增加了校验功能。至此本项目架构的雏形已经出现。
然后呢,迎来了 AI Coding 的浪潮,在浪潮之后,这个项目有许多的代码是 AI 生成的,当然全部经我个人 Review 过,所以后来开发工作进展更快了。在我临毕业之时,这个项目迎来了他生命周期的最后时刻,我加了最后一个新功能,做了所有的 Bugfix,改了名字(AstraSchedule,星程课表),后端用 Go 重写了,整个项目也申了软著,着手开始写了这份文档。
用 Go 重写之后啊,在迁移的时候就考虑兼容 Serverless 环境了,所以也是现在能提供公益 SaaS 的原因,成本减少 20 倍,速度更快,更稳定——本项目仍在探索 新的思路 进一步压缩部署成本。
以上就是这个项目截止到我中考结束时的架构演变史。每个功能的更新也有其对应的故事,由于太多太杂太散,无法于此一一列出。不过其中我最自豪的还是自动调休推算,你可以在我的 个人博客 中阅读这篇技术文章——用非常简单的算法去解算现实中最头疼的调休规则——上班的大多不太关心今天调哪天,但学生不一样,他们真的需要关心调休调哪天。
我以为这就是我能做的全部了,很庆幸的是,我在我高中的班级里也试运行了这个项目,反响也都不错。其实在初中的时候,这个项目虽然运行了三年,但也没人真的来感谢过我啥的,只有出了问题才来找我,但我认为这是值得庆幸的——你不会感谢树木用光合作用给你提供了氧气,你只会在感到难以呼吸时才会想起来——是工具,更是基础设施。
在旧致谢中,我说 “所以这个项目这三年一直由我一个人全栈开发,现在或许可以画上句号了”,现在,这个项目已经来到 V5.0 开发阶段;V4.0 开发工作已经在我中考前结束。其实 V4.0 我给他的描述是 “中考前不想留遗憾而已”,而 V5.0 更是被描述为 “可能会存在的版本”,但当 第一个 V5.0 的 Issue 被关闭时,就意味着这个版本真的要存在了。这意味着,这个项目至少还会维护三年,到我高中毕业。
坦率讲,我没上啥好初中,三十九是个中下游的初中,我还是普通班学生;我的高中,二十七,虽然是南京的老牌四星(相当于省重高),但也只能算凤尾。三十九并没把我带去什么顶尖高中,但讲真的,提起我的初中,我仍然会给极高的评价——至少我的生活是快乐的,学校把我当人看。
我对我的高中截止于写这篇致谢时的评价也一样(只是我不喜欢把话说太死),我很感激老师们没反对(毕竟是公用电脑),也没有特别拿成绩去压力学生,是一所把学生当人的好高中。说实话我的中考分数其实可以再网上够一够的,但好多学校不把学生当人看。我不觉得所谓 “升学率” 是什么唯一评价指标,如果一个学校升学率很高却不把学生当人对待,那就不能算是好学校,那是工厂。
最后
感谢 EnderWolf006(上游项目作者)的原项目为本项目打好的地基,对本项目早期发展的帮助很大。
感谢我的同学们,本项目的所有功能都源自于同学们的真实需求,让本项目的功能更贴近校园的实际需要。
感谢我的老师们,没有说这个项目影响我的学习,也没有说影响到了他们教学,为这个项目的生长提供了一片土壤。
感谢我的初中,南京市第三十九中学,让我有一个快乐的初中生活。
感谢我的高中,南京市第二十七高级中学,让项目得以在新的土壤继续生长。
感谢 ClassIsland(同类项目),为本项目发展的大方向提供了参考,虽然没参考来什么。
本项目与 ClassIsland 没有任何关联,只是作为一个较为知名的同类项目在此提起,两者各有优缺。
以及感谢耐心读完这篇致谢的你。
