Preserve courses with pending rooms and report precise graduate import errors
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# 0.7.10:无 HTML 导入日志排查
|
||||
|
||||
日期:2026-10-28。版本 0.7.10+36,Android 包名 com.tpschedule.app。
|
||||
|
||||
## 日志结论
|
||||
|
||||
两份日志均标记为 TPSchedule 0.7.8+26,而非刚完成的 0.7.9。
|
||||
|
||||
- TPSchedule-diagnostics.txt:2026-10-25 北京时间 09:08 左右,school=undergraduate。网页完整内容恢复已应用,随后课表读取反复返回 room_missing、activityNumber=15。可确认第 15 条 TaskActivity 的教室字符串为空,被原解析器当作整表错误拒绝。
|
||||
- TPSchedule-diagnostic5s.txt:2026-10-27 北京时间 09:02–09:03,school=graduate。认证后已自动访问课表,读到一个表格片段及学期 73;解析反复返回 UnsupportedSchoolLayout,最终 read_timeout。缺少 HTML 和细分原因码,无法判断究竟是字段、课程行、周次、表头还是空课表问题。不能把它归因于浏览器内核,也不能声称本轮已确定该同学的具体根因。
|
||||
|
||||
用户取消反馈中的学校选择:不增加选择步骤,继续依靠日志中的 school 标记。反馈界面、协议、服务器代码均不变。
|
||||
|
||||
## 修改
|
||||
|
||||
1. 本科课程的教室字符串为空时,保留全部课程、教师、周次和节次,显示“教室待定”,在课程备注中解释学校未提供教室。导入成功提示及既有导入预览会提醒用户。没有猜测实际教室,也没有跳过该课程;教师、课程标识、周次和节次异常继续拒绝整表,保留旧数据。
|
||||
2. 研究生解析取消纯数字课程号的额外限制,接受首位为字母/数字、其后为字母/数字/点/下划线/连字符的课程标识;相同严格结构下,空教室也明确标为待定。空教师、无效周次、错位节次、缺失单元格和空表仍拒绝。这些是已通过匿名样本验证的兼容修复,尚不能证明命中原研究生样本。
|
||||
3. 研究生拒绝原因细分为来源、大小、学期、表头、单元格、课程字段、周次、节次等常量原因码,并在适用时记录时段行号和星期列号。日志不包含课程名称、教师、教室、帐号、Cookie 或 HTML。
|
||||
4. 自动读取和手动读取保留原始解析错误。读取期限或轮询次数耗尽时,若当前页面曾有具体解析错误,则显示并记录该原因;不再一概写成查找/网络超时。错误按页面代次隔离,换页后不继承旧原因;成功解析后清除旧原因。
|
||||
|
||||
## 验证
|
||||
|
||||
- 原始匿名复现有 4 项失败,分别为空教室、研究生代码/空教室、具体原因、错误被超时覆盖;修复后通过。
|
||||
- Flutter 全量 337 项测试通过,静态分析无问题,正式 APK 构建通过;独立审查无需要修复的缺陷。
|
||||
- 对比缺教室前后的全部 courseCode/teacher/weekday/period/week 集合,确认没有丢课、少周或少节。
|
||||
- 本科导入界面的模拟流程验证课程入库及“部分课程教室待定”提示。
|
||||
- 模拟 45 秒读取期限后仍保留 weeks_invalid;新页面不沿用旧周次错误;诊断不含课程值。
|
||||
- 既有学校来源校验、学期隔离、失效页面保护、未知布局不清空旧课表及反馈功能测试保持通过。
|
||||
|
||||
本轮没有失败同学的 HTML,也未使用他们的帐号复测。请让同学先安装本修复版重试;研究生若仍失败,需新日志中的细分代码,最好自愿附带脱敏学校 HTML,才能继续定位实际页面差异。
|
||||
|
||||
## 交付与发布
|
||||
|
||||
TPSchedule-0.7.10.apk,同签名覆盖安装,构建号 36。原公钥、私钥、备案号和 0.5.4 的 18 项登记冻结材料保持,旧 APK/源码保持。
|
||||
|
||||
服务器无需更新。更新后台发布版本 0.7.10、构建号 36,下载链接使用上传后实际可访问的 HTTPS 地址;本地未执行线上发布。
|
||||
Reference in New Issue
Block a user