文档版本: v0.2.0 最后更新: 2026-01-15 状态: Active
打造一款面向业余网球爱好者的智能记分应用,通过 AI 技术实现类似专业赛事"鹰眼"的落点判定功能,让每个人都能享受科技带来的公平判罚体验。
| 用户类型 | 特征 | 核心诉求 |
|---|---|---|
| 业余网球爱好者 | 每周打球 1-3 次,无专业裁判 | 解决"是否出界"的争议 |
| 网球教练 | 需要分析学员技术 | 回看落点分布,辅助教学 |
| 网球俱乐部 | 组织内部比赛 | 提供标准化记分工具 |
- 轻量化:无需额外硬件,一部手机即可使用
- 易上手:3 分钟完成场地校准,即可开始比赛
- AI 驱动:自动检测网球落点,辅助判定界内/出界
描述:支持标准网球计分规则,记录比赛进程
功能点:
- 支持单打/双打模式
- 标准计分:0-15-30-40-Game-Set-Match
- 支持抢七 (Tiebreak)
- 发球方切换提示
- 比赛暂停/继续
用户故事:
作为网球爱好者,我希望能快速记录每分得失,以便专注于比赛本身
描述:通过标记球场四角,建立摄像头画面与真实球场的映射关系
功能点:
- 四点校准(左上、右上、右下、左下)
- 实时预览校准区域
- 校准结果持久化
- 支持重新校准
用户故事:
作为用户,我希望通过简单的操作完成场地校准,以便 AI 能准确判断落点位置
描述:自动追踪网球轨迹,检测落点并判定界内/出界
功能点:
- 实时网球追踪
- 落点自动检测
- 界内/出界判定
- 判定结果可视化
- 支持手动纠正
用户故事:
作为比赛双方,我们希望有一个客观的第三方判定落点,以避免争议
描述:根据 AI 判定结果自动更新比分
功能点:
- 开关控制(可随时关闭)
- 结合发球方判断得分归属
- 出界自动判对方得分
- 界内需要后续判断(如对方未回球)
用户故事:
作为用户,我希望系统能自动记分,这样我就不用每分都手动操作
描述:查看比赛中 AI 记录的关键事件
功能点:
- 落点事件列表
- 轨迹可视化
- 判定结果展示
- 按时间/局数筛选
用户故事:
作为用户,我希望赛后能回顾关键球的判定,分析比赛过程
- 新建比赛
- 比赛列表
- 历史记录
- 删除比赛
- 摄像头权限管理
- AI 灵敏度调节
- 界面语言切换
| 指标 | 要求 |
|---|---|
| 帧处理速度 | >= 10 FPS |
| 落点检测延迟 | < 500ms |
| 应用启动时间 | < 3s |
| 内存占用 | < 300MB |
| 平台 | 最低版本 |
|---|---|
| iOS | 13.0+ |
| Android | 10.0+ (API 29) |
- 摄像头权限需明确授权
- 本地数据加密存储
- 不上传用户视频到云端
启动应用
↓
授权摄像头权限
↓
进入首页
↓
点击"开始比赛"
↓
场地校准(标记四角)
↓
开始比赛记分
↓
比赛结束
↓
查看回放/统计
比赛进行中
↓
┌─────────────────────────────────────┐
│ AI 自动模式 手动模式 │
│ ↓ ↓ │
│ AI 检测落点 用户观察落点 │
│ ↓ ↓ │
│ 自动判定结果 点击记分按钮 │
│ ↓ ↓ │
│ 自动更新比分 手动更新比分 │
└─────────────────────────────────────┘
↓
比赛继续 / 结束
首页 (index)
├── 开始比赛 → 校准页 (calibration) → 比赛页 (playing)
├── 历史记录 → 回放页 (replay)
└── 设置
- 大按钮"开始比赛"
- 历史比赛列表入口
- 底部设置入口
- 全屏摄像头预览
- 四个角点标记按钮
- 完成校准按钮
- 重置按钮
- 顶部:比分显示(双方比分、当前局分)
- 中部:摄像头预览 + AI 状态指示
- 底部:记分按钮(玩家A得分 / 玩家B得分)
- 浮层:AI 控制(自动记分开关)
- 事件时间线
- 落点可视化(球场俯视图 + 落点标记)
- 判定结果(界内/出界)
Match (比赛)
├── id
├── createdAt
├── status (进行中/已完成)
├── playerA / playerB
├── sets[]
│ ├── games[]
│ │ └── points[]
│ └── tiebreak
└── calibration (校准数据)
AIEvent (AI 事件)
├── id
├── matchId
├── timestamp
├── type (bounce/trajectory)
├── position {x, y}
├── isInBounds
└── confidence
- Expo Camera 不支持原生帧处理,需使用
takePictureAsync周期性捕获 - React Native 无法直接解码 base64 图片像素,需使用颜色采样或 native module
- iOS 后台运行受限,比赛记分需保持前台
- HSV 颜色检测受光照影响较大
- 单摄像头无法获取深度信息,落点 Z 轴靠速度推断
- 高速运动可能导致运动模糊,影响检测精度
- 基础记分功能
- 场地校准
- AI 球追踪(模拟)
- 落点检测
- 界内/出界判定
- 自动记分开关
- 比赛回放
- 视频录制
- AI 演示模式(Simulator 测试支持)
- 国际化 (i18n) - 中英文支持
- CI/CD 流水线(GitHub Actions)
- 代码质量工具(ESLint, Prettier)
- 单元测试框架(Jest)
- 项目文档完善
- 真实图像处理(Native Module)
- 多摄像头支持
- 轨迹回放动画
- 落点热力图统计
- 性能优化
- 云端数据同步
- 社交分享
- 赛事组织功能
- 多人对战模式
| 指标 | 目标值 |
|---|---|
| 校准成功率 | > 95% |
| AI 判定准确率 | > 80% |
| 用户完成比赛率 | > 70% |
| 应用崩溃率 | < 1% |
| 风险 | 影响 | 应对策略 |
|---|---|---|
| AI 判定不准确 | 用户信任度下降 | 提供手动纠正,显示置信度 |
| 光照变化影响检测 | 检测失败 | 自适应阈值,提示用户调整 |
| 电量消耗过快 | 无法完成比赛 | 优化帧率,提供省电模式 |
| 用户不理解校准 | 放弃使用 | 新手引导,示例动画 |