feat(先修): 每课页首给出先修关系,并加静态绑定与浏览器复验 - #68
Merged
Merged
Conversation
零基础学习者从链接、收藏或老师发的地址直接落到第五阶段某一课时,看不出自己缺的是哪一课: 「先修关系」原本只存在于规划文档里,页面上看不到。现在 courseData 为每课登记 prerequisites (只写真正会用到的更早的课,不把路径上的上一课机械照抄,第一课为空),课程目录详情新增 「先修」栏并前移为第 01 节;40 课页面在 <h1> 正下方给出静态先修块:课号、课名、那一课要会的 一件事,另给「上一课」入口;第一课写明不用先修且不列任何链接。 先修块最初排在图例之后,用真实视口量过才发现不成立:手机竖屏(390×844)下 S5-08 掉到 1060px、整块落在首屏之外,笔记本 1440×900 下 788px 也几乎压到屏幕底部。这轮把它移到 <h1> 正下方(S5-08 由 1060px 降到 263px),并由测试锁住位置。 验证: - tests/prerequisite-path.test.ts(bun test,5 项):先修指向更早且真实存在的课、是作者挑的 而不是上一课的副本、页面文字与 courseData 一致、块紧贴 </h1>、第一课不给链接、首页详情 把先修排在「学习目标」之前并从 courseData 派生课名与「要会的那一件事」 - tests/e2e/prereq-cdp.ts(bun run e2e:prereq,新增):40 课 × 6 项 + 2 项检查器自检 = 242 项, 覆盖先修块整块落在首屏、文字与 courseData 一致、链接全部可达、只用 Tab 走得到且焦点环可见、 真实鼠标点击进得去那一课、手机竖屏同一块仍在首屏内;实跑 242/242(Chrome 153 无头) - 同期回归:bun test 790 通过 / 0 失败(65 文件),bun run e2e:keyboard 328/328, bun run e2e:flow 741/741 - tests/e2e-count-facts.test.ts 把清单与文档里的项数绑回脚本声明,脚本加检查而文档没跟上会失败 - tests/next-lesson.test.ts 的末课断言改为逐条核对课内链接真实存在(先修会合法地回指更早的课, 原来的「页面里不许出现 ../sN」替身会误伤) 文档:README、docs/course-plan.md、docs/feature-checklist.md、docs/roadmap.md(验收矩阵新增 「先修关系可见与可达」一行)、tests/e2e/manual-checklist.md 与新增的 tests/e2e/prereq-manual-checklist.md(复验记录、量测数据、仍需人工确认的部分)。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
为什么
规划里早写了「任何一节课都能在一分钟内看出它的先修关系」,但页面上看不到:
courseData只有目标、内容、检验清单,从链接、收藏或老师发的地址直接落到第五阶段某一课时,学习者看不出自己缺的是哪一课、缺的是哪一件事。做了什么
courseData每课新增prerequisites:只写真正会用到的更早的课,不把路径上的上一课机械照抄(第一课为空数组)。courseData派生。<h1>正下方给出静态先修块aside.prereq-note:课号、课名、那一课要会的一件事,另给「上一课」入口;第一课写明不用先修且不列任何链接。静态标记而非脚本生成,脚本报错也照样可见。顺带修掉的一处真实缺陷
先修块最初排在图例之后。用真实视口量过才发现它常常根本不在首屏:手机竖屏(390×844)下 S5-08 掉到 1060px、整块在屏幕之外;笔记本 1440×900 下 788px,末行 852px 几乎压到屏幕底部。把它移到
<h1>正下方后,S5-08 由 1060px 降到 263px,并有一条断言锁住位置。量测数据记在tests/e2e/prereq-manual-checklist.md。验证
bun testbun run e2e:prereq(新增)bun run e2e:keyboardbun run e2e:flowtests/prerequisite-path.test.ts(新增,bun test内):先修指向更早且真实存在的课、是作者挑的而不是上一课的副本、页面文字与courseData一致、块紧贴</h1>、第一课不给链接、首页详情把先修排在「学习目标」之前。tests/e2e/prereq-cdp.ts(新增):真实浏览器里验「学习者真的用得到它」——整块落在首屏、文字一致、链接全部可达、只用Tab走得到且焦点环可见、真实鼠标点击进得去那一课、手机竖屏同一块仍在首屏内。脚本自带两项检查器自检:临时插一条死链必须被抓到,然后页面必须还原。tests/e2e-count-facts.test.ts:清单与文档里的项数绑回脚本声明(checksPerLesson/selfChecks),脚本加检查而文档没跟上会当场失败。tests/next-lesson.test.ts:末课断言由「页面里不许出现../sN链接」改为逐条核对课内链接真实存在——先修会合法地回指更早的课,原来的替身会误伤。边界
只读导航,不涉及账号、不执行学习者代码、不涉及视频资产(
lesson.json本轮未改)。术语与解析口径未动,仍是「已通过校验」,没有写成「人工审校」。