PracticeMate 用户故事
用户三角:练 – 评 – 教
PracticeMate 的用户不只是学生。产品围绕「练 – 评 – 教」三角构建,MVP 聚焦学生侧,但架构天然支持教师侧(通过全智评 Web)。
学生(端侧教练陪练)←→ events.jsonl ←→ 教师(全智评 Web 看班)
↓
云端考官(深度评分)Hero Story:医学生 CPR/BLS 练习
US-01: 作为学生,我想开一场「陪练会话」,在做 CPR/BLS 练习时有 AI 教练实时陪伴
场景:小明在做 CPR/BLS 心肺复苏练习,没有老师在旁边指导 当前:一个人练,犯错了也不知道,要等事后批改 期望:打开 App 选模板、点「开始练习」,AI 教练实时温和提醒 验收:
- 用户点的是「开始练习」不是「开始录像」
- 教练语气温和、可打断,不像报警器
- 按阶段陪伴(环境评估 → 胸外按压 → 气道通气 → 循环延续)
- 正向确认时给正面反馈(「双手位置正确,继续」)
- 开始练习前有 3 秒专注引导(深呼吸 + haptic + "进入急救状态")
US-02: 作为学生,我想开练前有机位引导,而不是自己猜手机怎么摆
场景:小明不知道手机该怎么放才能让 AI 看清楚 当前:放歪了 → 检测不准 → 体验差 期望:App 用 AR 框 / 示意图告诉我放在哪里最好 验收:
- 开练前 5 秒有机位引导
- 实时反馈画面质量(亮度 / 角度 / 是否拍到手)
- 质量不达标时降级为文字清单模式,不强制关闭
- 引导通过后自动开始练习
注:Camera Quality Gate 是独立可演示的创新点——即使脱离整体流程,单独作为「摄像头就绪检测」也有展示价值。
US-03: 作为学生,我想在练习时只收到当前阶段相关的提醒,不被无关弹窗打扰
场景:小明正在按压,App 突然提醒「记得确认环境安全」——这属于环境评估阶段的关注点 当前:全程监控所有信号,容易误报、分散注意力 期望:环境评估阶段关注现场安全与意识判断,胸外按压阶段关注手法与频率,气道通气阶段关注头部位置与通气量 验收:
- 明确的阶段切换提示(「进入胸外按压阶段」)
- 每阶段只检查 2-3 个信号
- 低置信的检测结果不弹窗
- 手动阶段切换按钮("进入下一阶段")始终可见,用户不被 AI 检测卡住
- 超时后教练主动询问("看起来你已经在操作了,要切换到下一阶段吗?")
US-04: 作为学生,我想练完后马上看到教练的即时复盘,不用等网络
场景:练习做完了,想立刻知道大概做得怎么样 当前:要上传等几十秒才有反馈 期望:点「结束练习」立刻看到按阶段的小结 验收:
- 端侧即时复盘(Instant Recap),不依赖网络(飞行模式也能用)
- Instant Recap 是规则聚合,不需要模型:按阶段汇总 ✓/△/✗,亮点优先展示
- 按阶段总结,正向优先(先列做对的,再列待改进)
- 教练语气(不评分,不打分数)
- 底部可选「申请专家评分」
US-05: 作为学生,我想在选择后才把数据上云做评分,而不是自动上传
场景:小明担心隐私,不想每次都把数据传到云端 当前:录完自动上传视频 期望:教练复盘后,由我决定是否「申请专家评分」 验收:
- 评分是可选操作,不是默认行为
- 明确告知「上传的是事实数据,不是视频」
- 设置页可查看已上传的数据
- 首次使用时展示隐私说明
US-06: 作为学生,我想收到专家级评分报告,有详细的分维度评语和改进建议
场景:小明想知道专家怎么看自己的操作,哪里好、哪里差 当前:老师批改粗糙,一周后才有反馈 期望:1-2 分钟收到多维评分,每个维度有具体评语,能回看视频对应片段 验收:
- 报告 < 2 分钟生成
- 按练习阶段分段评价
- 引用具体时间戳作证据
- 点击扣分项可跳转到本地视频对应时刻
- 考官语气(严谨、有证据)
US-07: 作为学生,我想在没有网络时也能得到教练陪伴
场景:练习室网络不好 当前:纯云方案直接不可用 期望:教练实时陪伴不依赖网络;专家评分等恢复网络后再获取 验收:
- 飞行模式下教练陪伴正常工作
- 恢复网络后可选择上传获取考官评分
延伸用户(路线图呈现,不进 demo)
US-08: 作为教师,我想在全智评 Web 端看全班的 AI 评分汇总
本仓库不实现:通过全智评已有的 Web 端,以 events.jsonl 为纽带连接学生端和教师端。
US-09: 作为教师,我想自定义练习的评分标准
Rubric 驱动:长期目标——教师上传/编辑 YAML Rubric,学生端自动获取新模板。
US-10: 作为其他领域的学习者,我想用同样的模式练习
同一架构可扩展到:化学实验(酸碱滴定)、生物实验(显微镜操作)、医学 OSCE、烹饪(烘焙步骤)。每个场景 = 一份 Rubric,无需改架构。路演时一句话带过即可。
新增用户故事
US-11: 作为学生,我想在开练前有 3 秒专注引导,帮我进入急救状态
场景:小明要做 CPR 练习但心还没定下来 当前:直接开始,没有心理过渡 期望:3 秒深呼吸 + haptic + "进入急救状态" 验收:
- 专注引导内容来自 Rubric 定义的 focus prompt
- 触觉反馈(haptic feedback)配合倒计时
- 记录 session_focus 事件到 events.jsonl
- 非强制——用户可以跳过(tap to skip)
US-12: 作为学生,我想快速切换练习模板,用同一个 App 练不同练习
场景:小明做完 CPR 想练 OSCE 洗手 当前:需要不同 App 期望:选模板 → 30 秒换好 → 同样的教练、不同的检测焦点 验收:
- Rubric YAML 热切换(hot-swap),无需重启 App
- 切换后 UI/UX 一致,教练人格不变
- 不同 Rubric 对应不同的 edge_signals 检测集
- 模板列表可从本地加载或云端同步
US-13: 作为学生,我想让教练坦诚告诉我它不确定的地方,而不是假装没看到
场景:教练检测到什么但不确定 当前:要么弹窗要么不弹,没有中间态 期望:"这里我不太确定,先记下来,练完再看" + "待考官确认"标记 验收:
- 低置信检测项标记"待考官确认"badge,不作为扣分依据
- 教练语气坦诚("我不太确定,先记下"而非静默忽略)
- 报告中标注 cloud_review_available,提示用户可申请专家复核
- 不干扰正在进行的练习操作
US-14: 作为学生,我想在 AI 没检测到阶段切换时手动推进,不被卡住
场景:AI 没检测到 hand_position,但小明已经开始胸外按压了 当前:卡在 scene_assessment 阶段 期望:大按钮"进入下一阶段" + 超时后教练询问 验收:
- 手动切换按钮("进入下一阶段")始终可见
- 超过 Rubric 定义的 estimated_minutes 后教练主动询问
- 事件记录 transition_source: manual | auto | timeout_prompt
- 手动切换不影响评分,仅作为数据标注
US-15: 作为学生,我想在练完后看到所有"不确定项"的清单,并能一键请考官裁定
场景:教练标记了 3 项"不确定",小明想知道具体是哪些 当前:低置信事件散落在 events 中,用户看不到 期望:Instant Recap 底部折叠区列出所有不确定项,可选择请考官裁定 验收:
- 不确定项按时间排序,显示时间戳 + 信号 + 教练备注
- 「一键请考官裁定」选中项随 events.jsonl 上传
- 考官报告中标注「已裁定:确认 / 推翻」
- 不确定项数量显示在 Summary Card 中
US-16: 作为学生,我想看到我在同一练习上的进步趋势
场景:小明做了 5 次 CPR 练习,想知道自己进步了多少 当前:每次练习是独立的,没有纵向对比 期望:看到跨 session 的成长曲线和趋势 验收:
- Summary Card 显示 journey 进度("第 5 次练习")
- 显示关键指标趋势(如"按压深度达标率 60% → 100%")
- Examiner Report 的 growth_indicators 引用多次 session 数据
US-17: 作为教师,我想通过扫码快速查看学生的练习摘要
场景:老师想看小明的练习情况但不想登录复杂系统 当前:没有轻量的教师查看入口 期望:扫学生 Summary Card 上的 QR 码,看到只读摘要 验收:
- QR 码 / 链接指向只读页面
- 页面展示:Recap 亮点 + 不确定项数 + journey 趋势
- 不含视频(隐私)
- 教师可添加文字批注