58 lines
3.4 KiB
Markdown
58 lines
3.4 KiB
Markdown
# 河畔Everyday
|
||
|
||
电子科技大学研究生课表 APP,Flutter 实现,Android 首版 0.1.0+1,Android 7.0 及以上。iOS 尚未配置。
|
||
|
||
已实现:周一至周日、11 节学校作息、跨节课程条形卡片、课程详情与冲突提示、两个无文字图标的玻璃悬浮 Dock、单色/多彩设置、学期开始日/周数设置、JSON 预览导入、本地保存/备份恢复、课前通知及手机日历同步。
|
||
|
||
学校认证提供自绘登录入口与官方 WebView。**本人登录、验证码及研究生课表自动识别仍待真实页面联调**,目前不会假装成功导入。详见 [学校接入状态](docs/school-integration-status.md)。
|
||
|
||
## 体验
|
||
|
||
安装 `dist/hepan-everyday-debug.apk`。这是开发测试包,不是商店发布包。首次打开点“体验示例课表”即可预览;示例课程不会写入手机日历或触发通知。
|
||
|
||
自己的课程:在“我的 → 课表设置”填写学校实际开始日和周数,再通过“导入课表文件”导入 JSON 并确认预览。默认提前 15 分钟提醒,可选 5、10、15、30、60 分钟或关闭。首次启用需要允许通知;没有精确闹钟权限时会显示可能延迟。
|
||
|
||
日历同步需授权并选择可写日历。关闭可保留或删除本 APP 创建的日程。删除时检查课程实例与本 APP 专属标记,不操作其他日程;清理失败保留映射并可重试。日历事件不创建第二份系统提醒。
|
||
|
||
## JSON 文件
|
||
|
||
样例:[schedule.schema-v1.json](examples/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:
|
||
|
||
```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
|
||
```
|
||
|
||
回到仓库根目录构建:
|
||
|
||
```powershell
|
||
./scripts/build-android.ps1
|
||
```
|
||
|
||
构建成功才复制新 APK 到 `dist/`。工具版本与设备环境见 [Android 环境](docs/android-setup-status.md)。其他电脑可使用 `scripts/setup-android.ps1 -WithEmulator` 安装环境,并将构建脚本 ToolchainRoot 指向对应 `.tools` 目录。
|
||
|
||
设备集成检查见 [验证记录](docs/android-mvp-validation.md)。系统日历测试仅运行于专用模拟器的 `Hepan_Integration_Test` 测试日历,需提前允许测试 APP 读取和写入日历。`mobile/tool/reminder_probe.dart` 是短时系统提醒测试入口,交付 APK 始终使用 `lib/main.dart`。
|
||
损坏文件无法从备份恢复时,可在提示区选择“重新建立课表”,确认后保留损坏文件副本并恢复保存功能。手机日历中的历史日程需按提示处理。
|