-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathanalysis.py
More file actions
38 lines (34 loc) · 1.56 KB
/
Copy pathanalysis.py
File metadata and controls
38 lines (34 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def calculate_energy_score(metrics: dict, user: "User") -> float:
"""Simple score based on sleep, HRV and steps"""
sleep_factor = min(metrics["sleep"] / 8, 1.0) # Normalize to 0-1
hrv_factor = min(metrics["hrv"] / 80, 1.0) # Normalize to 0-1
steps_factor = min(metrics["steps"] / 10000, 1.0) # Normalize to 0-1
return (sleep_factor * 0.4 + hrv_factor * 0.4 + steps_factor * 0.2)
def get_energy_avatar(score: float) -> dict:
"""Energy Avatar: 🐢 → 🏃 → 🚀"""
if score < 0.4:
return {
"emoji": "🐢",
"name": "Черепаха",
"tip": "Снизь нагрузку, сделай 3 перерыва на дыхание"
}
elif score < 0.7:
return {
"emoji": "🏃",
"name": "Бегун",
"tip": "Поддерживай текущий ритм, спи 7+ часов"
}
else:
return {
"emoji": "🚀",
"name": "Ракета",
"tip": "Идеальный день для сложных задач и тренировок"
}
def generate_advice(avatar: dict, user: "User") -> str:
"""Rule-based advice (no LLM)"""
base = avatar["tip"]
if user.goal == "energy":
return f"{base}\n⚡ Дополнительно: Сделай 5-минутную зарядку утром"
elif user.goal == "recovery":
return f"{base}\n🌙 Дополнительно: Избегай кофеина после 14:00"
return base