文件
tennis-training-hub/docs/verified-features.md
2026-03-15 14:17:59 +08:00

8.5 KiB
原始文件 Blame 文件历史

Verified Features

本文档记录当前已经通过自动化验证或构建验证的项目。更新时间2026-03-15 11:58 CST。

最新完整验证记录

  • 通过命令:pnpm verify
  • 验证时间2026-03-15 07:58 - 08:14 CST
  • 结果摘要:pnpm checkpnpm test104/104pnpm test:gopnpm buildpnpm test:e2e7/7pnpm test:llm 全部通过
  • 数据库状态:已执行 set -a && source .env && set +a && pnpm exec drizzle-kit migrate0010_remove_non_tennis_tutorials 已成功应用

生产部署联测

项目 验证方式 状态
https://te.hao.work/ HTTPS 访问 curl -I https://te.hao.work/ 通过
https://te.hao.work/checkin 成就系统路由 Playwright 登录后检查“成就系统” 通过
https://te.hao.work/tutorials 教程库清洗 Playwright smoke + tutorial.list 线上接口校验,仅返回 topicArea=tennis_skill 的 11 条网球教程 通过
https://te.hao.work/tutorials 教程标准配图 登录后 Playwright 检查 11 张压缩配图渲染、首图为 /uploads/tutorials/forehand-fundamentals.webp,并验证图片资源 200 OK 通过
https://te.hao.work/logs 日志页访问 curl -I https://te.hao.work/logs 通过
https://te.hao.work/vision-lab 视觉测试页访问 curl -I https://te.hao.work/vision-lab 通过
http://te.hao.work:8302/ 4 位端口访问 curl -I http://te.hao.work:8302/ 通过
站点 TLS 证书 Let’s Encrypt ECDSA 证书已签发并由宿主机 nginx 加载 通过
生产登录与首次进入工作台 Playwright 登录真实站点并跳转 /dashboard 通过
新用户邀请码校验 Playwright 验证无邀请码被拦截、正确邀请码 CA2026 可创建新账号 通过
日志页访问 Playwright 以 H1 登录并访问 /logs 通过
生产训练 / 实时分析 / 录制 / 视频库页面加载 Playwright 访问 /training/live-camera/recorder/videos 通过
生产视觉标准图库页面 Playwright 登录后访问 /vision-lab,未捕获 pageerror / console.error 通过
生产视觉历史修复 重跑历史 3 条 fallback 标准图记录后,visionStatus 全部恢复为 ok 通过
生产视频库轻剪辑入口 本地 pnpm test:e2e + 真实站点 /videos smoke 通过
生产视频库 CRUD Playwright 真实站点登录 H1 后完成 /videos 新增外部视频记录、编辑标题、删除记录整链路验证 通过
生产训练计划后台任务提交 Playwright 点击训练计划生成按钮并收到后台任务反馈 通过
生产移动端录制焦点视图 Playwright 移动端视口打开 /recorder 并验证焦点入口与操作壳层 通过
生产前端运行时异常检查 Playwright pageerror / console.error 检查 通过
媒体健康检查 curl http://127.0.0.1:8081/media/health 通过
compose 自包含服务 docker compose ps -aapp / app-worker / db / media / media-worker 正常运行,migrate 成功退出 通过
生产版本追平 docker compose up -d --build migrate app app-worker 后复测 login / checkin / videos / recorder / live-camera / admin 通过
全量 compose 重启 使用干净 worktree 执行 docker compose up -d --build 并确认 app / app-worker / db / media / media-worker 全部正常 通过
生产旧 hash 静态资源回退修复 curl -I https://te.hao.work/assets/index-BS2QgeEv.css 返回 404,不再返回 HTML 通过
生产后台任务刷新容错 任务中心与日志页在请求失败时保留最近一次成功结果,线上 smoke 未捕获页面异常 通过

构建与编译通过

项目 验证方式 状态
TypeScript 类型检查 pnpm check 通过
Node 应用生产构建 pnpm build 通过
Go 媒体服务编译 pnpm test:go 中的 go build ./... 通过

单元与路由验证

模块 验证方式 状态
auth pnpm test 通过
profile pnpm test 通过
plan pnpm test 通过
video pnpm test 通过
analysis pnpm test 通过
live analysis 会话保存 pnpm test 通过
record pnpm test 通过
rating pnpm test 通过
achievement pnpm test 通过
admin pnpm test 通过
checkin 兼容路由 pnpm test 通过
badge pnpm test 通过
leaderboard pnpm test 通过
tutorial / reminder / notification 路由校验 pnpm test 通过
task 后台任务路由 pnpm test / pnpm test:e2e 通过
后台任务超限失败收敛 pnpm test + worker 代码审查 通过
media 工具函数 pnpm test 通过
媒体服务 /media 路径回退 pnpm test 通过
LLM / media 请求超时重试封装 pnpm test / pnpm build 通过
登录 URL 回退逻辑 pnpm test 通过

Go 媒体服务验证

功能 验证方式 状态
/media/health go test ./... 通过
会话状态聚合 go test ./... 通过
单片段归档回放产物生成 go test ./... 通过

浏览器 E2E 已验证主流程

模块 验证内容 状态
登录 用户名输入、登录提交、跳转仪表盘 通过
仪表盘 认证后主标题与入口按钮渲染 通过
训练计划 训练计划页加载与生成入口可见 通过
视频库 视频卡片渲染 通过
视频库 CRUD 新增视频记录、编辑视频信息、删除视频记录 通过
视频库轻剪辑 打开轻剪辑工作台、显示建议片段、展示导出草稿入口 通过
视频库轻剪辑增强 循环预览、区间快速载入、草稿复制、cue sheet 导出 通过
实时分析 摄像头启动入口渲染 通过
实时分析打分 启动分析后出现实时评分结果 通过
实时分析增强 动作分布、区间筛选、有效识别率和会话质量带渲染 通过
在线录制 启动摄像头、开始录制、手动标记、结束归档 通过
在线录制归档进度展示 录制页显示归档进度、已上传体积、待上传体积与片段总数 通过
录制焦点视图 移动端最大化焦点视图与主操作按钮渲染 通过
录制结果入库 归档完成后视频库可见录制结果 通过

LLM 模块验证

项目 验证方式 状态
.env 中的 LLM_API_URL / LLM_API_KEY / LLM_MODEL pnpm test:llm 通过
https://one.hao.work/v1/chat/completions 联通性 pnpm test:llm 实际返回文本 通过
LLM 超时与重试配置 pnpm build + 真实 pnpm test:llm 通过
视觉模型独立配置路径 server/_core/llm.test.ts + 手工 smoke 检查 通过
视觉返回兼容解析 server/vision.test.ts + 真实图片 smoke 通过
视觉标准图库入库 MySQL 中 vision_reference_images 已写入 5 张 Commons 网球参考图 通过
视觉测试结果入库 MySQL 中 vision_test_runs 已写入 3 条真实测试结果,且历史 fallback 已修复为 ok 通过
H1 全量可见性 H1 用户已提升为 admin,可读取全部视觉测试记录;Playwright 真实站点检查通过 通过

已知非阻断警告

  • 测试与开发日志中会出现 OAUTH_SERVER_URL 未配置提示;当前 mocked auth 和本地验证链路不依赖真实 OAuth 服务,因此不会导致失败
  • pnpm build 仍有 Vite 大 chunk 警告;当前属于性能优化待办,不影响本次产物生成
  • Playwright 运行依赖 mocked media/network,不等价于真机摄像头、真实弱网和真实 WebRTC 质量验收
  • 当前上游视觉网关可能忽略 LLM_VISION_MODEL 并回退为文本模型;服务端已实现自动降级,任务不会因此直接失败
  • 上游视觉网关当前返回的 model 仍可能显示为 qwen3.5-plus,且响应格式不稳定;服务端已增加兼容解析与默认值补齐,避免再次因结构差异直接降级
  • 开发服务器启动阶段仍会打印 OAUTH_SERVER_URL 未配置提示;当前用户名登录、mock auth 和自动化测试不受影响

当前未纳入自动验证的内容

  • 真实摄像头权限与真实编码质量
  • 真实 WebRTC 网络连通性
  • 真正的 FFmpeg 多片段重编码质量
  • 真机 iOS / Android 浏览器的真实媒体兼容差异

以上内容仍建议在预发或本地联调时补充人工验证。