这是一个专门用于分析佳明(Garmin)运动手表数据的平台,支持CSV格式的数据导入、统计分析和可视化展示。通过该平台,用户可以深入了解自己的运动习惯、表现趋势和健康状况。
- Java 17
- Spring Boot 3.2.0
- Spring Data JPA
- H2 Database (开发环境)
- MySQL/PostgreSQL (生产环境)
- React 18
- Ant Design
- Chart.js
- Axios
- Vite
Runner/
├── backend/ # 后端Spring Boot项目
│ ├── src/main/java/com/runner/
│ │ ├── config/ # 配置类
│ │ ├── controller/ # 控制器
│ │ ├── model/ # 数据模型
│ │ ├── repository/ # 数据访问层
│ │ ├── service/ # 业务逻辑层
│ │ └── util/ # 工具类
│ └── pom.xml # Maven配置文件
├── frontend/ # 前端React项目
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── assets/ # 资源文件
│ │ ├── components/ # React组件
│ │ ├── services/ # API服务
│ │ ├── App.jsx # 主应用组件
│ │ └── main.jsx # 入口文件
│ ├── index.html # HTML入口
│ ├── package.json # npm配置
│ └── vite.config.js # Vite配置
└── README.md # 项目说明(当前文件)
- 支持佳明手表导出的CSV格式运动数据文件上传
- 自动解析和验证数据格式
- 数据导入状态反馈
- 总体运动数据概览(距离、时长、卡路里等)
- 运动类型分布分析
- 运动强度分析
- 运动趋势分析(支持周、月、年视图切换)
- 统计卡片展示关键指标
- 饼图展示运动类型分布
- 折线图展示运动趋势
- 柱状图展示运动强度分析
- 确保已安装Java 17和Maven
- 进入后端目录:
cd backend- 编译并运行项目:
mvn spring-boot:run后端服务将在 http://localhost:8080 启动。
- 确保已安装Node.js (推荐v16+)
- 进入前端目录:
cd frontend- 安装依赖:
npm install- 启动开发服务器:
npm run dev前端服务将在 http://localhost:3000 启动。
- URL:
/api/activities/upload - Method: POST
- Content-Type: multipart/form-data
- 上传字段名:
file(CSV文件)
- URL:
/api/statistics/overall - Method: GET
- 返回: 包含总体统计数据的JSON对象
- URL:
/api/statistics/activity-types - Method: GET
- 返回: 各运动类型统计数据的JSON对象
- URL:
/api/statistics/trends?timeRange={week|month|year} - Method: GET
- 参数:
timeRange- 时间范围(周、月、年) - 返回: 运动趋势数据的JSON对象
上传的CSV文件应包含以下字段(必须为英文表头):
Activity Type- 运动类型Date- 日期Duration- 时长(分钟)Distance- 距离(公里)Calories- 卡路里消耗Avg Heart Rate- 平均心率(可选)Max Heart Rate- 最大心率(可选)
- 后端使用内存数据库H2,重启服务后数据会重置。生产环境应配置持久化数据库。
- 文件上传有大小限制,默认不超过10MB。
- 系统会自动清理重复导入的数据。
本项目采用MIT许可证。