Skip to content

Latest commit

 

History

History
305 lines (228 loc) · 7.2 KB

File metadata and controls

305 lines (228 loc) · 7.2 KB

SuperTennis 产品需求文档 (PRD)

文档版本: v0.2.0 最后更新: 2026-01-15 状态: Active

1. 产品概述

1.1 产品愿景

打造一款面向业余网球爱好者的智能记分应用,通过 AI 技术实现类似专业赛事"鹰眼"的落点判定功能,让每个人都能享受科技带来的公平判罚体验。

1.2 目标用户

用户类型 特征 核心诉求
业余网球爱好者 每周打球 1-3 次,无专业裁判 解决"是否出界"的争议
网球教练 需要分析学员技术 回看落点分布,辅助教学
网球俱乐部 组织内部比赛 提供标准化记分工具

1.3 产品定位

  • 轻量化:无需额外硬件,一部手机即可使用
  • 易上手:3 分钟完成场地校准,即可开始比赛
  • AI 驱动:自动检测网球落点,辅助判定界内/出界

2. 功能需求

2.1 核心功能

F1: 比赛记分

描述:支持标准网球计分规则,记录比赛进程

功能点

  • 支持单打/双打模式
  • 标准计分:0-15-30-40-Game-Set-Match
  • 支持抢七 (Tiebreak)
  • 发球方切换提示
  • 比赛暂停/继续

用户故事

作为网球爱好者,我希望能快速记录每分得失,以便专注于比赛本身

F2: 场地校准

描述:通过标记球场四角,建立摄像头画面与真实球场的映射关系

功能点

  • 四点校准(左上、右上、右下、左下)
  • 实时预览校准区域
  • 校准结果持久化
  • 支持重新校准

用户故事

作为用户,我希望通过简单的操作完成场地校准,以便 AI 能准确判断落点位置

F3: AI 鹰眼判定

描述:自动追踪网球轨迹,检测落点并判定界内/出界

功能点

  • 实时网球追踪
  • 落点自动检测
  • 界内/出界判定
  • 判定结果可视化
  • 支持手动纠正

用户故事

作为比赛双方,我们希望有一个客观的第三方判定落点,以避免争议

F4: 自动记分

描述:根据 AI 判定结果自动更新比分

功能点

  • 开关控制(可随时关闭)
  • 结合发球方判断得分归属
  • 出界自动判对方得分
  • 界内需要后续判断(如对方未回球)

用户故事

作为用户,我希望系统能自动记分,这样我就不用每分都手动操作

F5: 比赛回放

描述:查看比赛中 AI 记录的关键事件

功能点

  • 落点事件列表
  • 轨迹可视化
  • 判定结果展示
  • 按时间/局数筛选

用户故事

作为用户,我希望赛后能回顾关键球的判定,分析比赛过程

2.2 辅助功能

F6: 比赛管理

  • 新建比赛
  • 比赛列表
  • 历史记录
  • 删除比赛

F7: 设置

  • 摄像头权限管理
  • AI 灵敏度调节
  • 界面语言切换

3. 非功能需求

3.1 性能要求

指标 要求
帧处理速度 >= 10 FPS
落点检测延迟 < 500ms
应用启动时间 < 3s
内存占用 < 300MB

3.2 兼容性

平台 最低版本
iOS 13.0+
Android 10.0+ (API 29)

3.3 安全性

  • 摄像头权限需明确授权
  • 本地数据加密存储
  • 不上传用户视频到云端

4. 用户流程

4.1 首次使用流程

启动应用
    ↓
授权摄像头权限
    ↓
进入首页
    ↓
点击"开始比赛"
    ↓
场地校准(标记四角)
    ↓
开始比赛记分
    ↓
比赛结束
    ↓
查看回放/统计

4.2 比赛中操作流程

比赛进行中
    ↓
┌─────────────────────────────────────┐
│  AI 自动模式        手动模式         │
│       ↓                ↓            │
│  AI 检测落点      用户观察落点       │
│       ↓                ↓            │
│  自动判定结果      点击记分按钮      │
│       ↓                ↓            │
│  自动更新比分      手动更新比分      │
└─────────────────────────────────────┘
    ↓
比赛继续 / 结束

5. 界面设计

5.1 页面结构

首页 (index)
├── 开始比赛 → 校准页 (calibration) → 比赛页 (playing)
├── 历史记录 → 回放页 (replay)
└── 设置

5.2 关键页面说明

首页

  • 大按钮"开始比赛"
  • 历史比赛列表入口
  • 底部设置入口

校准页

  • 全屏摄像头预览
  • 四个角点标记按钮
  • 完成校准按钮
  • 重置按钮

比赛页

  • 顶部:比分显示(双方比分、当前局分)
  • 中部:摄像头预览 + AI 状态指示
  • 底部:记分按钮(玩家A得分 / 玩家B得分)
  • 浮层:AI 控制(自动记分开关)

回放页

  • 事件时间线
  • 落点可视化(球场俯视图 + 落点标记)
  • 判定结果(界内/出界)

6. 数据模型

6.1 核心实体

Match (比赛)
├── id
├── createdAt
├── status (进行中/已完成)
├── playerA / playerB
├── sets[]
│   ├── games[]
│   │   └── points[]
│   └── tiebreak
└── calibration (校准数据)

AIEvent (AI 事件)
├── id
├── matchId
├── timestamp
├── type (bounce/trajectory)
├── position {x, y}
├── isInBounds
└── confidence

7. 技术约束

7.1 平台限制

  • Expo Camera 不支持原生帧处理,需使用 takePictureAsync 周期性捕获
  • React Native 无法直接解码 base64 图片像素,需使用颜色采样或 native module
  • iOS 后台运行受限,比赛记分需保持前台

7.2 算法限制

  • HSV 颜色检测受光照影响较大
  • 单摄像头无法获取深度信息,落点 Z 轴靠速度推断
  • 高速运动可能导致运动模糊,影响检测精度

8. 里程碑

MVP v0.1.0 (已完成 - 2026-01-14)

  • 基础记分功能
  • 场地校准
  • AI 球追踪(模拟)
  • 落点检测
  • 界内/出界判定
  • 自动记分开关
  • 比赛回放
  • 视频录制

v0.2.0 (已完成 - 2026-01-15)

  • AI 演示模式(Simulator 测试支持)
  • 国际化 (i18n) - 中英文支持
  • CI/CD 流水线(GitHub Actions)
  • 代码质量工具(ESLint, Prettier)
  • 单元测试框架(Jest)
  • 项目文档完善

V1.0 (规划中)

  • 真实图像处理(Native Module)
  • 多摄像头支持
  • 轨迹回放动画
  • 落点热力图统计
  • 性能优化

V2.0 (远期)

  • 云端数据同步
  • 社交分享
  • 赛事组织功能
  • 多人对战模式

9. 成功指标

指标 目标值
校准成功率 > 95%
AI 判定准确率 > 80%
用户完成比赛率 > 70%
应用崩溃率 < 1%

10. 风险与应对

风险 影响 应对策略
AI 判定不准确 用户信任度下降 提供手动纠正,显示置信度
光照变化影响检测 检测失败 自适应阈值,提示用户调整
电量消耗过快 无法完成比赛 优化帧率,提供省电模式
用户不理解校准 放弃使用 新手引导,示例动画