Добавить в модель workout_log и API возможность сохранения и получения расширенных метрик тренировок (дистанция, пульс, темп, каденс, нагрузка, эффекты, VO2max, восстановление, интервалы, зоны пульса, субъективная оценка). Также отображать ключевые метрики в сводке дня и истории тренировок.
Acceptance criteria
Модель workout_log содержит поля: distance_m, avg_heart_rate, max_heart_rate, avg_pace, avg_cadence, max_cadence, avg_stride_length_cm, training_load, aerobic_effect, anaerobic_effect, vo2max, recovery_hours, intervals_json, heart_rate_zones_json, perceived_effort
POST /api/fitness/workout/{id}/results сохраняет расширенные результаты тренировки и возвращает обновлённую запись
GET /api/fitness/workout/{id}/results возвращает сохранённые результаты тренировки
GET /api/fitness/summary в ответе содержит общую дистанцию, средний пульс и тренировочную нагрузку за день
GET /api/fitness/history содержит колонки distance_m, avg_heart_rate, training_load
Поля intervals_json и heart_rate_zones_json валидируются как корректный JSON
Поле perceived_effort принимает значения от 1 до 5
Исходное описание
Сейчас фитнес-трекер уже умеет записывать тренировки через log_workout (название, длительность, ккал, шаги), но нет полноценной фиксации результатов тренировки. Нужно расширить API и модель данных, чтобы можно было сохранять детальные результаты пробежек и других тренировок.
Что нужно:
Расширить модель workout_log: добавить поля distance_m (дистанция в метрах), avg_heart_rate (средний пульс), max_heart_rate (макс пульс), avg_pace (средний темп, например в секундах на км), avg_cadence (средний каденс), max_cadence (макс каденс), avg_stride_length_cm (средняя длина шага), training_load (тренировочная нагрузка TL), aerobic_effect (аэробный эффект), anaerobic_effect (анаэробный эффект), vo2max (МПК в мл/кг/мин), recovery_hours (время восстановления в часах), intervals_json (JSON с интервалами: тип, длительность, дистанция, темп), heart_rate_zones_json (JSON с зонами пульса: название зоны и время в ней), perceived_effort (субъективная оценка: 1-5).
Добавить API эндпоинт POST /api/fitness/workout/{id}/results для сохранения результатов тренировки (можно вызывать отдельно от log_workout, или расширить log_workout).
Добавить API эндпоинт GET /api/fitness/workout/{id}/results для получения сохранённых результатов.
В сводке дня (get_fitness_summary) показывать ключевые метрики тренировок: общая дистанция, средний пульс, тренировочная нагрузка.
В истории (get_fitness_history) добавить колонки: дистанция, средний пульс, TL.
Использование: пользователь после пробежки смотрит данные в Mi Fitness и скидывает скриншоты ассистенту, тот парсит и сохраняет через новый API.
**Тип:** feature
Добавить в модель workout_log и API возможность сохранения и получения расширенных метрик тренировок (дистанция, пульс, темп, каденс, нагрузка, эффекты, VO2max, восстановление, интервалы, зоны пульса, субъективная оценка). Также отображать ключевые метрики в сводке дня и истории тренировок.
## Acceptance criteria
- Модель workout_log содержит поля: distance_m, avg_heart_rate, max_heart_rate, avg_pace, avg_cadence, max_cadence, avg_stride_length_cm, training_load, aerobic_effect, anaerobic_effect, vo2max, recovery_hours, intervals_json, heart_rate_zones_json, perceived_effort
- POST /api/fitness/workout/{id}/results сохраняет расширенные результаты тренировки и возвращает обновлённую запись
- GET /api/fitness/workout/{id}/results возвращает сохранённые результаты тренировки
- GET /api/fitness/summary в ответе содержит общую дистанцию, средний пульс и тренировочную нагрузку за день
- GET /api/fitness/history содержит колонки distance_m, avg_heart_rate, training_load
- Поля intervals_json и heart_rate_zones_json валидируются как корректный JSON
- Поле perceived_effort принимает значения от 1 до 5
## Исходное описание
Сейчас фитнес-трекер уже умеет записывать тренировки через log_workout (название, длительность, ккал, шаги), но нет полноценной фиксации результатов тренировки. Нужно расширить API и модель данных, чтобы можно было сохранять детальные результаты пробежек и других тренировок.
Что нужно:
1. Расширить модель workout_log: добавить поля distance_m (дистанция в метрах), avg_heart_rate (средний пульс), max_heart_rate (макс пульс), avg_pace (средний темп, например в секундах на км), avg_cadence (средний каденс), max_cadence (макс каденс), avg_stride_length_cm (средняя длина шага), training_load (тренировочная нагрузка TL), aerobic_effect (аэробный эффект), anaerobic_effect (анаэробный эффект), vo2max (МПК в мл/кг/мин), recovery_hours (время восстановления в часах), intervals_json (JSON с интервалами: тип, длительность, дистанция, темп), heart_rate_zones_json (JSON с зонами пульса: название зоны и время в ней), perceived_effort (субъективная оценка: 1-5).
2. Добавить API эндпоинт POST /api/fitness/workout/{id}/results для сохранения результатов тренировки (можно вызывать отдельно от log_workout, или расширить log_workout).
3. Добавить API эндпоинт GET /api/fitness/workout/{id}/results для получения сохранённых результатов.
4. В сводке дня (get_fitness_summary) показывать ключевые метрики тренировок: общая дистанция, средний пульс, тренировочная нагрузка.
5. В истории (get_fitness_history) добавить колонки: дистанция, средний пульс, TL.
Использование: пользователь после пробежки смотрит данные в Mi Fitness и скидывает скриншоты ассистенту, тот парсит и сохраняет через новый API.
---
**Taiga:** #52 — https://taiga.grigowashere.ru/project/0/9/us/52
**Ветка:** `feature/52-расширение-api-и-модели-данных-для-детал`
Закрытие: `Closes gitea #N, taiga #REF` в коммите
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Тип: feature
Добавить в модель workout_log и API возможность сохранения и получения расширенных метрик тренировок (дистанция, пульс, темп, каденс, нагрузка, эффекты, VO2max, восстановление, интервалы, зоны пульса, субъективная оценка). Также отображать ключевые метрики в сводке дня и истории тренировок.
Acceptance criteria
Исходное описание
Сейчас фитнес-трекер уже умеет записывать тренировки через log_workout (название, длительность, ккал, шаги), но нет полноценной фиксации результатов тренировки. Нужно расширить API и модель данных, чтобы можно было сохранять детальные результаты пробежек и других тренировок.
Что нужно:
Расширить модель workout_log: добавить поля distance_m (дистанция в метрах), avg_heart_rate (средний пульс), max_heart_rate (макс пульс), avg_pace (средний темп, например в секундах на км), avg_cadence (средний каденс), max_cadence (макс каденс), avg_stride_length_cm (средняя длина шага), training_load (тренировочная нагрузка TL), aerobic_effect (аэробный эффект), anaerobic_effect (анаэробный эффект), vo2max (МПК в мл/кг/мин), recovery_hours (время восстановления в часах), intervals_json (JSON с интервалами: тип, длительность, дистанция, темп), heart_rate_zones_json (JSON с зонами пульса: название зоны и время в ней), perceived_effort (субъективная оценка: 1-5).
Добавить API эндпоинт POST /api/fitness/workout/{id}/results для сохранения результатов тренировки (можно вызывать отдельно от log_workout, или расширить log_workout).
Добавить API эндпоинт GET /api/fitness/workout/{id}/results для получения сохранённых результатов.
В сводке дня (get_fitness_summary) показывать ключевые метрики тренировок: общая дистанция, средний пульс, тренировочная нагрузка.
В истории (get_fitness_history) добавить колонки: дистанция, средний пульс, TL.
Использование: пользователь после пробежки смотрит данные в Mi Fitness и скидывает скриншоты ассистенту, тот парсит и сохраняет через новый API.
Taiga: #52 — https://taiga.grigowashere.ru/project/0/9/us/52
Ветка:
feature/52-расширение-api-и-модели-данных-для-деталЗакрытие:
Closes gitea #N, taiga #REFв коммите