feat: select school terms and smooth refractive Dock motion

This commit is contained in:
Codex
2026-10-13 19:08:36 +08:00
parent 3e2d8864af
commit 50fcc70e8e
33 changed files with 1245 additions and 94 deletions
+34
View File
@@ -0,0 +1,34 @@
# RSchedule Android 0.4.0+7 验证
日期:2026-10-13。沿用 Android 包名与签名,可覆盖安装;最低 Android 7 / API24。
## 修改与原因
- 点按 Dock 原先在选择回调及父组件更新各启动一次回弹,还将移动速度用于形变。现在点按采用单次320ms平滑移动,拖动松手保留弹性;只有已选滑块按住时放大,宽高增幅约30%。灰色静止玻璃、蓝色实心图标保留。
- 底座和滑块各自采用独立实时背景折射滤镜;不支持的渲染方式使用兼容玻璃效果。
- 课表页右上角刷新与考试更新共用本机保存的 SchoolTerm。首次在线导入先认证,再选择学期;已连接的“更新学期”立即显示选择,未连接时先认证。
- 学期编号73为2026-2027年秋,72为2025-2026年春,71为2025-2026年秋。课表使用路径编号,考试使用xq查询参数;认证后自动跳转目标。实际HTML选中学期不符时拒绝保存。网址目标判断同时比较xq,避免默认考试页阻止跳转。
- 成功导入另一学期会清除另一个页面的旧学期数据和旧教学开始日;同学期刷新保留。选择确认后仅发出请求,读取和首次写入成功后才持久化,取消或失败不替换旧数据。
- 学校学期与教学日期独立保存。HTML及JSON导入带入实际学期,JSON兼容旧学校课程编号;拒绝混合学期。旧保存文件可从学校课程编号/考试termId恢复学期。
- 课表页标题为课表、考试页为考试并保留考试安排标题;个人页保持RSchedule。缺少开始日时显示已保存课程数量和设置按钮,按钮定位学期日期区域。
- 离线HTML只包含保存时的学期,确认页明确说明;查询其他学期使用在线连接。
## 自动验证
- 完整 Flutter 测试130项通过,含原始课表/考试附件解析。附件仅由本机环境变量提供,不加入源码或APK。
- 静态分析:No issues found。
- 精确生产WebView脚本的Node测试通过:身份认证证据、活跃下拉选项、受信源、内嵌表格与排除密码页,并检查学期选项。
- 新回归覆盖逐帧点按位置单调且不改变尺寸、未选图标按住不放大、选中滑块放大超过25%、底座与滑块两个折射表面、减弱动画、学期路径及查询编号、持久化、旧数据升级、同学期刷新、跨学期隔离、写入失败、选择前不导入、认证后选择、取消、HTML学期不一致与考试默认页跳转。
- Android debug构建成功。APK显示versionName0.4.0/versionCode7,minSdk24/targetSdk36。
## 安卓实际检查
API36 Pixel7模拟器成功覆盖安装,原11条课程、8条考试和课程条长度设置保留。课表七列、课表与考试标题、刷新按钮、个人设置更新学期入口已查看。暂时将模拟器测试数据的开始日清空,查看首页提示并点击直接进入日期设置,随后恢复备份。较长拖动时拍到明显放大、变透明的滑块。
截图在dist/screenshots:rschedule-week.png、rschedule-exams.png、rschedule-profile.png、rschedule-start-date.png、rschedule-date-settings.png、rschedule-dock-held.png。截图中教学日期是验证用日期,不代表学校实际开学日期,也不预置到交付包。
本机模拟器GPU驱动限制仍存在,检查时仅以启动参数启用软件渲染并关闭Impeller,交付APK保留手机默认渲染配置。实时折射算法继续通过实际图像像素测试;本次模拟器截图展示兼容玻璃效果,不能作为手机GPU折射验证。
未获取用户真实登录凭据,因此未完成真实学生SSO/验证码及多学期在线查询的端到端验证;这部分仍需用户本人手机测试。
APK SHA256:A1B581A4FC8B286BA5AE22A1383701C2D762FD0AC6BCAEFF0249BD11518C655D。
@@ -0,0 +1,12 @@
# RSchedule 学期导入与 Dock 修订
依据用户明确提出的现有功能修改,继续本地 master 的交付流程。
1. 独立修复 Dock 点按重复动画与速度形变;拖动保留弹性、加大光学镜片,底座也使用独立折射滤镜。用逐帧位置、快速切换、拖动尺寸及减弱动态效果测试验证。
2. 增加 SchoolTerm(学校学期编号、名称、两个查询地址),作为本机保存的可选字段,兼容旧保存文件。学校 HTML 导入携带实际选中学期,考试导入使用 termId。
3. 第一次连接或更新学期:先完成官方网页身份认证,再选择学期并跳转指定地址;已连接可立即选择。刷新复用已保存学期,读取结果必须匹配目标学期。
4. 成功导入其他学期时清除旧学期另一类数据及开始日;失败保留原数据。同学期刷新保留日期。重新协调课程通知和手机日历。
5. 课表页增加刷新和已导入但缺日期的提示/设置按钮;标题改为课表/考试,个人页保留 RSchedule 并增加更新学期。
6. 测试模型持久化、旧文件兼容、切换学期隔离、保存失败、WebView 选择/刷新/过期认证及页面提示。运行完整测试、静态分析与 Android 构建,检查原生画面,更新 APK、源码和验证记录。
离线 HTML 只有保存时那个学期的数据,确认导入时说明其实际学期;其他学期必须通过学校在线查询获取,避免给原有数据改标签。