一站式校园信息汇总,由学生整理、为学生服务。小程序端不依赖任何服务器:44 份资料、校园地图和课表功能全部内置在包体内,课表数据只保存在本机,不经过任何后端。
| 小程序版本 | v1.5.0-mini |
| 同步的网页版版本 | v260901 |
| 内容同步日期 | 2026-09-01 |
| 资料数量 | 44 份(另有 1 份致谢文档);41 份内置原生打开,4 份超 3 MiB 走网页版 |
| 网页版 | www.syuct.top · 仓库 SYUCT/SYUCT-web |
| 小程序仓库 | SYUCT/SYUCT-mini |
课表管理 —— 本周课程、导入课表(课表码 / JSON)、生成课表码分享、当前课程高亮。手机可在网页版上传教务处完整课表截图并识别生成课表码;电脑端也可复制整张课表后使用网页粘贴。生成的课表码可在班群互相转发并从剪贴板导入。
校园服务 —— 校园地图(含高清总图、体育课地图、快递取件图)、学习资料下载、校园生活指南、新生入学、办事大厅、数字校园。
从 v1.3.2 开始,开发者工具工作区与小程序运行目录分离:
syuct-miniprogram/
├── project.config.json # 开发者工具工程配置,长期保持在外层
├── project.private.config.json# 开发者工具本机生成,不进入发布包
├── README.md
├── docs/ # 宣传素材等,不参与小程序打包
├── scripts/ # 校验、构建、更新工具,不参与小程序打包
└── miniprogram/ # 真正上传/预览的小程序运行目录
├── app.js
├── app.json
├── app.wxss
├── pages/
├── packages/
├── data/
├── utils/
└── assets/
project.config.json 固定使用 miniprogramRoot: "miniprogram/"。因此只要外层 syuct-miniprogram 目录位置不变,微信开发者工具只需导入一次;后续更新直接替换 miniprogram/ 即可,不需要重新导入项目。
miniprogram/之外的目录都不会计入小程序包体,新增素材请放在docs/,不要放进miniprogram/assets/。
- 把完整工程解压到一个长期不改路径的位置,例如
~/Projects/syuct-miniprogram/。 - 微信开发者工具选择“导入项目”。
- 选择外层
syuct-miniprogram/,也就是能直接看到project.config.json的目录。 - 以后不要更换这个外层目录路径。
后续发布可以只提供“runtime update”压缩包。它的根目录就是 app.js、app.json、pages/、packages/ 等运行文件。
推荐两种更新方式:
- 手动:把更新包内容覆盖到现有的
syuct-miniprogram/miniprogram/。 - 脚本:在项目根目录执行
bash scripts/apply-update.sh /path/to/runtime-update.zip。脚本会先校验更新包,再整体替换miniprogram/,外层工程配置和开发者工具本机配置不会动。
更新后回到微信开发者工具重新“编译”即可,不需要重新导入。
微信限制:主包 ≤ 2 MiB,单个分包 ≤ 2 MiB,主包 + 全部分包 ≤ 20 MiB。当前主包约 1.19 MiB、总量约 17.65 MiB。
- 工作区和运行目录分离,避免版本更新时反复导入工程。
- 九个原生文档分包共用
utils/native-document.js,文档打开逻辑只维护一份。 - 文档以 Brotli(quality=11) 压缩后 Z85 编码为固定字符串模块,运行时由
wx.openDocument原生打开。Z85 膨胀 25%,比 base64 的 33% 更省。 - 两个高清地图分包共用
utils/zoomable-map-page.js,缩放逻辑只维护一份。 - 地图页/地图详情页、校园生活页/详情页各自内联页面逻辑,不经过页面工厂,避免主包页面注入回归(由
verify-sync.py强制校验)。 - 高清地图图片做保守压缩;体育地图使用无损 WebP(原 PNG 的 alpha 通道全不透明,属无效数据)。
- PDF / Word / Excel / PPT 源文件 ≤ 3 MiB 时使用固定分包数据原生打开;较大文件复制网页版链接。
node scripts/test-timetable.js # 课表码、导入容错、双份存储、分享路径回归(139 项断言)
python3 scripts/verify-sync.py # 内容同步、分包与主包/总包体积
python3 scripts/verify-pdfs.py # 41 份文档端到端还原 + 3 MiB 路由一致性
python3 scripts/verify-require.py # 静态相对 require 路径可解析verify-pdfs.py 需要 brotli:pip3 install brotli。以上脚本连同全量 node --check 在 push 和 PR 时由 GitHub Actions 自动执行。
test-timetable.js 直接 require 运行目录里的真实模块(不复制被测逻辑),以内存桩替换 Storage 与文件系统,因此能覆盖"一份数据损坏、另一份完好"这类仲裁路径。
打包发布:
python3 scripts/build-release.py本项目为非官方学生共建项目。涉及政策、收费、考试、学籍、培养方案和毕业要求的内容,请以学校及学院当年正式通知为准。
