网络学堂布局与课程快捷入口验收¶
历史记录 / Historical record:本文保留当时的计划、研究或验收证据,不代表 0.11 当前能力全集。现行说明见 文档入口;英文入口见 English overview。
日期:2026-10-20。使用隔离浏览器和示例课程数据;未登录学校账户,未请求学校接口。
问题与修改¶
- 右侧空白来自正文容器固定的 1160px 上限。本轮仅为网络学堂主列表解除上限,其他正文页保持原布局。
- 旧课程卡传入
style后被兼容组件增加外层容器,网格拉伸外层而卡片高度不齐;旧按钮兼容规则又覆盖了课程内容布局。新课程卡直接组合 OneGUICard、Btn和Tag,样式统一收进recipes/learn.css。 - 课程列宽使用
--og-grid-min-xl(320px)和auto-fill,保留长标题、教师及场地的完整换行。手机单列,顶部四个统计入口为 2×2。 - 网络学堂、雨课堂、未交、通知、文件均为独立按钮,0 项时也保留。课程主入口、收藏和各快捷入口没有嵌套按钮。
- 网络学堂快捷入口携带
courseId/courseTab;雨课堂携带extCourseId/extCourseName/courseTab。雨课堂新增作业、通知、文件聚合选项,保留全部内容及已有细分类。课程名称合并规则未变。
实际浏览器验证¶
node tools/learn-layout-browser-test.mjs 完整运行,自然退出码 0,共 366 项断言通过。
| 浏览器 | CSS 视口宽度 | DPR |
|---|---|---|
| Chromium、WebKit | 1920、900、780、390 | 1 |
| Chromium、WebKit | 1536 | 1.25 |
| Chromium、WebKit | 1280 | 1.5 |
每个组合检查课程数量、同名合并、不丢独立雨课堂、卡片等高、长文本无裁切、无横向溢出及旧样式移除。1280 宽度实际点击各来源与内容入口,并用 Enter、Space 验证键盘操作。390 宽度使用真实触摸输入,逐个验证入口。
未匹配的雨课堂放在列表最后,三个内容计数均为 0:滚动后验证按钮中心实际命中,触摸打开课程,并确认对应 OneGUI 分组选项真实选中。固定 OneShot 未遮挡这些入口。
首轮“点击后仍在课程列表”的失败来自测试夹具:页面加载了带 Vite 热更新参数的路由模块,测试却动态导入无参数路径,读到了第二份状态。可信点击事件和可见 DOM 已证明产品成功进入课程页。夹具现绑定页面实际加载的模块 URL,并同时断言活动路由和可见页面,没有放宽点击要求。
脚本另验证了三个错误配置:未知浏览器、空视口、明确指定但未安装的 WebKit,全部在启动浏览器前退出码 1,避免出现零项通过。
已人工查看最终桌面与手机截图:长课名、教师、场地完整,来源与计数排列整齐,最末课程入口可达。
其他检查与边界¶
- 桌面 TypeScript、OneGUI、UI 文案、CSS 结构检查通过。
- 雨课堂离线测试 134 项通过,包含全部内容、课程合并和快捷入口接线;过期的路由及已删除今日页路径断言已迁到现有模块。
- 完整
pnpm guard停在既有tools/icon-test.mjs对VaultItemIcon.tsx手写 SVG 的断言;这两个文件相对本轮基线f3ba4dd6均无差异,不能报告全套 guard 通过。后续检查已继续执行;白板的旧rectFromCell静态断言更新为保护原生坐标后通过,其余后续检查及最终类型检查通过。最终 OneGUI 检查与桌面生产构建均自然退出 0。 - 未在实体 Windows 或 Windows WebView2 宿主内验收。 本次 Chromium、WebKit 均运行于 macOS;不同 CSS 视口和 DPR 只能验证对应布局,不能替代 Windows 系统缩放或原生触摸测试。
- 示例数据不证明真实学校同步可用性;本轮没有改变学校 API、课程合并或作业同步逻辑。