Перейти к содержанию

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-таблицах и у конкурентов.

Скелет продукта

Основа, на которую добавляются все остальные функции, — шесть блоков:

  1. Визуал (дизайн-система)
  2. Конструктор тренировок (составление, назначение, копирование, расчёт нагрузки)
  3. Анкета тренера (профиль/онбординг тренера)
  4. Анкета клиента (профиль/онбординг клиента)
  5. Календарь

Этот скелет — стержень MVP, см. 03 — MVP и роадмап.