02 — Функциональные требования
Единый каталог всех функций продукта. Каждое требование имеет стабильный ID — используйте его в задачах, макетах и коммитах.
Приоритеты и распределение по этапам — в 03 — MVP и роадмап.
Сущности
Иерархия контента, единая для конструктора, шаблонов, копирования и календаря:
| Сущность | Что это |
|---|---|
| Упражнение | Единица базы: название, техника, показатели (модуль EX) |
| Блок | Часть тренировки из нескольких упражнений: разминка, силовой блок, комплекс, заминка. Может иметь тип — AMRAP, EMOM, на время, табата, интервалы, death by, не на время (CON-18) |
| Тренировка | Набор блоков и упражнений на один день; назначается клиенту на дату |
| Программа | Упорядоченная последовательность дней с целью: день — либо тренировка, либо отдых. То, что тренер ведёт клиенту или группе |
| Курс | Продаваемый продукт тренера: программа + видео, тексты, документы, тесты, задания, чек-листы (модуль CRS). Отличие от программы: курс покупается и проходится сам по себе, без индивидуального ведения |
| Шаблон | Заготовка любой из сущностей выше в библиотеке тренера (модуль TPL) |
Неделя — представление, а не сущность. Семидневной единицы в модели нет: её не хранят, не копируют целиком и не шаблонизируют. Неделя остаётся удобным способом смотреть — на неё разбит календарь клиента и дорожка плана, — но программа устроена как последовательность дней произвольного ритма. Почему так — в 05 — Решения,
OQ-13.
1. Регистрация и онбординг (REG)
- REG-1. Клиент регистрируется по короткой ссылке тренера: тренер кидает ссылку → клиент сразу привязывается к этому тренеру.
- REG-2. Быстрая авторизация по номеру телефона (без паролей и email-подтверждений).
- REG-3. Регистрация тренера с созданием рабочего пространства (клиенты, база упражнений, шаблоны).
2. Конструктор тренировок (CON)
Ядро продукта. Делится на четыре блока: составление, назначение, копирование, расчёт нагрузки.
Составление
Принцип: канонический формат программы — структурированные данные (упражнения и их показатели), а не текст. Текстовые способы ввода (CON-1, CON-5) — интерфейс поверх структуры: парсер на лету распознаёт текст в упражнения, подходы и типы блоков, распознанное линкуется к базе, нераспознанные строки остаются текстом и конвертируются вручную. Структура не обязана вместить всё: запись упражнения, которая в неё не ложится, хранится текстом при узнанном упражнении (CON-19), а не отбрасывается.
- CON-1. Создание программы вручную (свободный ввод).
- CON-2. Составление из упражнений базы (поиск, выбор, добавление).
- CON-3. Составление из готовых блоков (см. TPL) — блок вставляется в тренировку одним нажатием.
- CON-4. Произвольный выбор тренировок и копирование набором: тренер отмечает любые тренировки плана — подряд или вразбивку — и копирует их разом в нужные дни. Копия недели была частным случаем, теперь выбирается любой набор.
- CON-5. Ввод обычным текстом — тренер печатает тренировку или вставляет готовый текст (например, из своих заметок), приложение распознаёт структуру.
- CON-6. Импорт из Excel / Google Sheets / CSV.
- CON-8. Drag-and-drop: упражнения и целые блоки перетаскиваются пальцем.
- CON-18. Тип блока. У блока есть тип — явное поле с параметрами, а не часть названия. По умолчанию типа нет: обычный список подходов. Типы: AMRAP (время), EMOM (минут всего, интервал), на время (раундов, лимит; один раунд — чиппер), табата (раунды, работа, отдых), интервалы (раунды, работа, отдых), death by (интервал, стартовые повторы), не на время. Набранный в названии формат («AMRAP 15», «каждые 90 секунд 10 раундов») распознаётся и переносится в тип, название остаётся чистым. Тип задаёт таймер клиента (TMR-1) и расшифровку «что делать» человеческим языком.
- CON-19. Запись упражнения: структура и текст. Параметры упражнения — подходы × повторы или лесенка (5-5-3-3-1) и нагрузка в единицах упражнения: % от ПМ, кг, м, сек, кал; пустое поле — нагрузки нет. Если запись сложнее (разный вес по подходам «60×5, 70×5, 80×3×3», дроп-сет, «до отказа»), она хранится текстом при узнанном упражнении и показывается клиенту как есть. Текст и структура взаимоисключающие. Парсер (CON-5) уходит в текст сам: узнал упражнение, но не разобрал остаток строки — остаток становится текстом, а не «нераспознанной строкой».
- CON-20. Черновик и публикация. Незаконченная тренировка сохраняется автоматически и помечена «черновик»: тренер может уйти со страницы и вернуться, клиент черновик не видит. «Добавить тренировку» публикует день в календарь, пометка снимается.
Назначение
- CON-9. Назначение программы одному клиенту.
- CON-10. Массовое назначение: выбрал программу спортсмена A → назначил спортсменам B/C/D.
- CON-11. Групповая программа + индивидуальные изменения: одна программа на группу (например, 25 человек), но у атлета A присед 70 %, у атлета B — 80 %, атлет C после травмы выполняет альтернативное упражнение. Ключевая функция для командных тренеров и тренеров, продающих общую программу.
Копирование и перенос
- CON-12. Массовое копирование и перенос: тренировок, программ, курсов.
- CON-13. Перетаскивание тренировок между днями календаря.
- CON-14. Перенос выбранного набора: те же отмеченные тренировки переносятся на другие дни со сдвигом, а не копируются.
Расчёт нагрузки
- CON-16. Автоматический расчёт рабочих весов от 1ПМ / 3ПМ / 5ПМ (тренер пишет «70 %», клиент видит килограммы). «% от ПМ» доступен для любого упражнения с весом, не только для базовых движений; если максимум клиента не записан, тренер вводит его тут же, в настройке упражнения, — один раз.
- CON-17. Автоматическое обновление процентов после установки нового ПМ.
3. База упражнений и показатели (EX)
- EX-1. Общая база упражнений по тренажёрному залу и кроссфиту. Публичные видео для всех упражнений не обязательны — стартовая база может быть без видео.
- EX-2. Добавление тренером собственных упражнений и личных видео к упражнениям базы. Видео тренера приватно: его видит только добавивший тренер и его клиенты в назначенных тренировках; другим тренерам чужие видео недоступны.
- EX-3. Гибкие показатели упражнения — упражнение может измеряться: время, дистанция, темп, скорость, мощность, высота прыжка, пульс, калории, метры, секунды, RPE (1–10), кг, повторения, произвольная единица измерения (тренер сам назначает и вводит).
4. Шаблоны и блоки (TPL)
- TPL-1. Сохранение собственных блоков тренера с папками: разминки (их может быть много, папка «Разминки»), силовые блоки, заминки/растяжки, комплексы.
- TPL-2. Библиотека шаблонов тренера по уровням: блоки, тренировки, программы. Каждая база показывает рядом своё и общее — стартовый набор от сервиса и сохранённое тренером, с пометкой, где что. Уровня «неделя» нет: недели как сущности не существует (см.
OQ-13). - TPL-3. Шаблонизация в конструкторе: копирование и быстрое составление из шаблонов.
5. Календарь и планирование (CAL)
- CAL-1. Календарь тренера — месяц одного клиента: та же логика и те же карточки дней, что в ленте конструктора (подробный и компактный вид — общая настройка), сегодняшний день отмечен, дни за концом составленной части видны как «не составлено», дни вне срока программы — пустые. Клиент переключается быстро: правая панель со списком всех клиентов, поиском и метками «программа кончается через N дней / кончилась / не назначена». Клик по дню открывает конструктор на этом клиенте и дне. Уровней «все клиенты × месяц» и «день по всем» нет: сетка по всем не масштабируется на полсотни индивидуальных программ; общая картина по всем клиентам — на дашборде (таймлайн дня, очередь составления), см.
OQ-14. - CAL-2. Отметки в календаре: отдых, соревнования, назначенные тренировки.
6. Выполнение тренировки клиентом (CLI)
- CLI-1. Клиент видит тренировки, которые пишет ему тренер.
- CLI-2. Запись результатов: веса, повторения, результаты, ПМ, комментарии.
- CLI-3. Оффлайн-режим клиента: загруженная программа сохраняется на устройстве; без интернета приложение открывается и программа показывается, результаты записываются локально.
- CLI-4. Оффлайн-режим тренера: создание, редактирование, копирование тренировок без интернета.
- CLI-5. Автоматическая синхронизация всех оффлайн-изменений при появлении сети.
Детализация оффлайна — что синхронизируется всегда, что догружается по правилам, что работает только онлайн, оценки объёмов — в 07 — Оффлайн-режим.
7. Таймер (TMR)
- TMR-1. Таймер строится из типа блока (CON-18), тренеру ничего не настраивать отдельно: AMRAP 15 → обратный отсчёт с подсчётом раундов; EMOM 12 → сигнал каждую минуту; интервалы 4 × 3:00 / 1:00 и табата → работа/отдых; death by → растущие повторы до отказа; «на время» → секундомер с лимитом. Формат, набранный в названии блока — «EMOM 12», «10 rounds / 30 sec work / 15 sec rest», — распознаётся и становится типом.
- TMR-2. Звук + вибрация.
- TMR-3. Работа с заблокированным экраном.
- TMR-4. Большие цифры для использования телефона в зале.
8. Профиль спортсмена (PRO)
- PRO-1. Основное: ФИО, фото, дата рождения (автоматически отображаемый возраст), пол, телефон, email, вид спорта, уровень подготовки, тренировочный стаж (считается автоматически от даты, когда клиент начал тренироваться).
- PRO-2. Антропометрия: рост, вес, произвольные измерения.
- PRO-3. Медицина: ограничения, противопоказания, предыдущие травмы; текущие болевые ощущения; операции; разрешённые/запрещённые движения.
- PRO-4. Спортивные показатели: 1ПМ, 3ПМ, 5ПМ, пользовательские тесты (специфические тесты, которые написал тренер).
- PRO-5. Цели: основная и промежуточные.
- PRO-6. История каждого показателя с графиком (пример: 120 → 130 → 140 → 145 → 150 кг).
- PRO-7. Профиль клиента со статистикой — «интересная статка» в клиентском приложении.
9. Видео (VID)
- VID-1. Видеобиблиотека тренера: загрузка с телефона напрямую, без YouTube/VK и других сторонних сервисов.
- VID-2. Привязка видео: к упражнению, тренировке, программе, курсу.
- VID-3. Видео от спортсмена: после подхода снял → отправил технику тренеру; тренер отвечает комментарием (COM-3).
10. Коммуникация (COM)
- COM-1. Комментарий клиента к тренировке.
- COM-2. Комментарий клиента к конкретному упражнению.
- COM-3. Тренер видит: комментарии, видеоответы, и может ставить реакции.
- COM-4. Комментарий тренера клиенту (виден клиенту).
- COM-5. Приватная заметка тренера о клиенте — клиент её никогда не видит.
11. Анкеты и мониторинг (SUR)
- SUR-1. Раз в неделю приложение автоматически отправляет клиенту анкету: вес, фото, сон, питание, самочувствие, выполнение тренировок, «что получилось?», «что было сложно?».
- SUR-2. Тренер сам создаёт шаблоны анкет.
- SUR-3. Ответ клиента автоматически появляется в его карточке.
12. Уведомления (NTF)
- NTF-1. Автоматические уведомления: клиент не тренировался 3/5 дней (и далее), новый рекорд, тренировка завтра, заканчивается подписка.
- NTF-2. Тренер полностью управляет автоматизациями, чтобы приложение не превращалось в спам.
13. Монетизация и платежи (PAY)
Платежи клиентов тренеру
- PAY-1. Клиент оплачивает тренировки; если оплаты нет — доступ к программе блокируется.
- PAY-2. Типы оплат: разовые платежи, подписки, автопродление, промокоды, пробный период.
- PAY-3. Несколько тарифов у тренера: онлайн, оффлайн, группы и т.д.
- PAY-4. История оплат и просроченные платежи.
- PAY-5. Автоматическое ограничение доступа после окончания подписки — по настройке тренера.
- PAY-6. Тренер может продлить подписку клиенту без оплаты по уважительной причине.
- PAY-7. Тренер привязывает свою карту — деньги клиентов приходят ему напрямую, без внутреннего баланса платформы и ручного вывода средств.
Оплата приложения тренером
- PAY-8. Модуль оплаты приложения для тренера (подписка тренера на сервис). Оплата доступна только в веб-версии — обход комиссии App Store.
14. Курсы (CRS)
- CRS-1. Тренер продаёт не только индивидуальное сопровождение, но и целый курс на несколько дней, недель или месяцев.
- CRS-2. Содержимое курса: видео, текст, тренировки, документы, тесты, задания, чек-листы.
- CRS-3. Продажа курса разово или по подписке.
15. Лидерборды и ачивки (LB)
- LB-1. Лидерборд внутри: упражнения, комплекса, теста, команды, курса.
- LB-2. Деление лидерборда: возрастные категории, весовые категории, мужчины/женщины, уровень подготовки.
- LB-3. Возможность полностью отключить лидерборд.
- LB-4. Ачивки клиента — аналог как в FatSecret.
16. Бренд тренера (BRD)
- BRD-1. Кастомизация: логотип, название профиля, основные цвета, фон, аватар, обложка.
- BRD-2. Публичная страница тренера: описание, специализация, программы, курсы, отзывы, кнопка «Начать тренировки».
17. Интеграции (INT)
- INT-1. Подключение данных из Apple Health и носимых устройств (Whoop и аналоги).
- INT-2. Импорт данных тренера из TRNR (переезд с конкурента).
18. ИИ-модуль (AI)
- AI-1. Генерация описаний упражнений.
- AI-2. Генерация фото упражнений.
- AI-3. Генерация программ.
19. Админ-панель (ADM)
- ADM-1. Список тренеров (управление).
- ADM-2. Список клиентов (управление).
- ADM-3. Десктоп-сайт админа.
20. Платформы и нефункциональные требования (NFR)
- NFR-1. Клиентское приложение: iOS / Android.
- NFR-2. Тренерское приложение: iOS / Android + десктоп-сайт. Веб-версия конструктора — критична и входит в MVP: составление программ почти всегда идёт с компьютера.
- NFR-3. Оффлайн-архитектура: local-first хранение данных с фоновой синхронизацией (основа для CLI-3…CLI-5).
- NFR-4. Скорость конструктора — ключевая продуктовая метрика: составление типовой тренировки должно занимать меньше времени, чем в Google-таблицах и у конкурентов.
Скелет продукта
Основа, на которую добавляются все остальные функции, — шесть блоков:
- Визуал (дизайн-система)
- Конструктор тренировок (составление, назначение, копирование, расчёт нагрузки)
- Анкета тренера (профиль/онбординг тренера)
- Анкета клиента (профиль/онбординг клиента)
- Календарь
Этот скелет — стержень MVP, см. 03 — MVP и роадмап.