TPSchedule

当前Android版本0.7.3+21:本科登录后缺少公共脚本和样式时,沿用同一学校会话尝试恢复完整页面。包含实际恢复逻辑,仍需校园网内真实账号复测。详见0.7.3验证记录。

0.7.0补充:考试页查询类型与卡片保持16像素间距;反馈问题和建议可自选附带最近10分钟的登录/读取/提醒诊断日志。默认不发送,不含密码、Cookie或课表内容,单独作为邮件文本附件。服务端需按日志附件更新说明手动更新;真实学校登录及SMTP未由本次离线测试代替验证。玻璃取样偏移仍在调查,未纳入本次修复结论。

学生课表 APP,Flutter 实现,支持电子科技大学研究生和本科生系统。Android 0.7.3+21,Android 7.0 及以上。

使用用户提供的原始 SVG 图标,蓝色渐变、黄色日历框及白色笔画保持一致;启动画面使用相同配色。0.5.1修复重复启动页闪烁:初始化期间保留原生启动屏,数据就绪后直接显示课表首帧,不再叠加Flutter品牌页或淡出动画。Android12+ 原生启动屏使用同色纯蓝背景及图标,旧版采用蓝色渐变。

三个标签页:课表、考试、个人设置。界面统一蓝色,三个页面标题对齐。透明蓝色液态玻璃风格悬浮 Dock 为264×58,选中滑块为灰色玻璃,图标为实心蓝色,静止边距为3。支持点击图标或拖动选中滑块切换;按压和拖动时放大、松手弹簧回弹,支持的渲染模式启用实时背景折射。页面切换采用短距离移动与淡入淡出,并保留每页滚动位置。Dock在三个页面常驻,上下滚动均保持可见;课表左右滑动切换周次,不切换标签页。系统“减少动画”开启时减少切页与回弹动画。

课表周一至周日固定七列同屏,无横向滚动。同节数课程条等长;课程名可省略,老师和教室完整换行,点击查看全部信息。课程条默认长度125%,在「个人设置 → 课表设置 → 课程条长度」调节80%–200%。课前提醒、手机日历及学期设置继续保留。

0.5.2按新的Apple Music参考图调整Dock:底座保持通透,增强边缘折射并收窄柔化亮边;静止滑块为明确的半透明中性灰,按住时过渡回原有通透玻璃。滑动时的放大比例、弹簧参数和点击切换逻辑不变。蓝色实心图标保留。详见0.5.2验证记录。

0.5.3为蓝色图标增加轻微柔光,下方显示“课表、考试、我的”。文字可随系统字号放大,并在Dock固定尺寸内自动适配。灰色静止滑块、按压放大和回弹保持。详见0.5.3验证记录。

0.5.4主要缩小Dock高度,由68降至58,宽度保持264。Dock改为常驻。课表向左滑动下一周、向右滑动上一周,一次手势只换一周,限制在设置的学期周数内;箭头和“本周”按钮保留。未设置学期开始日时仍提示设置。详见0.5.4验证记录。

0.5.5修复发布包裁剪通知图标导致提醒初始化失败的问题。课前提醒可多选5/10/15/30/60分钟,各时间点独立安排通知;旧单选设置自动保留,至少选择一项。设置页显示待提醒次数、最近提醒时刻以及通知类别/精确提醒权限状态。详见0.5.5验证记录。

0.5.6为Dock图标增加蓝色柔光与浅色轮廓光晕,提高玻璃背景上的辨识度;未选中图标也增强蓝色填充。Dock尺寸、灰色静止滑块、按压回弹和文字保留。详见0.5.6验证记录。

0.6.0将Dock光晕改为白光,换周增加过渡,修复通知查询失败阻断提醒,并增加通知测试与诊断。我的页面新增反馈与共建。服务器仍需配置部署,详见0.6.0验证记录与中文1Panel部署说明。

0.6.1优化启动:先绘制与原生开屏衔接的品牌帧,读取本地课表后以300ms过渡进入首页,通知与日历随后同步;学校浏览器首次访问时才初始化,后台返回不重播开屏。基础和旧版Android开屏资源统一蓝底与图标尺寸。详见0.6.1启动验证记录。

0.6.2将学校连接入口改为「选择学校」,目前提供「电子科技大学(研究生)」。选中后沿用原认证及导入,取消不开始登录;旧学校学期和连接刷新继续复用。详见0.6.2学校选择验证记录。

0.7.0新增「电子科技大学(本科生)」。本科课表由学生在学校网页选择学期、打开课表,再点击「导入当前课表」;考试支持一个学期及多种考试类型整批读取。查询历史本科考试保留当前课表。本科12节,第12节22:00–22:45;研究生及示例仍为11节。学校选择与成功查询选项持久保存,刷新沿用;详见本科接入验证记录。

0.5.4源码和安装包已冻结用于登记,位于dist/backups/TPSchedule-0.5.4-registration-20261014,Git标签tpschedule-0.5.4-registration。软著材料登记版本按用户要求为V1.0,使用冻结源码,未混入0.5.5功能,另存于output/pdf/TPSchedule-软著登记材料-V1.0。

安装与学校登录

安装 dist/TPSchedule.apk(release运行模式),或使用 dist/TPSchedule-debug.apk 测试。Android包名已按用户确认改为 com.tpschedule.app,显示名称为TPSchedule。它与旧 com.example.hepan_everyday 是两个独立应用,不能覆盖安装旧RSchedule;旧应用与数据保留,新应用需要重新导入课程并设置日期。

原签名密钥及签名配置不改,新旧 APK 证书及公钥会核对一致。保留 .tools/android-user/debug.keystore,不要删除、重建或随源码分发。当前保留的证书是Android Debug类型,release运行模式不代表更换为正式发行证书;提交商店/备案前须确认目标平台是否接受。dist/TPSchedule-signing-info.json、证书PEM及公钥PEM只含公开签名信息。

在「我的」点击「选择学校」,可选择「电子科技大学(研究生)」或「电子科技大学(本科生)」。研究生沿用研究生系统专用认证入口,认证并选择学期后自动查找课表。本科生进入本科教务系统,自行在网页选择学期并打开课表,再点击「导入当前课表」;考试则在APP选择学期和一种或多种考试类型后自动读取。账号、密码和验证码均在学校原网页填写,应用不读取或注入密码。取消学校选择不开始登录,也不改已有课表;成功查询的学校及选项会保存在本机供刷新使用。

学校目录集中在 mobile/lib/features/school/school_selection_page.dart,当前只列出已接入的学校。学校与学期有明确的来源标记,本科独立认证和解析模块位于 mobile/lib/features/school/undergraduate/;以后新增学校需增加相应认证和课表/考试解析适配,再加入目录。

研究生学期73为2026-2027年秋、72为2025-2026年春、71为2025-2026年秋。课表路径为 /pyxx/pygl/xskbcx/index/{学期编号};考试路径为 /pyxx/pygl/kskcxx/index?xq={学期编号}。本科学期523为2026-2027第一学期,503为2025-2026第二学期,相邻学期编号相差20;考试路径为 /eams/stdExamTable!examTable.action?semester.id={编号}&examType.id={类型},类型1期末、2期中、3补考缓考。本科考试刷新沿用上次成功的学期及类型。「个人设置 → 更新学期」按所选学校进入相应流程。读取失败、取消或保存失败不改原数据。

研究生同源数据沿用原有跨学期更新规则;本科考试查询独立保存,不清空当前课表和学期开始日。更换课表来源或学期后需重新设置开始日,同学期刷新保留日期。课表页在已导入但未设置开始日时,显示课程数量及“设置学期开始日”入口,直接进入日期设置。页面标题分别为课表、考试、TPSchedule。

专用入口的原始302响应指向 HTTP 身份认证地址,携带研究生系统的 service 参数。应用将该身份认证地址转到 HTTPS 并完整保留参数。学校 HTTP 回调仅允许准确的研究生系统域名。读取或保存失败保留已有数据,可在学校认证页面重试。

真实账户认证及验证码仍需由本人操作验证;离线 HTML 与模拟回调测试不能代替真实账户联调。详见 学校接入状态。

考试安排

考试页右上角可从学校更新,或导入学校考试查询页保存的 HTML。查询路径由用户提供的导出页面确认。考试数据独立保存,同学期更新不覆盖课表,也不产生考试提醒。显示课程名称、考试时间、考场、座位号;有考核方式、考生编号或考场顺序号时一并显示。

提供的考试 HTML 含2026-2027秋学期8门课程,排考字段全部为空。当前显示“尚未安排”,不猜测考试时间和地点。未知或不完整表格拒绝导入;只有明确的无数据提示才接受空列表。原始附件与其中的学号、姓名不随源码或 APK 分发。

文件导入和设置

「个人设置 → 从文件导入」支持学校课表 .html / .htm 与版本1的 JSON,先预览再确认;考试文件从考试页导入。文件最多2MB,UTF-8编码;其中脚本不会执行。

HTML没有学期开始日,仍须在课表设置填写实际开始日和学期周数。离线文件只有保存时那个学期的数据,预览显示实际学期;其他学期通过学校在线查询获取。JSON 支持可选 schoolTerm: {"id": 73} 并兼容旧课表编号推断,不允许混合学校学期。默认课前15分钟提醒,可多选5/10/15/30/60分钟。启用通知和手机日历时按提示授权。JSON样例:schedule.schema-v1.json。示例课表不覆盖本人数据,不创建通知或日历事件。

0.4.0 修复点按滑块重复回弹及速度形变:点按平滑移动,拖动和按住时放大约30%,松手弹性回位。0.5.0让Dock底座和滑块呈现较通透的液态玻璃,加入实时边缘反光,降低模糊和灰色覆盖,让背景轮廓与色彩更清楚。支持的渲染方式组合折射与轻度高斯模糊,其他方式保留轻度背景模糊和玻璃亮边。详见 0.5.0验证记录。

开发

源码在 mobile/;工具在 .tools/,不提交到 Git。Android包名 com.tpschedule.app。内部Dart包名 hepan_everyday、数据格式和原生通道标识保持不变。构建继续使用原有签名文件。

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

仓库根目录运行 ./scripts/build-android.ps1 构建。验证记录:0.5.1启动闪烁修复、0.3.2蓝色图标修正、0.3.1自动读取与玻璃动画修正、0.3.0登录、考试和动画。Windows模拟器可仅在测试启动时使用软件渲染并关闭Impeller;交付APK保留手机默认渲染配置。历史验证:0.2.1、0.2.0、首版。

S
Description
利用Codex开发的个人课表软件
Readme
2.6 MiB
0.7.10版本
Latest
2026-10-30 11:35:55 +08:00
Languages
Dart 81.5%
Python 9.8%
Java 3.2%
Kotlin 2.7%
JavaScript 1.4%
Other 1.4%