Files
TPSchedule/README.md
T

3.2 KiB
Raw Blame History

河畔Everyday

电子科技大学研究生课表 APP,Flutter 实现,Android 首版 0.1.0+1,Android 7.0 及以上。iOS 尚未配置。

已实现:周一至周日、11 节学校作息、跨节课程条形卡片、课程详情与冲突提示、两个无文字图标的玻璃悬浮 Dock、单色/多彩设置、学期开始日/周数设置、JSON 预览导入、本地保存/备份恢复、课前通知及手机日历同步。

学校认证提供自绘登录入口与官方 WebView。本人登录、验证码及研究生课表自动识别仍待真实页面联调,目前不会假装成功导入。详见 学校接入状态。

体验

安装 dist/hepan-everyday-debug.apk。这是开发测试包,不是商店发布包。首次打开点“体验示例课表”即可预览;示例课程不会写入手机日历或触发通知。

自己的课程:在“我的 → 课表设置”填写学校实际开始日和周数,再通过“导入课表文件”导入 JSON 并确认预览。默认提前 15 分钟提醒,可选 5、10、15、30、60 分钟或关闭。首次启用需要允许通知;没有精确闹钟权限时会显示可能延迟。

日历同步需授权并选择可写日历。关闭可保留或删除本 APP 创建的日程。删除时检查课程实例与本 APP 专属标记,不操作其他日程;清理失败保留映射并可重试。日历事件不创建第二份系统提醒。

JSON 文件

样例:schedule.schema-v1.json。

字段 含义
schemaVersion 固定为 1
isDemo 样例为 true;导入本人课程改成 false
explicitlyEmpty 只有明确要清空且 courses=[] 时设 true,并在预览再次确认
id 每条课程安排唯一的非空标识
name / teacher / room 课程名、教师、教室,均非空
weekday 周一至周日:1–7
startPeriod / endPeriod 开始/结束节次:1–11,包含边界
weeks 实际上课周次数组:1–30;单双周展开成明确周次

同一课程不同星期或不同节次,应使用不同 id。文件上限 2 MB。导入文件不能冒充学校来源;示例模式不覆盖真实课表。

开发与构建

源码位于 mobile/。本次工具在 C:/Users/david/Desktop/app/.tools,不会进入 Git。Windows PowerShell:

$env:HEPAN_TOOLCHAIN_ROOT='C:/Users/david/Desktop/app/.tools'
. ./scripts/android-env.ps1
Set-Location mobile
flutter pub get
flutter analyze
flutter test
flutter run -d emulator-5554

回到仓库根目录构建:

./scripts/build-android.ps1

构建成功才复制新 APK 到 dist/。工具版本与设备环境见 Android 环境。其他电脑可使用 scripts/setup-android.ps1 -WithEmulator 安装环境,并将构建脚本 ToolchainRoot 指向对应 .tools 目录。

设备集成检查见 验证记录。系统日历测试仅运行于专用模拟器的 Hepan_Integration_Test 测试日历,需提前允许测试 APP 读取和写入日历。mobile/tool/reminder_probe.dart 是短时系统提醒测试入口,交付 APK 始终使用 lib/main.dart。