Перейти к содержимому

Product Specification

Версия: 4.1 Дата: 2026-04-24

Этот документ — системный слой продуктовой спеки: архитектурные принципы, сквозные метрики (Батарейка), логика рекомендаций, ранняя диагностика, карта SDK и ограничения. Экраны описаны отдельно в screens/.


Вся продуктовая модель строится вокруг Батарейки (0–100%) — живой метрики, которая отражает состояние организма в моменте и обновляется в реальном времени в течение дня.

Это сознательный гибрид трёх школ:

  • Oura — строгая наука, прозрачные контрибьюторы, одна цифра Readiness утром. Минус: не меняется днём, скучно.
  • Welltory / Garmin / Ultrahuman — живая Battery / Dynamic Recovery. Минус: теряется «прогноз на день».
  • Lumo — Батарейка живёт в течение дня + строка «−11% с пробуждения» сохраняет Oura Readiness в виде дельты.
Герой (Батарейка)
→ Индикаторы (Стресс / Энергия / Здоровье)
→ Карточки (Сон / Энергия / Стресс / Активность / Цикл)
→ Raw-метрики (HRV / Пульс / RHR / SpO2 / Температура)

Конкретная раскладка главного экрана — см. screens/03-home.md.

  1. Одна цифра на вершине — Батарейка, всегда видна.
  2. Три квалитативных индикатора под ней — Стресс, Энергия, Здоровье. Без цифр, только ярлыки. Разные временные горизонты (минуты / часы / недели).
  3. Одна рекомендация — максимально конкретная, без спама.
  4. Пять карточек — Сон, Энергия, Стресс, Активность, Цикл (последняя опционально). У каждой — цифра, микрочарт, детальный экран.
  5. Прогрессивное раскрытие: индикаторы (ярлык) → карточки (цифра + микрочарт) → детальный экран (полные данные). Энергия и Стресс присутствуют на двух уровнях: как индикатор («сейчас») и как карточка («динамика за день с числом»).
  6. Базовые показатели — raw-данные с сенсоров для скептиков.
  7. Отказались от прежней Layer 0/1/2 архитектуры — заменили на «герой → индикаторы → карточки → raw».

Почему без цифр:

  • Главную цифру (99%) уже даёт Батарейка — больше героев не нужно.
  • Индикаторы отвечают на квалитативный вопрос: «стресс высокий?», «энергия есть?», «организм устойчив?». Ярлык читается моментально.
  • Числа провоцируют micro-optimization («хочу 55 а не 50») — вредное поведение на медленных метриках.
  • Цифры доступны при провале внутрь индикатора или в соответствующей карточке ниже (для Стресса и Энергии).
  • Аналогия: Oura именно так подаёт Resilience (Exceptional / Strong / Solid / Adequate / Limited).

Связь индикаторов с карточками:

  • Стресс и Энергия имеют и индикатор, и карточку — прогрессивное раскрытие одного концепта. Индикатор = «сейчас», карточка = «динамика за день с числом».
  • Здоровье — только индикатор, без карточки. Метрика медленная (±1–2% в день), ежедневная карточка была бы шумом. Детали — при провале внутрь индикатора (см. screens/05-health-detail.md).

Батарейка — единственная сквозная метрика приложения (0–100%, live-обновление).

Глава оставлена как якорь: сюда дописываем только сквозные принципы, если они появятся.


  • Одна рекомендация на экране
  • 1–2 предложения, максимально конкретная
  • Тон: уверенный, нейтральный, без алармизма, без ⚠️
  • Формат: заголовок + действие
Приоритет 1: Паттерн болезни / переутомления (см. раздел 4)
Приоритет 2: Здоровье < 40 (долгосрочный red flag)
Приоритет 3: Батарейка < 40
Приоритет 4: Стресс > 70 и держится > 2ч
Приоритет 5: Контекстуальный триггер (кофеин / алкоголь / тренировка)
Приоритет 6: Конкретная метрика ниже нормы
Приоритет 7: Позитивная / мотивирующая

Утро (06:00–11:00):

  • По Энергии: «Отличный заряд — планируйте интенсивные задачи»
  • По Сну: «Глубокого сна меньше обычного — сегодня лёгкий день»

День (11:00–19:00):

  • По Стрессу: «Высокий стресс. Прогулка или дыхание по квадрату помогут»
  • По движению: «Вы сидите 2+ часа — встаньте и разомнитесь»

Вечер (19:00–23:00):

  • По подготовке ко сну: «Оптимальное время сна — 22:45»
  • По контексту: «Кофеин активен до 21:30 — Deep Sleep может просесть»

Модуль анализирует отклонения от baseline на горизонте 2–7 дней. Результат подаётся в Рекомендацию и создаёт контекстуальную карточку. История сработавших паттернов — screens/13-insights-history.md.

Условие (2 из 3):

  • Температура > baseline + 0.5°C (2+ дня)
  • RHR > baseline + 5 bpm (2+ дня)
  • HRV < baseline − 20% (2+ дня)

Подача:

🌡️ Возможное начало болезни
Температура выше нормы 2 дня. Пульс +7 bpm, HRV −22%.
Приоритет: сон, снижение нагрузки.

Условие:

  • HRV < baseline − 15% (3+ дня)
  • RHR > baseline + 3 bpm (3+ дня)
  • Sleep Score < 70 (3+ дня)

Подача:

HRV и сон ниже нормы 4 дня.
Уберите интенсивные тренировки на 2 дня.

Условие:

  • Средний Стресс > 60 (7+ дней)
  • HRV стабильно снижена (7+ дней)
  • REM < 18% (7+ дней)

Подача:

Организм под нагрузкой уже неделю.
Обратите внимание на качество отдыха.

МетрикаSDK объектРежим
Фазы снаQCSleepModelНочной batch
Пульс фоновыйQCSchedualHeartRateModelКаждые 5 мин
Пульс real-timerealTimeHeartRateСтриминг
Пульс покоя (RHR)производная от QCSchedualHeartRateModelНочной batch
HRVQCHRVModelДневной batch
HRV + RR (on-demand)QCRealOneKeyMeasureHeartRateModelПо запросу
SpO2QCBloodOxygenModelНочью + manual
ТемператураQCThreeValueTemperatureModelИнтервально
Стресс (raw)QCStressModelИнтервально
Шаги / активностьQCSportModelBatch
Шаги real-timecurrentStepInfoСтриминг
ТренировкиQCExerciseModelПо событию
СидячестьQCSedentaryModelПо событию
ДавлениеQCBloodPressureModelScheduled + manual
ГлюкозаQCBloodGlucoseModelScheduled + manual

ФункцияОграничение
ДавлениеPTT без манжеты, погрешность ±10–15 mmHg
ГлюкозаОптический метод, не замена CGM
ЭКГ / AFibНет — отсутствует электрод
Дыхание (ЧДД)V2 — требует доступа к непрерывным RR за ночь (запрос к вендору) или raw PPG
GPSЧерез телефон (Bluetooth)
Baseline БатарейкиТочен после 14 дней ношения
ЗдоровьеПоявляется после 10 дней данных

Детальные спеки экранов — в screens/:

ФайлЭкран
screens/00-auth.mdАвторизация (Apple / регистрация)
screens/01-onboarding.mdОнбординг (профиль)
screens/02-ring-sync.mdСинхронизация с кольцом
screens/03-home.mdГлавный экран
screens/04-battery-detail.mdДетальный экран Батарейки
screens/05-health-detail.mdДетальный экран «Здоровье»
screens/06-sleep-detail.mdДетальный экран «Сон»
screens/07-energy-detail.mdДетальный экран «Энергия»
screens/08-stress-detail.mdДетальный экран «Стресс» (+ on-demand RR)
screens/09-activity-detail.mdДетальный экран «Активность» (+ live-тренировка)
screens/10-cycle-detail.mdДетальный экран «Цикл»
screens/11-raw-metrics.mdБазовые показатели
screens/12-context-logging.mdКонтекстуальные карточки и логирование
screens/13-insights-history.mdИстория инсайтов
screens/14-profile-settings.mdПрофиль и настройки (+ уведомления)

Что ещё на обсуждении:

  • «Здоровье» как название — возможно слишком претенциозное для медленной метрики. Альтернативы: «Резерв», «Форма», «Устойчивость». У Oura — «Resilience». Нужно custdev-тестирование.
  • Финальные ярлыки индикаторов (Стресс / Энергия / Здоровье) — текущие варианты драфтовые, надо прогнать через редактуру и тесты читаемости.
  • Порядок карточек в блоке 4 — сейчас Сон → Энергия → Стресс → Активность → Цикл. Возможно, утром Энергия должна быть первой, а днём Стресс поднимается выше. Динамический порядок по времени суток?
  • Риск визуального дубля — Стресс и Энергия присутствуют в двух местах (индикатор Батарейки + карточка). Обязательно проверить на custdev: не путает ли пользователя. Если путает — упростим до одного места.
  • Формула on-demand стресса — кандидат Baevsky SI, окончательно не решили.
  • Дневник (Journal) — единая точка для логов и корреляций. Пока закрываем минимально (кнопка «+» и контекстуальные карточки), полноценный Дневник — v1.1.
  • Cardiovascular Age / Chronotype — slow-metrics, добавляем в v2, когда у пользователей накопится 90+ дней данных.
  • ✅ Верхняя граница Батарейки — 100%, «прозапас» скрыт внутри (не показываем >100%)
  • ✅ Целевые шаги по умолчанию — 8 000, с подтягиванием из HealthKit / Google Fit
  • ✅ Ведущая рука — спрашиваем при онбординге (для шагомера и PPG)
  • ✅ Индикаторы Батарейки — квалитативные ярлыки, без цифр
  • 3 индикатора Батарейки — Стресс (сейчас) / Энергия (сегодня) / Здоровье (недели)
  • ✅ Readiness / Recovery не разделяем — это одна концепция под именем «Энергия»
  • 5 карточек в блоке 4 — Сон, Энергия, Стресс, Активность, Цикл (последняя опционально)
  • ✅ Стресс и Энергия — и индикатор, и карточка (прогрессивное раскрытие). Здоровье — только индикатор, без карточки.
  • ✅ Тренировки — внутри карточки Активности, не отдельной карточкой (решает проблему пустой карточки для неактивных пользователей)
  • ✅ Базовые показатели v1 — HRV, Пульс, Пульс покоя (RHR), SpO2, Температура. Дыхание отложено в v2 (нет непрерывных RR в текущем SDK)
  • ✅ Стресс: фоновый расчёт — путь Oura/Garmin (HRV vs personal baseline). On-demand измерение через RR — на детальном экране Стресса.
  • ✅ Вход — Sign in with Apple или регистрация.

Версия: 4.1 Последнее обновление: 2026-04-24