运动数据分析系统

Polar Coach AI是一个基于Polar Flow数据、InfluxDB、Grafana和Claude AI的智能运动教练和分析系统,提供训练数据提取、存储、可视化和AI分析功能。

  • by Didier2024-hue
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 Didier2024-hue/-mon-projet-Data-Engeneering-Polar

使用说明

🏋️ 极地教练AI

基于Polar Flow数据、InfluxDB、Grafana和Claude AI的智能运动教练和分析系统。


📋 概述

Polar Coach AI是一个完整的数据管道,它:

  • 从以下位置获取训练数据 极地流 (历史导出+通过AccessLink API实时)
  • 将其存储在 InfluxDB (时间序列数据库)
  • 将其可视化 格拉法纳 (交互式仪表板)
  • 用以下方式分析 克劳德AI 通过带有集成图表的网络聊天机器人

🏗️ 建筑

Polar Flow / AccessLink API
        ↓
  ETL Python (utils/)
        ↓
    InfluxDB
     ↙     ↘
Grafana    Flask + Claude API
Dashboard   AI Coach Chatbot

📁 项目结构

polar/
├── polar_coach.sh              # 🚀 Main launcher script
├── api/
│   └── polar_exercises.py      # Fetch new sessions via AccessLink
├── utils/
│   ├── 01_pre_ingest_polar_training.py         # JSONL preparation
│   ├── 02_supp_anomalies_fichier_historique.py # Data cleaning
│   ├── 03_delete_bucket.py                     # InfluxDB bucket purge
│   ├── 04_ingest_polar_final.py                # Historical data ingestion
│   ├── 05_post_ingest_polar_training.py        # Quality control
│   └── 06_generate_grafana_dashboard.py        # Grafana dashboard generation
├── mcp/
│   ├── polar_mcp_server.py     # MCP server (Claude tools)
│   └── test_mcp_server.py      # MCP function tests
├── flask/
│   ├── app.py                  # Flask backend + Claude API
│   └── templates/
│       └── index.html          # Web chatbot interface
├── claude/
│   └── chatbot_polar.py        # Command-line chatbot
├── data/
│   └── extracted/              # JSON session files
└── .env                        # Configuration (not committed)

⚙️ 安装

先决条件

  • Python 3.10+
  • InfluxDB 2.x
  • 图形 10.x
  • Polar Flow帐户+注册的AccessLink应用程序
  • 无烟煤API键(Claude)

1.克隆存储库

git clone <repo_url>
cd polar

2.创建虚拟环境

python3 -m venv pol
source pol/bin/activate
pip install -r requirements.txt

3.配置 .env

cp .env.example .env
# Edit with your values

所需变量:

# Polar AccessLink
POLAR_ACCESS_TOKEN=your_token
POLAR_USER_ID=your_user_id

# InfluxDB
INFLUX_URL=http://localhost:8086
INFLUX_TOKEN=your_influx_token
INFLUX_ORG=your_org
INFLUX_BUCKET=polar_metrics

# Grafana
GRAFANA_URL=http://localhost:3000
GRAFANA_API_KEY=your_grafana_key

# Claude API
ANTHROPIC_API_KEY=sk-ant-your_key

🚀 初始管道(历史数据)

运行一次以加载您的Polar历史记录:

source pol/bin/activate

# 1. Extract Polar Flow ZIP into data/extracted/
# 2. Prepare JSONL files
python3 utils/01_pre_ingest_polar_training.py

# 3. Clean anomalies
python3 utils/02_supp_anomalies_fichier_historique.py

# 4. Purge InfluxDB bucket (if reloading)
python3 utils/03_delete_bucket.py

# 5. Ingest into InfluxDB
python3 utils/04_ingest_polar_final.py

# 6. Quality control
python3 utils/05_post_ingest_polar_training.py

# 7. Generate Grafana dashboard
python3 utils/06_generate_grafana_dashboard.py

📅 日常使用

一个命令可以完成所有事情:

cd /home/datascientest/cde/polar
./polar_coach.sh

此脚本:

  1. 📡 通过AccessLink获取新会话
  2. 💾 将它们保存为JSON格式 data/extracted/
  3. 📊 将它们摄入InfluxDB
  4. 🌐 显示界面URL

🌐 接口

接口 URL 描述
🤖 极地教练AI http://<IP>:5001 克劳德聊天机器人+图表
📊 伯爵 http://<IP>:3000 实时仪表板

🤖 Polar Coach AI-功能

聊天机器人用自然语言分析你的训练数据:

  • “分析我本月的进展”
  • “我训练过度了吗?”
  • “提高心率的技巧”
  • “下周培训计划”
  • “总结我的游泳表现”

可用的Claude工具

工具 说明
get_recent_sessions 包含所有指标的最新会话
get_stats_by_sport 每项运动的平均统计数据
get_weekly_load 每周训练负荷
get_hr_zones 按运动项目划分的心率区域
get_user_profile 运动员简介

📊 Grafana仪表板

可用面板:

  • 关键绩效指标:会话、距离、卡路里、时间、平均心率、最大心率
  • 运动距离 (时间序列)
  • 按体育项目划分的平均人力资源 (时间序列)
  • 按运动分类的卡路里 (时间序列)
  • 按运动项目划分的持续时间 (时间序列)
  • 最近50次会议历史 (表格)

运动型动态过滤器。


🔧 系统化服务

Flask接口在启动时自动启动:

# Status
sudo systemctl status polar-coach

# Restart
sudo systemctl restart polar-coach

# Logs
sudo journalctl -u polar-coach -f

📦 主要依赖关系

anthropic
flask
flask-cors
influxdb-client
plotly
python-dotenv
requests
mcp

🗺️ 路线图

第1版 极地流摄入 Grafana仪表板

第2版 AI培训见解

第3版 疲劳预测模型

v4 培训推荐系统


👤 作者

迪迪埃·乔塞芬 --应用于运动表现的个人数据科学项目


📄 许可证

MIT许可证