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

47 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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。