Implement live analysis achievements and admin console

这个提交包含在:
cryptocommuniums-afk
2026-03-15 01:39:34 +08:00
父节点 d1b6603061
当前提交 edc66ea5bc
修改 23 个文件,包含 4033 行新增1022 行删除

查看文件

@@ -1,6 +1,6 @@
# Tennis Training Hub
网球训练管理与分析应用,提供训练计划、姿势分析、实时摄像头分析、在线视频录制与视频库管理。当前版本在媒体服务之外新增数据库驱动的后台任务系统,用于承接训练计划生成、动作纠正、多模态分析录制归档这类高延迟任务。
网球训练管理与分析应用,提供训练计划、姿势分析、实时摄像头分析、在线视频录制、成就系统、管理员工作台与视频库管理。当前版本在媒体服务之外新增数据库驱动的后台任务系统,用于承接训练计划生成、动作纠正、多模态分析录制归档与每日 NTRP 刷新这类高延迟任务。
## Architecture
@@ -11,6 +11,16 @@
- `docker-compose.yml`: 单机部署编排
- `deploy/nginx.te.hao.work.conf`: `te.hao.work` 的宿主机 nginx 入口配置
## Realtime Analysis
实时分析页现在采用“识别 + 录制 + 落库”一体化流程:
- 浏览器端基于 MediaPipe Pose 自动识别 `forehand / backhand / serve / volley / overhead / slice / lob / unknown`
- 连续同类动作会自动合并为片段,最长单段不超过 10 秒
- 停止分析后会自动保存动作区间、评分维度、反馈摘要和可选本地录制视频
- 实时分析结果会自动回写训练记录、日训练聚合、成就进度与 NTRP 评分链路
- 移动端支持竖屏最大化预览,主要操作按钮固定在侧边
## Online Recording
在线录制模块采用双链路设计:
@@ -32,10 +42,12 @@
- `analysis_corrections`
- `pose_correction_multimodal`
- `media_finalize`
- `ntrp_refresh_user`
- `ntrp_refresh_all`
前端提供全局任务中心,页面本地也会显示任务提交、执行中、完成或失败状态。训练页、分析页和录制页都可以在用户离开页面后继续完成后台任务。
另外提供独立日志页 `/logs`,用于查看后台任务历史、失败原因与通知记录。
另外提供独立日志页 `/logs`,用于查看后台任务历史、失败原因与通知记录;管理员工作台 `/admin` 可集中查看用户、后台任务、实时分析会话、应用设置和审计日志
## Multimodal LLM
@@ -46,6 +58,7 @@
- 系统内置“视觉标准图库”页面 `/vision-lab`,可把公网网球参考图入库并保存每次识别结果
- `ADMIN_USERNAMES` 可指定哪些用户名账号拥有 admin 视角,例如 `H1`
- 用户名登录支持直接进入系统;仅首次创建新用户时需要填写 `REGISTRATION_INVITE_CODE`
- 新用户首次登录时只需提交一次用户名;若用户名不存在才需要额外填写邀请码
## Quick Start
@@ -54,6 +67,7 @@
```bash
pnpm install
cp .env.example .env
set -a && source .env && set +a && pnpm exec drizzle-kit migrate
pnpm dev
```
@@ -89,6 +103,12 @@ go build ./...
pnpm exec playwright install chromium
```
若本地数据库是空库或刚新增了 schema,先执行
```bash
set -a && source .env && set +a && pnpm exec drizzle-kit migrate
```
## Production Deployment
单机部署推荐:
@@ -149,3 +169,4 @@ pnpm test:llm -- "你好,做个自我介绍"
- 浏览器兼容目标以 Chrome 为主
- 录制文件优先产出 WebM,MP4 为服务端可选归档产物
- 存储策略当前为本地卷优先,适合单机 Compose 部署
- 浏览器测试会启动真实 Node 服务,因此要求本地测试库已完成 Drizzle 迁移