Files
TPSchedule/docs/tpschedule-0.7.0-validation.md
T

6.4 KiB
Raw Permalink Blame History

TPSchedule 0.7.0+18:本科生接入验证

2026-10-15。工程位于F:/program/app,原应用名、包名com.tpschedule.app和签名保持。

实现

  • 学校列表新增电子科技大学(本科生),学校选择使用稳定标识保存;取消或保存失败不开始登录。
  • 本科课表在学校原网页登录、选择学期并打开课表后,点击「导入当前课表」。课表刷新和更新学期沿用手动流程。HTML/HTM离线导入也支持本科结构。
  • 本科考试选择一个学期、多选期末/期中/补考缓考,按类型1→2→3读取,全部成功才保存;失败、取消、超时保留旧数据。认证恢复时丢弃旧片段、整批重读。成功查询选项持久保存供刷新使用。
  • 523对应2026–2027第一学期,每相邻学期编号差20。考试学期独立保存,历史本科考试不改变当前课程、课表学期和开始日。
  • 本科12节,第12节22:00–22:45;研究生及示例11节。七天同屏,教师和教室完整显示,相同节数课程条等长;课程详情保留课程代码和备注。提醒和日历结束时间覆盖第12节。
  • 旧保存格式仍为schemaVersion1,新增字段兼容默认研究生;学校/学期损坏和本科第12节来源缺失拒绝保存或恢复。页面变动/取消时在保存队列内部再检查有效性,避免旧回调写入。
  • Android实际检查发现网页加载前的一次状态探测可能读到旧空白文档;已补回归并改为加载完成后探测,再重建发布和调试包。
  • 考试页“查询类型”与首张卡片增加16逻辑像素间隔。反馈问题和建议新增默认关闭的近10分钟日志附件,不占3个媒体附件名额。日志包含学校认证跳转、页面识别、读取/解析/保存和提醒状态,使用固定页面类别、错误类别及数字状态,不含密码、Cookie、原始地址、HTML、课程和反馈正文;重试冻结附件。重启时恢复仍在窗口内的记录,最多500条、256 KiB。

检查结果

  • 完整Flutter套件249项通过;flutter analyze无问题。研究生及本科两个Node页面捕获脚本测试通过。反馈服务54项测试通过,覆盖日志与3个媒体附件共存、无效/超大日志拒绝及幂等重试。
  • 原本科课表附件解析10门课程、18段上课安排,3段包含第12节;逐节逐周对照保留全部有效安排,停课周扣除。原考试附件4条属于503,外层默认523没有污染实际学期。仓库仅保存脱敏等价样例。
  • 核心回归覆盖人工登录等待超过120秒、单项45秒/整批120秒超时、最后一项失败、整批重新认证、关闭页面、过期回调、保存失败、旧研究生导入、来源损坏、第12节提醒/日历、换周动画、完整教师、课程条长度及慢启动。
  • Android16/API36模拟器覆盖安装后11条原课程仍在。随后通过安卓文件选择器导入脱敏本科HTML:预览18条、提示新学期开始日、设置2026-09-07后显示12行及22:00–22:45;多教师完整显示。历史503考试导入4条,课表523、18条课程及开始日保持;考试选项取消不改成功选项,重启保持学校与数据。
  • 发布包及调试包构建成功;包名com.tpschedule.app、versionName0.7.0、versionCode18。新旧证书逐字节相同,原私有签名文件摘要相同,登记冻结清单18项复核无变化。
  • 模拟器使用软件兼容图形模式;未修改安装包的默认手机渲染设置。既有SDK XML版本提示仍出现,构建成功。

交付与实际边界

发布APK:60024655字节,SHA256 591E3961399D788C56D12154AC02F3AEC6FDFFB178D1AFD6B47E41DA01918FB2。调试包、源码包及截图在dist中;保留TPSchedule-0.6.2.apk。

截图含学校列表、本科浏览器入口、考试选项、学期开始日提示、本科课表、12节及考试列表。真实本科账号、验证码、学校在线回调与自动查询尚未用本人账号验证;模拟器仅核对入口、离线数据与界面,不代表认证成功。需学生在学校原网页完成这部分验证,不要求在聊天中提供密码。

0.5.4登记冻结、V1.0材料和原签名保持。反馈服务新增可选日志字段,需要用户按 server/feedback/diagnostic-log-update.md 手动更新服务;原SMTP/域名/反代/密钥及数据卷保持,没有连接服务器或实发邮件。

玻璃偏移实验在Android软件兼容渲染下发现父图层平移后采样异常,尝试尚未验证通过;实验已撤回,本版保留既有玻璃实现,不能宣称玻璃偏移修复。后续原生模拟器进程退出,最后安装包只确认覆盖安装/冷启动成功,未把该次退出归因于真机APP崩溃。原本科文件导入流程的完整原生验证发生在先前构建,最终补充更改由249项测试、静态检查及重新构建覆盖。

日志使用有限的结构化记录,不等同于完整系统logcat。写入过程中若进程强制终止,上一段日志可能损坏而被跳过;当前没有保证进程崩溃时的持久性。

实现决策

  1. 保存接口增加可选页面有效性检查,并在串行保存队列内部执行;仅在界面检查会留下排队期间页面已变动的窗口。若误判会要求重新导入,原有调用保持兼容。
  2. 将无效可选考试类型的审查意见从Minor提高为Important:损坏字段会绕过恢复检查并导致考试页抛错。严格拒绝的代价是手工改坏的字段不能继续加载。
  3. 真实SSO和验证码保持待本人验证;不能用模拟网页断言在线成功,代价是学生仍需在真实学校系统验证。
  4. 按用户追加要求在本次加入考试间距和诊断反馈,原计划不新增服务端功能的范围由新请求扩展;代价是可选日志需要手动更新服务端,原无日志协议仍兼容。
  5. 玻璃实验未通过后保留原实现,代价是已报告的偏移仍待进一步修复。
  6. 签名、源码ZIP、冻结材料由执行者本地验证;审查者只看源码,代价是这些交付检查未由独立人员重复。

独立审查记录见 tpschedule-0.7.0-review.md;三项Important和一项升级后的Important全部有RED→GREEN回归。完成后新网页令待保存考试失效、研究生更新保留独立本科考试、未知活动写入拒绝整批、可选考试类型在模型层校验。新反馈功能另见 tpschedule-diagnostic-review.md,错误原因过于笼统和探测异常未记日志的P2已用登录诊断回归修复。没有延期的已分级Minor。