chore: record session journal - 握力环训练趣味化

This commit is contained in:
2026-05-27 16:53:33 +08:00
parent 261f8315de
commit b9d2541b32
946 changed files with 107438 additions and 0 deletions
@@ -0,0 +1,117 @@
# 握力环训练趣味化:捏碎特效 + 卡路里统计
## Goal
为握力环训练增加趣味性和成就感,通过视觉特效(捏碎物品)和数据反馈(卡路里消耗)提升用户训练动力。
## What I already know
**当前握力环训练实现:**
- 基础动画:绿色圆环缩放(scale 1 → 0.65
- 训练流程:开始 → 训练中(显示组数/次数)→ 休息 → 完成
- 配置:80 BPM,4组×20次,45秒休息
- 节拍器同步:跟随 BPM 播放音效
**用户需求:**
1. **捏碎特效**:完成几次后触发特效(如捏碎鸡蛋)
2. **卡路里统计**:训练完成后显示消耗卡路里 + 食物对比
**技术约束:**
- 使用 uni-app + Vue 3
- 动画可用 CSS 或 Canvas
- 需要保持 60fps 流畅度
## Assumptions (temporary)
- 捏碎特效每完成 N 次触发一次(N 待定)
- 卡路里计算基于握力环训练的标准公式
- 食物对比使用常见食物(如苹果、鸡蛋、米饭等)
## Open Questions
1. ~~**捏碎特效触发频率**~~:✅ 随机触发(平均每 8-12 次)
2. ~~**捏碎物品种类**~~:✅ 4 种物品(鸡蛋🥚、核桃🥜、易拉罐🥫、气球🎈)
3. ~~**特效实现方式**~~:✅ Canvas 粒子动画(叠加层 + 物理模拟)
4. ~~**卡路里计算公式**~~:✅ 标准 MET 公式(默认 60kg 体重)
5. ~~**食物对比展示**~~:✅ 自动匹配最接近的食物(5 种备选)
6. ~~**用户体重获取**~~:✅ 使用默认值 60kg(暂不支持自定义)
## Requirements (evolving)
### 1. 捏碎特效
- [ ] 随机触发(平均每 8-12 次触发一次)
- [ ] 4 种可捏碎物品:鸡蛋🥚、核桃🥜、易拉罐🥫、气球🎈
- [ ] 随机选择物品(增加惊喜感)
- [ ] 特效流畅(60fps
- [ ] 配合 MiMo TTS 语音鼓励("加油"、"太棒了"等)
- [ ] 无需指导视频(用户跟节拍器节奏训练)
### 2. 卡路里统计
- [ ] 使用标准 MET 公式计算卡路里消耗
- 公式:`卡路里 = 3.5 × 60(kg) × 运动时长(小时)`
- 默认体重 60kg80 次训练 ≈ 3.5 kcal
- [ ] 训练完成后显示消耗卡路里
- [ ] 自动匹配最接近的食物对比
- 5 种备选:苹果🍎、鸡蛋🥚、巧克力🍫、香蕉🍌、米饭🍚
- 显示格式:"相当于 X/Y 个{食物}"
- [ ] 暂不支持自定义体重(未来可扩展)
### 3. 完成页面优化
- [ ] 显示训练总结(组数、次数、时长、卡路里)
- [ ] 成就感反馈(如"太棒了!💪")
- [ ] 分享功能(可选)
## Acceptance Criteria
- [ ] 捏碎特效随机触发(平均每 8-12 次)
- [ ] 4 种捏碎物品随机出现(鸡蛋/核桃/易拉罐/气球)
- [ ] 粒子动画流畅(60fps
- [ ] 卡路里计算准确(基于标准 MET 公式)
- [ ] 食物对比自动匹配最接近的食物
- [ ] 完成页面显示训练总结(组数、次数、时长、卡路里、食物对比)
- [ ] 动画无卡顿,特效与握力环动画同步
## Definition of Done
- 代码实现完成并测试通过
- 动画性能达标(60fps
- UI/UX 符合设计规范
- 无明显 bug
## Out of Scope (explicit)
- 训练数据持久化(本地存储/云端同步)
- 社交分享功能
- 多人排行榜
- 自定义用户体重(未来可扩展)
- 累计卡路里统计(本版本仅显示单次)
- 其他器械的趣味化(本任务仅限握力环)
## Research References
* [`research/calorie-calculation.md`](research/calorie-calculation.md) — 握力环训练卡路里计算公式与食物对比方案
## Technical Notes
**相关文件:**
- `TUICallKit-Vue3/training/pages/index.vue` - 主训练页面
- `TUICallKit-Vue3/training/pages/components/exercise-anim.vue` - 动画组件
- `TUICallKit-Vue3/training/pages/exercises.ts` - 训练配置
- `TUICallKit-Vue3/training/hooks/useTrainingSession.ts` - 训练流程管理
**握力环当前动画:**
- 绿色圆环(240rpx+ emoji 图标(🟢)
- CSS scale 动画:1 → 0.65 → 1
**Canvas 粒子特效方案:**
- 透明 Canvas 叠加在握力环上方
- 在 scale 0.65 峰值时触发粒子爆炸
- 粒子系统:20 个粒子,径向扩散 + 重力 + 衰减
- 物品配置:4 种(鸡蛋/核桃/易拉罐/气球),不同颜色
- 参考 `walker-canvas.vue` 的冲击波实现
**卡路里计算方案:**
- 标准 MET 公式:`卡路里 = 3.5 × 体重(kg) × 时长(小时)`
- 详细研究报告:[`research/calorie-calculation.md`](research/calorie-calculation.md)
- 典型消耗:60kg 用户,80 次 ≈ 3.5 kcal
- 食物对比库:苹果🍎、鸡蛋🥚、巧克力🍫、香蕉🍌、米饭🍚