236 行
8.8 KiB
Markdown
236 行
8.8 KiB
Markdown
# Tennis Training Hub - 变更日志
|
||
|
||
## 2026.03.16-live-camera-multidevice-viewer (2026-03-16)
|
||
|
||
### 功能更新
|
||
|
||
- `/live-camera` 新增同账号多端 runtime 锁;一个设备开始实时分析后,其他设备不能再次启动摄像头或分析
|
||
- 其他设备会自动进入“同步观看模式”,可查看持有端同步推送的实时画面、当前动作、评分、反馈和最近动作片段
|
||
- 同步观看复用 media 服务新增的 `/viewer-signal` WebRTC 通道,直接订阅“原视频 + 骨架 + 关键点 + 虚拟形象”的合成画面
|
||
- runtime 心跳按 `sid` 维度识别持有端,兼容旧 token 缺失可选字段的情况;超过 15 秒无心跳会自动释放陈旧锁
|
||
- `/live-camera` 前端新增 owner / viewer 双模式切换,观看端会禁用镜头切换、重新校准、质量调整和分析启动
|
||
- e2e mock 新增 viewer 模式和 runtime 接口覆盖,保证浏览器测试可以直接验证多端互斥与同步观看
|
||
|
||
### 测试
|
||
|
||
- `pnpm check`
|
||
- `pnpm exec vitest run server/features.test.ts`
|
||
- `go test ./...`
|
||
- `go build ./...`
|
||
- `pnpm build`
|
||
- `pnpm exec playwright test tests/e2e/app.spec.ts --grep "live camera"`
|
||
- `pnpm exec playwright test tests/e2e/app.spec.ts --grep "recorder flow archives a session and exposes it in videos"`
|
||
- `curl -I https://te.hao.work/live-camera`
|
||
|
||
### 线上 smoke
|
||
|
||
- `https://te.hao.work/live-camera` 当前公开站点仍在旧前端构建
|
||
- 当前线上资源 revision:`assets/index-BWEXNszf.js`、`assets/index-BL6GQzUF.css`
|
||
- 本地本次构建产物 revision:`assets/index-BmsO49OJ.js`
|
||
|
||
### 仓库版本
|
||
|
||
- `f0bbe4c`
|
||
|
||
## 2026.03.16-live-analysis-overlay-archive (2026-03-16)
|
||
|
||
### 功能更新
|
||
|
||
- `/live-camera` 新增 10 个免费动物虚拟形象,可将主体实时替换为猩猩、猴子、狗、猪、猫、狐狸、熊猫、狮子、老虎、兔子
|
||
- `/live-camera` 再新增 4 个免费的全身 3D Avatar 示例,可直接覆盖人物轮廓,并提供对应的 CC0 模型源链接
|
||
- `/live-camera` 新增实时分析自动录像,按 60 秒自动切段归档;归档视频写入视频库并标记为“实时分析”
|
||
- 实时分析录像改为录制“视频画面 + 骨架线 + 关键点 + 虚拟形象覆盖”的合成画布,回放中可直接看到分析叠层
|
||
- 实时分析记录与视频库解耦,用户删除视频库中的“实时分析”录像后,不会删除已保存的分析数据和训练记录
|
||
- 增加形象别名输入,当前可按输入内容自动映射到内置形象
|
||
- 实时分析动作稳定器从短窗口切换为 24 帧时间窗口,降低 1-2 秒内频繁跳动作的问题
|
||
- 动作切换新增确认阶段与延迟入库逻辑,连续动作区间改为只按稳定动作聚合
|
||
- 画面内新增稳定动作、原始候选、窗口占比、切换确认状态等实时状态提示
|
||
- 实时分析会话保存新增稳定窗口、动作切换次数、原始波动率、虚拟形象状态等指标
|
||
- 动物头像素材切换为本地集成的免费 Twemoji SVG,避免外链依赖
|
||
- 新增 Open Source Avatars 的本地优化透明 WebP 全身素材,减少全身替身叠加时的页面流量和首帧加载时间
|
||
|
||
### 测试
|
||
|
||
- `pnpm check`
|
||
- `pnpm test`
|
||
- `pnpm build`
|
||
- `pnpm test:e2e`
|
||
- Playwright 线上 smoke:
|
||
- `https://te.hao.work/live-camera` 真实登录 `H1` 后可完成引导、启用摄像头、开始分析、结束分析
|
||
- `https://te.hao.work/videos` 可见“实时分析”录像条目
|
||
- `https://te.hao.work/changelog` 已展示 `2026.03.16-live-analysis-overlay-archive` 条目与对应摘要
|
||
- 最终线上资源 revision:`assets/index-BWEXNszf.js` 与 `assets/index-BL6GQzUF.css`
|
||
|
||
### 仓库版本
|
||
|
||
- `4fb2d09`
|
||
|
||
## 2026.03.15-live-analysis-leave-hint (2026-03-15)
|
||
|
||
### 功能更新
|
||
|
||
- 实时分析进行中显示“不要关闭浏览器或切走页面”提示
|
||
- 点击“结束分析”后,保存阶段显示“请暂时停留当前页面”提示
|
||
- 保存完成后明确提示“现在可以关闭浏览器或切换到其他页面”
|
||
- 分析中和保存中增加离开页面提醒,减少误关导致的数据丢失
|
||
|
||
### 测试
|
||
|
||
- `pnpm check`
|
||
- `pnpm build`
|
||
|
||
### 仓库版本
|
||
|
||
- `5c2dcf2`
|
||
|
||
## 2026.03.15-training-generator-collapse (2026-03-15)
|
||
|
||
### 功能更新
|
||
|
||
- 训练页右侧“重新生成计划”面板在桌面端默认折叠到右侧
|
||
- 点击右侧折叠栏后展开完整生成器,可调整周期并重新生成计划
|
||
- 移动端继续保持完整面板直接可见
|
||
- 未生成计划时点击“前往生成训练计划”会先自动展开,再滚动到面板位置
|
||
|
||
### 测试
|
||
|
||
- `pnpm check`
|
||
- `pnpm build`
|
||
|
||
### 仓库版本
|
||
|
||
- `1ce94f6`
|
||
|
||
## 2026.03.15-progress-time-actions (2026-03-15)
|
||
|
||
### 功能更新
|
||
|
||
- 最近训练记录摘要行默认显示到秒的具体时间,统一按 `Asia/Shanghai` 展示
|
||
- 录制类训练记录在列表中直接显示动作数、主动作和前 3 个动作统计
|
||
- 训练记录展开态中的动作明细改为中文动作标签,便于直接阅读
|
||
- 提醒页通知时间统一切换为 `Asia/Shanghai`
|
||
|
||
### 测试
|
||
|
||
- `pnpm check`
|
||
- `pnpm build`
|
||
|
||
### 仓库版本
|
||
|
||
- `71caf0d`
|
||
|
||
## 2026.03.15-session-changelog (2026-03-15)
|
||
|
||
### 功能更新
|
||
|
||
- 用户名登录生成独立 `sid`,同一账号在多个设备或浏览器上下文中登录时不再互相顶掉 session
|
||
- 新增应用内更新日志页面 `/changelog`,展示版本号、发布日期、仓库版本和测试记录
|
||
- 训练进度页最近训练记录支持展开,展示具体上海时间、动作数、主动作、动作明细、录制有效性和备注
|
||
- 录制页补齐动作抽样摘要、无效录制标记与 media 预归档状态的前端展示
|
||
- Dashboard、任务中心、管理台、训练页、评分页、日志页、视觉测试页、视频库等高频页面统一使用 `Asia/Shanghai` 时间显示
|
||
|
||
### 测试
|
||
|
||
- `pnpm check`
|
||
- `pnpm test`
|
||
- `pnpm test:go`
|
||
- `pnpm build`
|
||
- Playwright 线上 smoke:
|
||
- `https://te.hao.work/` 使用两个浏览器上下文分别登录 `H1`,两端 dashboard 均保持有效
|
||
- 当前线上 `/changelog` 仍返回旧前端构建,待部署最新版本后需要复测该页面
|
||
|
||
### 仓库版本
|
||
|
||
- `a9ea94f`
|
||
|
||
## v3.0.0 (2026-03-14)
|
||
|
||
### 新增功能
|
||
|
||
- **训练视频教程库**:分类浏览(正手/反手/发球/截击/脚步/体能),含要点说明和常见错误
|
||
- **教程自评系统**:星级自评、学习笔记、已学标记、学习进度追踪
|
||
- **训练提醒通知**:支持训练/打卡/分析多类型提醒,自定义时间和重复日期
|
||
- **浏览器通知推送**:Notification API集成,权限管理和状态提示
|
||
- **通知记录管理**:未读计数、全部标记已读、历史记录浏览
|
||
- **文案调整**:去除冗余描述,简化为直接信息反馈
|
||
|
||
### 数据库变更
|
||
|
||
- 新增 `tutorial_videos` 表(教程视频库)
|
||
- 新增 `tutorial_progress` 表(学习进度追踪)
|
||
- 新增 `training_reminders` 表(训练提醒设置)
|
||
- 新增 `notification_log` 表(通知记录)
|
||
|
||
### 测试
|
||
|
||
- 测试用例从47个增加到65个
|
||
- 新增教程库、提醒、通知相关测试
|
||
|
||
---
|
||
|
||
## v2.0.0 (2026-03-14)
|
||
|
||
### 新增功能
|
||
|
||
- **社区排行榜**:支持按NTRP评分、训练时长、训练次数、击球数四种维度排名
|
||
- **每日打卡系统**:日历视图展示打卡记录,自动计算连续打卡天数
|
||
- **成就徽章系统**:24种成就徽章,涵盖里程碑、训练、连续打卡、视频、分析、评分6个类别
|
||
- **实时摄像头分析**:支持手机/电脑摄像头实时捕捉和MediaPipe姿势分析
|
||
- **摄像头位置确认提示**:引导用户调整摄像头位置
|
||
- **在线录制系统**:稳定压缩流录制,自适应码率1-2.5Mbps
|
||
- **断线自动重连**:摄像头意外断开时自动检测并重新连接
|
||
- **自动剪辑功能**:基于运动检测自动标记关键时刻
|
||
- **移动端适配**:安全区域、触摸优化、横屏支持
|
||
- **手机摄像头优化**:前后摄像头切换、自适应分辨率
|
||
|
||
### 数据库变更
|
||
|
||
- 新增 `daily_checkins` 表
|
||
- 新增 `user_badges` 表
|
||
- `users` 表新增 `currentStreak`、`longestStreak`、`totalShots` 字段
|
||
|
||
### 测试
|
||
|
||
- 测试用例从15个增加到47个
|
||
- 新增打卡、徽章、排行榜相关测试
|
||
|
||
### 文档
|
||
|
||
- 新增 README.md
|
||
- 新增API接口文档
|
||
- 新增数据库设计文档
|
||
- 新增功能列表清单
|
||
- 新增代码规范文档
|
||
- 新增变更日志
|
||
|
||
---
|
||
|
||
## v1.0.0 (2026-03-14)
|
||
|
||
### 初始版本
|
||
|
||
- 用户名简单登录系统
|
||
- AI训练计划生成(初/中/高级)
|
||
- 视频上传功能(webm/mp4)
|
||
- MediaPipe浏览器端姿势识别
|
||
- 姿势矫正建议系统(AI生成)
|
||
- 训练计划自动调整
|
||
- NTRP自动评分系统(五维度加权)
|
||
- 训练进度追踪(可视化图表)
|
||
- 视频库管理
|
||
- 击球次数统计
|
||
- 挥拍速度估算
|
||
- 运动轨迹可视化
|
||
- 帧级别关键时刻标注
|
||
- 球员统计面板
|
||
|
||
### 数据库
|
||
|
||
- 初始9张表设计
|
||
- Drizzle ORM集成
|
||
- 3次数据库迁移
|
||
|
||
### 测试
|
||
|
||
- 15个核心功能测试
|