feat: deliver RSchedule service login exams and elastic glass navigation

This commit is contained in:
Codex
2026-10-13 17:06:50 +08:00
parent 9193fd8e43
commit 8f20a341c4
35 changed files with 1742 additions and 453 deletions
+34
View File
@@ -0,0 +1,34 @@
# RSchedule 0.3.0+4 验证记录
日期:2026-10-13。沿用原包名和调试签名,支持Android 7.0及以上。
## 改动
1. 专用研究生SSO入口,移除自绘账号密码表单及凭证注入。保持学校网页验证,返回研究生系统后查找课表并自动保存。
2. 修复学校专用入口的实际HTTP身份认证跳转:升级为HTTPS,保留研究生service参数。Android只为准确的研究生域名允许HTTP回调。
3. 新增考试查询和HTML导入,单独存储考试列表。真实附件8门课程,所有排考字段为空,显示“尚未安排”。
4. 应用名RSchedule;三个图标标签;切页短距离移动与淡入淡出,保留页面状态,没有页面横向切换手势。
5. 透明蓝色玻璃Dock;选中滑块按压放大、拖动拉伸、弹簧回弹。课表和考试页向下滚动隐藏,向上恢复。
6. 旧读取、旧网络错误、旧保存确认均校验当前会话。退出与新打开串行处理,清理失败在个人页显示并保留退出重试按钮。
## 自动验证
- 全套93项测试通过,包含两份实际学校HTML的本机可选验证;flutter analyze无问题。
- 回归覆盖:service重定向、HTTP身份认证升级、验证码期间等待、认证返回后读取、过期网络错误、退出与重开竞争、原生退出失败恢复、失败提示与重试按钮、旧保存确认不清除新草稿、残缺考试表拒绝导入。
- 七天同屏、老师和教室完整显示、等节数条长一致、长度设置保存、字体放大、Dock拖动与取消、页面横向手势不切页等原有检查继续通过。
## Android实测
- API36测试设备覆盖安装成功,显示RSchedule,versionName0.3.0/versionCode4。
- 已从系统文件选择器导入真实考试HTML:8门课程、2026-2027秋,无排考信息;重启后8条记录仍在,原11条课程安排和125%长度设置保留。
- 向下滚动后Dock图标从可访问界面中消失;向上滚动后三个图标恢复。点击可切换三页。
- 专用入口实际302响应已用HTTP客户端核对。安卓WebView成功显示学校原身份认证页面、账号/密码栏和登录按钮,未填写个人凭据。
- 截图位于dist/screenshots/rschedule-week.png、rschedule-exams.png、rschedule-school-login.png。
## 边界
真实本人账号、验证码、二次验证及登录后的真实自动导入未进行账号端到端验证;仅学校入口实测、真实HTML和会话回调测试已验证。请在手机上完成学校认证后检查导入结果。
玻璃视觉由Flutter背景模糊、透明渐变、双层高光边缘和弹簧形变实现,是参考视频的跨平台效果,不是苹果原生液态玻璃接口或物理折射实现。Windows模拟器测试时使用软件渲染并关闭Impeller,交付APK使用手机默认渲染。
原始HTML、视频、学号和姓名没有写入源码或安装包,个人数据仅用于本机附件验证。
+20 -12
View File
@@ -1,19 +1,27 @@
# 学校接入状态
# 学校接入状态 · RSchedule 0.3.0
0.2.0已实现提供的研究生课表HTML结构解析,入口为 https://yjsjy.uestc.edu.cn/pyxx/pygl/xskbcx/index/1,允许学校同路径下数字学期编号。保留HTTPS、域名、端口、登录表单检查;认证密码仍仅交给学校原有表单及加密逻辑,不保存到课表文件。
专用入口:https://yjsjy.uestc.edu.cn/pyxx/jzsso/login。
课表查询:https://yjsjy.uestc.edu.cn/pyxx/pygl/xskbcx/index/1。
考试查询:https://yjsjy.uestc.edu.cn/pyxx/pygl/kskcxx/index。
## 已验证
## 登录问题的原因与修复
- 提供的HTML:7门课程,11条每周安排;分散周次合并;多位老师和教室完整保留;晚上9–11节保留三节。
- 课表表格节次、星期列、课程记录、周次及单元格位置逐项校验。未知、部分损坏或空HTML拒绝导入,保留旧课表。
- `.html`/`.htm`与JSON文件都先预览再确认。离线HTML只记为文件来源,不修改学校认证状态。
- 正在读取的课表在导航或退出登录后失效,迟到的结果不能恢复登录状态或导入预览。
- 原始附件中的学号、脚本和其他个人信息未放入源码或安装包。自动化测试使用合成课表;原始附件仅作为本机可选验证输入。
旧版先打开课表或通用身份认证页面,缺少研究生系统专用 `service` 交接。2026-10-13直接核对学校入口HTTP响应,HTTPS专用入口302指向 `http://idas.uestc.edu.cn/authserver/login?service=http%3A%2F%2Fyjsjy.uestc.edu.cn%2Fpyxx%2Fjzsso%2Flogin`。安卓地址检查原先会拦截这一HTTP跳转。
## 仍需本人验证
现在从专用入口开始,把准确的HTTP身份认证入口升级为HTTPS,保留完整原始查询参数。移除自绘账号密码表单及JavaScript凭证注入,学生在学校WebView中完成认证和验证码。返回研究生系统且检测到其退出登录链接后自动查找目标页面;识别完整数据后保存。研究生域名的HTTP回调在Android网络配置中单独放行。其他HTTP身份认证地址不直接加载。
实时统一身份认证、验证码、二次验证及学校登录重定向尚未用本人账户实测。解析器已连接WebView读取流程,但不能据离线HTML宣称实时登录已验证。
导航、重新打开、退出会让旧读取失效。保存确认同时检查原页面版本和原草稿,旧结果不会删除新草稿或关闭新路由。退出操作与下一次打开串行交接,原生清理失败显示可恢复信息;迟到的网络错误必须匹配当前页面。
当前解析器支持已提供表格的明确周次范围及周次列表;未知单双周文字或新的页面结构拒绝导入。没有课程的页面不会被猜测为清空指令。
## 数据验证
HTML没有提供学期开始日,导入不会推测或改写学期日期;需要在设置填写真实日期和周数。
- 真实课表HTML:7门课程、11条每周安排;合并分散周次,保留全部老师、教室和晚上9–11节。
- 真实考试HTML:2026-2027秋学期8门课程,考核方式、考生编号、考场顺序号、考场、座位号、考试时间全部为空。目前只能读取课程列表,不能得出具体排考信息。
- 考试解析不保存页面里的学号、姓名。原始附件、视频和脚本不放进源码或APK;测试使用合成数据,真实附件仅作为本机可选验证输入。
- 不完整或未知表格拒绝导入;考试空列表需要明确无数据占位,课表空页面不作为清空指令。
- HTML文件导入不修改学校认证状态。课程和考试数据分开保存;升级兼容旧快照。
## 验证边界
没有使用本人账户填写密码、验证码或进行二次验证,因此不能宣称已完成真实账户端到端登录。已核对实际学校专用入口重定向,测试真实HTML识别以及会话回调、错误恢复和数据保存。
学校HTML不含学期开始日,需自行填写真实日期和周数;应用不会猜测或改写学期日期。后续学校表格发生变化时,未知结构会提示重试并保留已有数据。