Калькулятор плана —
защита перед релизом

Детерминированный движок. Все числа на странице посчитал сам калькулятор — ничего не выдумано. Ниже доказательство на твоих данных, на чужих бегунах, и отчёт о том, как я пытался это сломать.

rAIner
Корень всех прошлых провалов: темп без усилия неинтерпретируем. 5:33/км — это либо лёгкий бег сильного бегуна, либо максимум новичка. Пока не знаем усилие — не знаем форму, и план уезжает в 7:52 или 8:00. Теперь усилие оцифровано (выбор из 4 описаний или пульс), и из него детерминированно считается всё остальное.
01 · Полный онбординг

Как это выглядит вживую

Весь диалог: цель (точка Б) → замер формы (точка А) → честный вердикт → ввод плавающего расписания. Каждое число в ответах бота посчитал калькулятор.
Привет! Я rAIner — твой беговой коуч. Соберу план под тебя за пару минут. Начнём с цели. 🎯
На какую дистанцию целишься?
5 км10 км21.1 км42.2 км
21.1 км
Когда забег? Введи дату в формате ДД.ММ.ГГГГ — ровно так, иначе не посчитаю срок.
в конце августа
Не понял дату. Нужен формат ДД.ММ.ГГГГ, например 29.08.2026.
29.08.2026
10 недель до старта. Теперь померяю форму — точку А. Спрошу про два бега.

Бег 1 — обычный, недавний. Сколько километров? Введи число, например 4.5.
4.5
За сколько пробежал? Формат ММ:СС, например 25:00.
25:00
Как этот бег ощущался? Это определяет всю форму — выбери точно по описанию:

🟢 Спокойно — дышал носом, болтал бы свободно, мог бы ещё столько же
🟡 Бодро — дышал глубже, говорил фразами с паузами, ещё немного бы пробежал
🟠 Тяжело — дышал ртом, только короткие фразы, хватило бы ещё на 10–15 мин
🔴 Максимум — задыхался, говорить не мог, выложился как на гонке
🟢 Спокойно🟡 Бодро🟠 Тяжело🔴 Максимум➕ Ввести пульс
🟠 Тяжело
Понял. Форма VDOT 35.9. Рабочие темпы: лёгкий 6:39, темпо 5:33, интервалы 5:05/км.
Бег 2 — самый длинный за последний месяц. Сколько километров?
меньше 55–10 км10–15 км15–20 кмбольше 20
10 км
Как далась эта длинная?
🟢 Спокойно🟡 Бодро🟠 Тяжело
🟡 Бодро
Отлично — 10 км в комфорте есть, с этого и растим длинную.
Сколько в среднем бегаешь в неделю сейчас?
меньше 1515–25 км25–40 км40–60 кмбольше 60
15–25 км
Сколько дней в неделю готов бегать?
3456
5
Свёл форму (VDOT 35.9) и срок (10 недель). Честные варианты цели — выбери кнопкой:

🎯 6:00 /км — амбициозно, впритык, форму подтянем ровно под это
🏁 Просто добежать — тоже амбициозно, но с запасом по уверенности

Быстрее ~5:24/км за 10 недель я обещать не стану — форму столько не нарастить. Невозможных вариантов в кнопках нет.
🎯 6:00 /км🏁 Просто добежать
🎯 6:00 /км
Готово. Вот первая неделя плана (весь план и виды тренировок — ниже под чатом):
Неделя 1 · База · объём 20 км
Лёгкий 3 км6:39 · Z2
Лёгкий 3 км6:39 · Z2
Лёгкий 3 км6:39 · Z2
Лёгкий 3 км6:39 · Z2
Длинная 8 км6:39–6:59 · Z2
Первая неделя — база: спокойный объём, строим фундамент. Качество (темпо/интервалы/горки) подключается с 5-й недели. Сессии не привязаны к дням. Берём план?
✅ Согласовать✏️ Изменить план
✅ Согласовать
Принято. Каждое утро смотрю восстановление и спрашиваю «бежим или отдых», подставляю сессию из остатка недели. Три тяжёлых подряд не дам, длинную не потеряем — структуру держу я, день выбираешь ты.
Завтра в 07:00 — первое утро. До связи. 🏃
Каждый шаг детерминирован — ошибиться негде: где можно — узкие кнопки (дистанция, усилие, объём, длинная, дни, цель); где нужен ввод (дата, бег) — строгий формат с переспросом (видно на дате: «в конце августа» → «нужен формат ДД.ММ.ГГГГ»). Усилие описывает бот, человек только тапает цвет. В конце — план + «Согласовать / Изменить», а не молчаливый старт. Это бот, а не ChatGPT.
02 · Ветки диалога

Что будет, если нажать другую кнопку

Те же шаги, но другой выбор. Каждая ветка — реальный экран бота, числа из калькулятора.
ветка➕ Ввести пульс (вместо ощущений)
Как этот бег ощущался? Это определяет всю форму — выбери точно по описанию:

🟢 Спокойно — дышал носом, болтал бы свободно, мог бы ещё столько же
🟡 Бодро — дышал глубже, говорил фразами с паузами, ещё немного бы пробежал
🟠 Тяжело — дышал ртом, только короткие фразы, хватило бы ещё на 10–15 мин
🔴 Максимум — задыхался, говорить не мог, выложился как на гонке
🟢 Спокойно🟡 Бодро🟠 Тяжело🔴 Максимум➕ Ввести пульс
➕ Ввести пульс
Средний пульс за тот бег? Введи число, например 165.
Это точнее ощущений. Максимум прикину по возрасту, если не подключён WHOOP.
165
165 при максимуме ~184 — это порог (Z4). Форма VDOT 35.9 — совпало с ощущениями, но пульс убирает любую двоякость.
ветка✏️ Изменить план
Что в плане поправить? Меняю один рычаг и пересчитываю целиком:
Много тренировокТемп не мойДлинная большаяОднообразноМало/много бегаю
Темп не мой
Перемеряем точку А — новый бег или пульс. Все темпы плана сдвинутся под него, структура и периодизация останутся.
Новый бегВвести пульс
Новый бег
Принял новый замер → пересчитал темпы по всему плану. Длинная теперь 6:25/км вместо 6:39. Показать обновлённый план?
✅ Согласовать✏️ Ещё правка
веткаНевозможная цель — как бот отказывает
Цель: марафон из 3:30 (4:58/км) за 8 недель. Проверяю…
Так не дам обещать — это было бы враньём. Базу под марафон за 8 недель не построить безопасно: объём можно растить лишь ~10%/нед, иначе травма. Дело не в темпе — медленнее бежать не поможет.

Что реально:
📅 Сдвинуть дату марафона🏃 Взять полумарафон сейчас🏁 Марафон позже, просто добежать
🏃 Взять полумарафон сейчас
Вот это честно. Полумарафон за 8 недель с твоей базой — реально. Пересобираю под него.
03 · План как запланировано

Полный план — 10 недель

Это не выдумка для картинки — посчитано тем самым движком (engine.build_plan): фазы, рост объёма ≤10%/нед, дилоады, подводка, ротация качества. Видно, что недели РАЗНЫЕ.
НеделяФазаОбъёмДлиннаяКачество
Нед 1База20 км8 км— только база
Нед 2База22 км8 км— только база
Нед 3База24.2 км10 км— только база
Нед 4База17.7 км7.5 км— только базадилоад
Нед 5Развитие26.6 км11.5 кмИнтервалы
Нед 6Развитие29.2 км13.5 кмГорки
Нед 7Пик32.1 км16.5 кмИнтервалы
Нед 8Пик23.4 км11.5 км— только базадилоад
Нед 9Перед стартом22.5 км10 кмТемпоподводка
Нед 10Перед стартом16.1 км6 км— только базаподводка
База (1–4) строит фундамент; качество подключается в Развитии (5–6) и Пике (7–8) и ротируется (темпо/интервалы/горки/фартлек/прогрессия) — никаких «10 одинаковых». Дилоад каждую 4-ю неделю, подводка в конце.
04 · Виды тренировок

Что значит каждый тип

7 типов сессий с описанием и темпом/зоной при твоей форме (VDOT 35.9). Бот объясняет каждую по кнопке «Что за тренировка?».
ТипЧто этоТемп · зона
Лёгкийрасслабленный разговорный темп, аэробная база.6:39 · Z2
Длиннаясамый длинный бег недели, строит выносливость.6:39–6:59 · Z2
Темпопродолжительный отрезок в умеренно-тяжёлом темпе, поднимает порог.5:33 · Z4
Интервалыбыстрые отрезки через восстановление (напр. 6×400 м), скорость.5:05 · Z5
Фартлек«игра скоростью», чередование быстро/легко по самочувствию.5:33 · Z4
Горкиповторы в гору на усилии; сила и экономичность.по усилию · Z4
Прогрессиястарт легко → финиш быстрее; бежать быстро на усталых ногах.6:39→5:33 · Z3
05 · Якорь формы

Твой бег под микроскопом

4.5 км / 5:33 — один и тот же бег, 4 разных усилия. Видно, почему мы спрашиваем усилие.
Как ощущалсяПризнакФорма (VDOT)ЛёгкийТемпоИнтервал
🟢 Спокойноболтал бы свободно, мог бы ещё столько же45.25:334:374:14
🟡 Бодро, комфортноцелыми фразами с паузами, ещё немного бы пробежал37.66:255:214:54
🟠 Тяжелокороткие фразы, хватило бы ещё на 10–15 мин35.96:395:335:05
🔴 Максимумговорить не мог, как на гонке33.67:005:515:22
Тот же бег как 🟢 даёт VDOT 45 и быстрые темпы, как 🔴 — VDOT 34 и медленные. Один вопрос про усилие убирает всю двоякость.
06 · Согласованность

Петля самопроверки

Бег 4.5 км / 5:33 на усилии 🟠 «тяжело» → форма VDOT 35.9. Темпо-темп из этой формы = 5:33/км. Твой бег был 5:33/км. Разница 0 с — петля замкнулась: усилие, которое ты назвал, совпадает с темпами, которые получит план. Раньше тут была дыра (7:52 против 5:33).
07 · Честный вердикт

Выполнимость твоей цели — полумарафон Floripa

Форма VDOT 35.9 · база ~20 км/нед · длинная 10 км. Вердикт по двум замкам: форма + объём.
Цель темпа8 нед10 нед14 нед20 нед
просто добежать⛔ Нереалистичноне хватит базы — сдвинь дату⚠️ Амбициозно✅ Достижимо✅ Достижимо
6:00/км⛔ Нереалистичноне хватит базы — сдвинь дату⚠️ Амбициозно✅ Достижимо✅ Достижимо
5:45/км⛔ Нереалистичноне хватит базы — сдвинь дату⚠️ Амбициозно✅ Достижимо✅ Достижимо
5:30/км⛔ Нереалистичноне хватит базы — сдвинь дату⚠️ Амбициозно✅ Достижимо✅ Достижимо
5:00/км⛔ Нереалистичноне хватит базы — сдвинь дату⛔ Нереалистичнореально ~5:24/км⛔ Нереалистичнореально ~5:15/км⚠️ Амбициозно
4:30/км⛔ Нереалистичноне хватит базы — сдвинь дату⛔ Нереалистичнореально ~5:24/км⛔ Нереалистичнореально ~5:15/км⛔ Нереалистичнореально ~5:01/км
Система не обещает невозможного: где не хватает срока или базы — честно говорит, и предлагает реальную альтернативу. Сдвинешь срок или базу — пересчитается.
08 · Универсальность

Работает не только для тебя — вот планы, на которых я проверял

Без WHOOP и без Strava, на одних ответах. У каждого — своя точка А и точка Б, и свой честный вердикт.
Новичок✅ Достижимо
точка А С нуля: 3 км тяжело по 9:00 → VDOT 20.0 · E 10:20 (Z2) · T 8:45 (Z4) · I 8:04 (Z5)
точка Б полумарафон «просто добежать», 24 недели
Средний⚠️ Амбициозно
точка А 5 км комфортно по 6:00 → VDOT 34.1 · E 6:55 (Z2) · T 5:47 (Z4) · I 5:18 (Z5)
точка Б полумарафон из 5:30/км, 16 недель
Быстрый✅ Достижимо
точка А 10 км на пороге по 4:30 → VDOT 46.6 · E 5:25 (Z2) · T 4:30 (Z4) · I 4:07 (Z5)
точка Б марафон из 4:40/км (~3:17), 18 недель
Завышенная цель⛔ Нереалистично
точка А тот же средний бегун (VDOT 34.1)
точка Б марафон из 3:30 (4:58/км) за 8 недель
Система честно отказывает: не успеть нарастить базу (объём). Совет: сдвинуть дату или взять дистанцию короче.
09 · Твой ритм

Плавающее расписание — день за днём

Тренировки не привязаны к дням недели. Неделя — набор сессий; каждое утро ты сам решаешь «бежим или отдых», система предлагает оптимальную из остатка, ты можешь свапнуть.
УтроТвой выборЧто система предложилаПочему
День 1🏃 бежимДлинная 12 км (длинная)ценное вперёд
День 2😴 выбрал отдыхвосстановление
День 3😴 выбрал отдыхвосстановление
День 4🏃 бежимТемпо 6 км (качество)ценное вперёд
День 5🏃 бежимИнтервалы 5 км (качество)ценное вперёд
День 6🏃 бежимЛёгкий 5 км (лёгкая)после 2 жёстких — только лёгкое
День 7😴 выбрал отдыхвосстановление
Итог недели: сгорело: Лёгкий 5 км (лёгкие — буфер, не переносим). Длинная и качество защищены, лишнее лёгкое сгорает — без снежного кома в следующую неделю.
10 · Самоатака

Я пытался это сломать — вот что вернул калькулятор

Прежде чем защищать — атаковал сам. 132 проверки · все зелёные · ниже каждый кейс прогнан вживую.
АтакаВходЧто вернул калькулятор
Мусор на входе0 км / −время / «blazing»✓ ValueError — план не строится
Абсурдный бег3 км за 6:00 как «спокойно»✓ VDOT зажат потолком = 85 (макс 85)
Противоречие усилияодин бег 4.5/5:33 как 🟢→🔴✓ VDOT 45 → 38 → 36 → 34 (строго вниз)
Невозможная цель (темп)10 км из 35:00, база ок✓ нереалистично → совет ~5:10/км
Невозможная цель (объём)марафон за 5 нед с 10 км/нед✓ нереалистично → двигай дату (не «беги медленнее»)
«Просто добежать»цель без темпа✓ не падает → судит по объёму: достижимо
3 жёстких подряд?после 2 жёстких просим бег✓ предложит «easy» (лёгкое), жёсткое блокирует
В этом проходе нашёл и закрыл две дыры: (1) «просто добежать» без целевого темпа роняло проверку; (2) когда блокирует объём, система советовала «беги медленнее» — обман, базу медленным темпом не построить. Обе починены и закреплены тестами.
11 · Без зависимостей

Что НЕ требуется

Ни одна формула не требует WHOOP или Strava. Пульс — опциональный, более точный путь; если его нет, усилие берётся из описаний. WHOOP включён только у тебя — для сверки, что ты реально попадаешь в нужную зону. Будущий пользователь проходит онбординг на одних вопросах.
rAIner · детерминированный беговой калькулятор · 4 градации усилия · спек согласуется до релиза