LLM 学习工作流(六):AI 教练入口暴露
这一步在做什么
这一步把前面已经存在的:
/coach路由AICoach页面 shellaiCoachstore
真正暴露到用户面前。
也就是说,它解决的不是"AI 教练页存不存在",而是:
用户能不能发现这个功能。
最终主要涉及:
src/views/Home.vuesrc/App.vuetests/ai-home-entry.test.js
为什么这一步重要
很多项目做 AI 功能时,会先把页面和接口做完,但入口没有设计好。
结果就是:
- 功能 technically 存在
- 用户却根本不会用到
所以 Task 6 的目标很直接:
- 首页要有 AI 教练入口
- 全局导航要有 AI 教练入口
- 未登录用户也要知道怎么进去
一开始做了什么
第一版提交是:
adfd0cbcfeat: expose ai coach entry in home and navigation
最初新增了两部分能力:
1. 首页入口
在 src/views/Home.vue 里加了:
- "AI 学习教练"入口卡片
- "今日 AI 计划摘要"区域
这让首页开始承担一个新的角色:
- 不只是普通词典入口
- 也是 AI 工作流入口页
2. 全局导航入口
在 src/App.vue 里加了 /coach:
- 桌面导航
- 移动端导航
这一步很基础,但很必要,因为:
- 首页入口负责引导第一次使用
- 导航入口负责持续回访
第一轮实现为什么不够
review 指出了两个核心问题。
问题 1:测试太弱
最初测试只断言:
assert.match(home, /to="\/coach"/)
assert.match(app, /to="\/coach"/)
这只能证明:
- 某个地方出现了
/coach
但并不能证明:
- 首页是不是区分了登录和未登录用户
- 导航是不是桌面端和移动端都接了
- 首页是不是有"今日 AI 计划摘要"
这类测试会带来一个风险:
- 代码表面看有入口
- 实际入口行为已经退化了
- 测试仍然会通过
问题 2:首页摘要把 dailyPlan 当成了普通字符串
这一步是更有代表性的工程问题。
当前 AI 计划并不是一个简单字符串,而是逐渐在向结构化对象收敛。
例如后面计划会包含:
sessionTitlegoalstasksrecommendedWords
如果首页摘要直接假设:
dailyPlan就是一段文字
那当真实结构化数据接进来时,首页就会显示错误内容,或者干脆显示 [object Object] 这种异常结果。
这说明:
入口页也必须尊重真实数据契约。
修正后做了什么
修正后的提交是:
1a55e94dfix: tighten ai coach entry coverage
1. 首页摘要逻辑变得更稳
在 src/views/Home.vue 里,摘要逻辑不再把 dailyPlan 当成普通字符串,而是按优先级取可展示字段:
sessionTitlefocussummarygoals[0]
如果这些都没有,再回退到中性占位文案。
这一步很值得学习,因为它体现了一个很重要的设计原则:
展示层要适配真实数据契约,而不是自己偷懒发明一个假契约。
2. 测试开始覆盖更真实的入口行为
修正后的 tests/ai-home-entry.test.js 会检查:
- 首页已登录
/coach入口 - 首页匿名
/auth?redirect=/coach入口 - "今日 AI 计划摘要"区域存在
App.vue桌面导航有 coachApp.vue移动导航也有 coach
虽然它仍是源码级断言,不是运行级断言,但已经比"只看有没有 /coach"强很多。
这一步真正学到什么
1. 功能存在不等于功能可达
页面、路由、API 都做完了,如果入口没暴露,用户还是用不到。
所以在产品层面,Task 6 实际上是在做:
discoverability
也就是"可发现性"。
2. 首页入口和全局导航是两种不同职责
首页入口负责:
- 首次引导
- 明确表达新能力
全局导航负责:
- 高频回访
- 形成稳定使用路径
两者不能互相替代。
3. 未登录路径要明确
如果一个功能需要登录,入口设计就不能只考虑:
- 登录用户点进去怎么样
还要考虑:
- 未登录用户点进去会发生什么
这一步的做法是:
- 首页直接给匿名用户
/auth?redirect=/coach
这样用户路径更清晰。
4. 入口页也要遵守数据契约
首页摘要虽然只是"展示一点点状态",但仍然需要尊重:
- AI 计划的真实结构
这意味着"入口页"不是可以随便硬编码的地方。
这一步最终做成了什么
首页层
首页现在有:
- 一个 AI 教练入口卡片
- 一个今日 AI 计划摘要区
- 登录用户和未登录用户不同入口路径
全局导航层
App.vue 现在有:
- 桌面端
/coach - 移动端
/coach
测试层
测试现在开始真正覆盖:
- 首页入口
- 匿名重定向路径
- 双导航入口
- 摘要区存在性
你可以自己复现什么
跑这一步的测试
node --test tests/ai-home-entry.test.js -v
跑全部测试
node --test tests/*.test.js
跑构建
npm run build
看这一步的提交演进
git log --oneline -3
你会看到:
adfd0cbc初始入口接入1a55e94d修摘要契约和入口测试覆盖
这一步你应该学会什么
- 为什么功能入口设计和功能实现本身一样重要
- 为什么首页入口和导航入口要同时存在
- 为什么匿名用户路径必须单独设计
- 为什么展示层不能偷懒破坏数据契约
- 为什么入口测试不能只看"有没有这个链接"
下一步会做什么
下一步是 Task 7:
- 把 AI 计划接入学习页
- 让
AICoach真正开始影响学习流 - 开始把"AI 计划"从页面壳子推进成真实用户流程的一部分
也就是说,接下来你会从:
用户能看到 AI 教练
进入到:
用户的学习流程真的开始被 AI 计划驱动