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

Product Specification

Версия: 5.0 Дата: 2026-09-25 Кольцо: Linktop SR28D — см. Hardware Specification

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

Что нового в v5. Спека v4.1 была написана под SDK кольца QC. v5 переводит её на Linktop SR28D: новая карта данных (§5), замеры по запросу, расписание, свежесть данных, Apple Health и данные, которые кольцо отдаёт, но мы пока не используем. Ограничения (§6) и решения (§8) — по пересмотру 25.09.


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

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

  • 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%, обновляется с каждой синхронизацией).

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


  • Одна рекомендация на экране
  • 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):

  • Температура кожи ночью > личной нормы + 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+ дней) — остаётся или уходит по итогам сверки стадий с Oura, см. §8

Подача:

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

Кольцо — Linktop SR28D. Факты о железе и что из них можно говорить публично — в Hardware Specification. Статусы интеграции в нашем коде — в формулах, §3.

Статусы в таблицах: SDK — следует из заголовков и гайдов SDK; код — уже читается приложением; замер — проверяем на сэмпле (план — hardware/vendors/XiamenLinktop/SR28D-VALIDATION.md).

Кольцо копит замеры в памяти до 168 часов и отдаёт их при синхронизации. Пульс, HRV, дыхание и температура меряются одним расписанием, SpO2 — своим (§5.3).

ДанныеОткудаСтатусГде в продукте
ПульсИстория, каждая записькодСтресс, Батарейка, Сон, базовые показатели
HRV (RMSSD)История; при низкой надёжности замера — «невалидно», а не числокод; точность — замерЭнергия, Стресс, Здоровье, Сон, базовые показатели
Межударный интервалИстория, одно среднее на запись — ряда интервалов неткодПроверка HRV на синтетику
Стресс кольца (0–1)История — SDK помечает поле устаревшим с прошивки V0.9.4; живой замерзамерКандидат для Стресса (§8)
SpO2История, своё расписаниекодСон (среднее за ночь), базовые показатели
Частота дыханияИстория, каждая запись; берём ночное среднеекод; точность — замер (валидация, A5)Базовые показатели, Сон
Температура кожиКаждая запись + раз в минуту во снекодОтклонение от личной нормы: Энергия, Цикл, ранняя диагностика, базовые показатели
Засыпание, пробуждение, время в постелиСобытия сна кольцакодСон
Шаги, дистанция, калории, интенсивностьАктивность за 5 минут; интенсивность — сидячий / низкая / средняя / высокаякодАктивность; Батарейка — нагрузка и сидение; Стресс — активный или сидячий отрезок
ТренировкиРежим тренировки, запускается из приложения: бег, ходьба, бассейн, открытая вода, велосипед, велотренажёр, йога, другое. Во время тренировки — пульс, каденс, скорость, MET, дистанция, калорииSDKАктивность; Батарейка — нагрузка; Стресс — снимает накопленный
Автоопределение активностиЗа 5 минут: ходьба / бег / плавание / другая ритмичнаяSDK, замерАктивность — «автоопределение» только после проверки
Надето / на зарядке, зарядКаждая записькодЧестные пробелы на графиках, детектор посадки, предупреждение о разряде
ДанныеКакСтатусГде в продукте
Фазы сна: бодрствование / лёгкий / глубокий / REMБиблиотека вендора SleepV4 по истории, пульсу и движениюкод; каппа против Oura — замерСон, Энергия, Здоровье
Латентность, средний пульс и пульс покоя за ночьSleepV4код; пульс покоя против Oura — замерСон, Энергия, базовые показатели
СтрессСвой расчёт по RMSSD против личной базы или метрика кольца — решаем по данным (§8)замерСтресс, Батарейка, Здоровье
Батарейка, Энергия, Здоровье, Sleep ScoreНаши формулы—см. формулы

Расписание задаём мы, заводское — только значение по умолчанию. Длительность и интервал замера задаются отдельно для бодрствования и сна, и отдельно для SpO2; интервал — до 18 часов.

ПрофильПульс / HRV / дыхание / температураSpO2Зачем
Заводской15 с каждые 5 мин днём, 30 с каждые 5 мин во снераз в 2 чТочка отсчёта
Плотная ночь60 с каждые 2 мин во сне, раз в 15 мин днёмраз в час во снеЕсли ночью много невалидного HRV
Экономныйраз в 10 мин во сне, раз в 15 мин днёмраз в 2 чЕсли не добираем 5 дней батареи

Продуктовый профиль выбираем после замера батареи на нём (ось 2 валидации). Первым делом проверяем, что кольцо применяет записанное расписание: на X3 прошивка исполняла окно для SpO2 и игнорировала его для HRV.

Кольцо не шлёт замеры само — данные приходят синхронизацией.

  • Синк — при каждом открытии приложения. Фоновый синк — отдельная техническая проверка, не обещание.
  • Батарейка, «стресс сейчас» и шаги верны на момент последнего синка. Если данным больше 15 минут — подпись «обновлено N мин назад».
  • Синк может отбиться, пока кольцо делает автозамер или идёт тренировка, — повторяем через полминуты, пользователю ошибку не показываем.
  • Если кольцо не синкали дольше 7 дней, старые данные перезаписываются: напоминаем синхронизироваться заранее.

Работают только пока кольцо подключено.

ЗамерЧто приходитГде в UIВ формулы
Живой замер пульсаПульс, RMSSD (если надёжность достаточная), межударный интервал, дыхание, стресс кольца, качество сигнала«Измерить стресс сейчас» на экране СтрессаНет (формулы, §6)
Живой замер SpO2SpO2Детальный экран SpO2 в базовых показателяхНет
Разовая температураТемпература кожиВ UI не выводим: дневная кожная температура несравнима с ночной нормойНет
Сырой PPG + акселерометр25 / 50 / 100 Гц, в памяти кольца не хранитсяНе используем. Кандидат для Cardio Age в v2Нет

Какую формулу даёт живой замер для «стресса сейчас», зависит от того, приходит ли межударный интервал по каждому удару. Проверяется первым вечером с кольцом (валидация, A4).

  • Пишем шаги, дистанцию и активные калории кольца (5-минутными отрезками) и тренировки, начатые в Lumo.
  • Читаем дневной итог шагов: Health сам убирает двойной счёт между iPhone, Watch и кольцом, и шаги не пропадают, пока кольцо на зарядке. Плюс то, что уже запрашиваем на онбординге: тренировки, рост и вес, пульс, сон.
  • Активность считаем по минутам нагрузки: «средняя» и «высокая» интенсивность по кольцу, без кольца — темп от 100 шагов в минуту (от 130 — высокая). Ориентир — 150 минут средней нагрузки в неделю. Формула — в Активности.
  • HRV в Health не пишем: там тип SDNN, у нас RMSSD — разные метрики.

Кольцо отдаёт, но сценарии строим только после проверки на реальных данных. На экранах этого нет.

ДанныеОткудаЧто проверить
VO2maxАктивность за 5 минутПравдоподобие против Oura / Apple Watch
Кардиокогерентность (0–1)История, живой замерРеагирует ли на дыхательные практики
Дневной сонОтдельный тип в SleepV4Ловит ли дневные 20–30 минут
Тревоги пульса и SpO2События кольцаБез вибрации это только push — нужен ли вообще
Режим замера «HRV/rr»Недокументированный режим расписанияВопрос вендору: непрерывный ли это ряд интервалов
Апноэ: AHI, ODI, T90SleepV4Не заявляем в любом случае — медицинская метрика

ФункцияОграничение
ЭКГ / AFibНет — SR28D без ЭКГ
Давление, глюкозаНет, не заявляем
ВибрацияНет — любые напоминания только через телефон
ТемператураКожная, на пальце. Показываем только отклонение от личной ночной нормы, как Oura и Whoop. Не градусник: никаких «у вас температура»
SpO2Точечные замеры по расписанию. Показываем среднее за ночь; эпизоды десатурации — нет
Ряд RR-интерваловФоном нет — одно среднее на запись. Собственный HRV возможен только из живого замера
ШагиНе в реальном времени — на момент синка
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Детальный экран «Стресс» (+ замер по запросу)
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Профиль и настройки (+ уведомления)

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

  • Стресс: метрика кольца или свой расчёт. Может подойти стресс кольца, может — свой по RMSSD против личной базы. Решаем по данным сэмпла: минимум 7 дней, три ряда — кольцо, свой, Oura daily_stress (валидация, A4). От этого же зависит формула и шкала «Стресс сейчас».
  • Фазы сна в формулах. Вес REM и глубокого сна в Sleep Score (0.40) и условие по REM в §4.3 — решаем после сверки сна с Oura. Фазы на экране показываем в любом случае.
  • Где живёт экран кольца — вместо трёх точек в шапке главного или внутри их меню.
  • «Здоровье» как название — возможно слишком претенциозное для медленной метрики. Альтернативы: «Резерв», «Форма», «Устойчивость». У Oura — «Resilience». Нужно custdev-тестирование.
  • Финальные ярлыки индикаторов (Стресс / Энергия / Здоровье) — текущие варианты драфтовые, надо прогнать через редактуру и тесты читаемости.
  • Порядок карточек в блоке 4 — сейчас Сон → Энергия → Стресс → Активность → Цикл. Возможно, утром Энергия должна быть первой, а днём Стресс поднимается выше. Динамический порядок по времени суток?
  • Риск визуального дубля — Стресс и Энергия присутствуют в двух местах (индикатор Батарейки + карточка). Обязательно проверить на custdev: не путает ли пользователя. Если путает — упростим до одного места.
  • Дневник (Journal) — единая точка для логов и корреляций. Пока закрываем минимально (кнопка «+» и контекстуальные карточки), полноценный Дневник — v1.1.
  • Cardiovascular Age / Chronotype — slow-metrics, добавляем в v2, когда у пользователей накопится 90+ дней данных.
  • ✅ Верхняя граница Батарейки — 100%, «прозапас» скрыт внутри (не показываем >100%)
  • ✅ Целевые шаги по умолчанию — 8 000, с подтягиванием из HealthKit / Google Fit
  • ✅ Индикаторы Батарейки — квалитативные ярлыки, без цифр
  • ✅ 3 индикатора Батарейки — Стресс (сейчас) / Энергия (сегодня) / Здоровье (недели)
  • ✅ Readiness / Recovery не разделяем — это одна концепция под именем «Энергия»
  • ✅ 5 карточек в блоке 4 — Сон, Энергия, Стресс, Активность, Цикл (последняя опционально)
  • ✅ Стресс и Энергия — и индикатор, и карточка (прогрессивное раскрытие). Здоровье — только индикатор, без карточки.
  • ✅ Тренировки — внутри карточки Активности, не отдельной карточкой (решает проблему пустой карточки для неактивных пользователей)
  • ✅ Базовые показатели v1 — как на макете главного: HRV, Пульс покоя (RHR), Частота дыхания, SpO2, Температура (отклонение от нормы). Пульс за день и его ручной замер — внутри детального экрана пульса
  • ✅ Стресс: фоновый расчёт — путь Oura/Garmin, против личной базы. Замер «сейчас» — живой замер пульса на экране Стресса
  • ✅ Вход — Sign in with Apple или регистрация.
  • ✅ 2026-09-24: фазы сна обязательны; стресс и цикл в продукте
  • ✅ 2026-09-25: кольцо — Linktop SR28D (карта данных §5)
  • ✅ 2026-09-25: температура — как Oura и Whoop: только отклонение от личной ночной нормы
  • ✅ 2026-09-25: давление, глюкоза, вибрация — убраны; шаги в реальном времени не нужны
  • ✅ 2026-09-25: расписание замеров наше, продуктовый профиль — после замера батареи (§5.3)
  • ✅ 2026-09-25: синк при открытии приложения, «каждые 5 минут» не обещаем (§5.4)
  • ✅ 2026-09-25: SpO2 ночью — только среднее, без эпизодов десатурации
  • ✅ 2026-09-25: активность — через Apple Health и минуты нагрузки (§5.6)
  • ✅ 2026-09-25: цикл — ручной ввод, прогноз по календарю, температура как подтверждение; фертильное окно в v1 не показываем
  • ✅ 2026-09-25: онбординг пишет профиль в кольцо (пол, возраст, рост, вес); ведущую руку не спрашиваем — кольцу она не нужна
  • ✅ 2026-09-25: новые данные кольца — сначала проверка на реальных данных, потом сценарии (§5.7)
  • ✅ 2026-09-26: частота дыхания — в UI остаётся (как на макете), точность проверяем в валидации кольца (A5); не сойдётся с Oura — скрываем

Версия: 5.0 Последнее обновление: 2026-09-25