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.
1. Архитектурные принципы
Заголовок раздела «1. Архитектурные принципы»1.1 Одна героическая метрика — Батарейка
Заголовок раздела «1.1 Одна героическая метрика — Батарейка»Вся продуктовая модель строится вокруг Батарейки (0–100%) — живой метрики, которая отражает состояние организма и обновляется в течение дня с каждой синхронизацией кольца (§5.4).
Это сознательный гибрид трёх школ:
- Oura — строгая наука, прозрачные контрибьюторы, одна цифра Readiness утром. Минус: не меняется днём, скучно.
- Welltory / Garmin / Ultrahuman — живая Battery / Dynamic Recovery. Минус: теряется «прогноз на день».
- Lumo — Батарейка живёт в течение дня + строка «−11% с пробуждения» сохраняет Oura Readiness в виде дельты.
1.2 Иерархия
Заголовок раздела «1.2 Иерархия»Герой (Батарейка) → Индикаторы (Стресс / Энергия / Здоровье) → Карточки (Сон / Энергия / Стресс / Активность / Цикл) → Raw-метрики (HRV / Пульс / RHR / SpO2 / Температура)Конкретная раскладка главного экрана — см. screens/03-home.md.
1.3 Принципы
Заголовок раздела «1.3 Принципы»- Одна цифра на вершине — Батарейка, всегда видна.
- Три квалитативных индикатора под ней — Стресс, Энергия, Здоровье. Без цифр, только ярлыки. Разные временные горизонты (минуты / часы / недели).
- Одна рекомендация — максимально конкретная, без спама.
- Пять карточек — Сон, Энергия, Стресс, Активность, Цикл (последняя опционально). У каждой — цифра, микрочарт, детальный экран.
- Прогрессивное раскрытие: индикаторы (ярлык) → карточки (цифра + микрочарт) → детальный экран (полные данные). Энергия и Стресс присутствуют на двух уровнях: как индикатор («сейчас») и как карточка («динамика за день с числом»).
- Базовые показатели — raw-данные с сенсоров для скептиков.
- Отказались от прежней Layer 0/1/2 архитектуры — заменили на «герой → индикаторы → карточки → raw».
1.4 Индикаторы — философия подачи
Заголовок раздела «1.4 Индикаторы — философия подачи»Почему без цифр:
- Главную цифру (99%) уже даёт Батарейка — больше героев не нужно.
- Индикаторы отвечают на квалитативный вопрос: «стресс высокий?», «энергия есть?», «организм устойчив?». Ярлык читается моментально.
- Числа провоцируют micro-optimization («хочу 55 а не 50») — вредное поведение на медленных метриках.
- Цифры доступны при провале внутрь индикатора или в соответствующей карточке ниже (для Стресса и Энергии).
- Аналогия: Oura именно так подаёт Resilience (Exceptional / Strong / Solid / Adequate / Limited).
Связь индикаторов с карточками:
- Стресс и Энергия имеют и индикатор, и карточку — прогрессивное раскрытие одного концепта. Индикатор = «сейчас», карточка = «динамика за день с числом».
- Здоровье — только индикатор, без карточки. Метрика медленная (±1–2% в день), ежедневная карточка была бы шумом. Детали — при провале внутрь индикатора (см. screens/05-health-detail.md).
2. Батарейка — главная метрика
Заголовок раздела «2. Батарейка — главная метрика»Батарейка — единственная сквозная метрика приложения (0–100%, обновляется с каждой синхронизацией).
- Семантика, зоны, формула — screens/04-battery-detail.md
- Строка «−11% с пробуждения» (UI героя главного экрана) — screens/03-home.md
Глава оставлена как якорь: сюда дописываем только сквозные принципы, если они появятся.
3. Рекомендация Lumo — логика
Заголовок раздела «3. Рекомендация Lumo — логика»3.1 Принципы
Заголовок раздела «3.1 Принципы»- Одна рекомендация на экране
- 1–2 предложения, максимально конкретная
- Тон: уверенный, нейтральный, без алармизма, без ⚠️
- Формат: заголовок + действие
3.2 Приоритизация
Заголовок раздела «3.2 Приоритизация»Приоритет 1: Паттерн болезни / переутомления (см. раздел 4)Приоритет 2: Здоровье < 40 (долгосрочный red flag)Приоритет 3: Батарейка < 40Приоритет 4: Стресс > 70 и держится > 2чПриоритет 5: Контекстуальный триггер (кофеин / алкоголь / тренировка)Приоритет 6: Конкретная метрика ниже нормыПриоритет 7: Позитивная / мотивирующая3.3 Адаптация по времени суток
Заголовок раздела «3.3 Адаптация по времени суток»Утро (06:00–11:00):
- По Энергии: «Отличный заряд — планируйте интенсивные задачи»
- По Сну: «Глубокого сна меньше обычного — сегодня лёгкий день»
День (11:00–19:00):
- По Стрессу: «Высокий стресс. Прогулка или дыхание по квадрату помогут»
- По движению: «Вы сидите 2+ часа — встаньте и разомнитесь»
Вечер (19:00–23:00):
- По подготовке ко сну: «Оптимальное время сна — 22:45»
- По контексту: «Кофеин активен до 21:30 — Deep Sleep может просесть»
4. Ранняя диагностика — фоновые паттерны
Заголовок раздела «4. Ранняя диагностика — фоновые паттерны»Модуль анализирует отклонения от baseline на горизонте 2–7 дней. Результат подаётся в Рекомендацию и создаёт контекстуальную карточку. История сработавших паттернов — screens/13-insights-history.md.
4.1 Начало болезни
Заголовок раздела «4.1 Начало болезни»Условие (2 из 3):
- Температура кожи ночью > личной нормы + 0.5°C (2+ дня)
- RHR > baseline + 5 bpm (2+ дня)
- HRV < baseline − 20% (2+ дня)
Подача:
🌡️ Возможное начало болезниТемпература выше вашей нормы 2 дня. Пульс +7 bpm, HRV −22%.Приоритет: сон, снижение нагрузки.4.2 Переутомление
Заголовок раздела «4.2 Переутомление»Условие:
- HRV < baseline − 15% (3+ дня)
- RHR > baseline + 3 bpm (3+ дня)
- Sleep Score < 70 (3+ дня)
Подача:
HRV и сон ниже нормы 4 дня.Уберите интенсивные тренировки на 2 дня.4.3 Хронический стресс
Заголовок раздела «4.3 Хронический стресс»Условие:
- Средний Стресс > 60 (7+ дней)
- HRV стабильно снижена (7+ дней)
- REM < 18% (7+ дней) — остаётся или уходит по итогам сверки стадий с Oura, см. §8
Подача:
Организм под нагрузкой уже неделю.Обратите внимание на качество отдыха.5. Данные кольца
Заголовок раздела «5. Данные кольца»Кольцо — Linktop SR28D. Факты о железе и что из них можно говорить публично — в Hardware Specification. Статусы интеграции в нашем коде — в формулах, §3.
Статусы в таблицах: SDK — следует из заголовков и гайдов SDK; код — уже читается приложением; замер — проверяем на сэмпле (план — hardware/vendors/XiamenLinktop/SR28D-VALIDATION.md).
5.1 Что кольцо пишет само
Заголовок раздела «5.1 Что кольцо пишет само»Кольцо копит замеры в памяти до 168 часов и отдаёт их при синхронизации. Пульс, HRV, дыхание и температура меряются одним расписанием, SpO2 — своим (§5.3).
| Данные | Откуда | Статус | Где в продукте |
|---|---|---|---|
| Пульс | История, каждая запись | код | Стресс, Батарейка, Сон, базовые показатели |
| HRV (RMSSD) | История; при низкой надёжности замера — «невалидно», а не число | код; точность — замер | Энергия, Стресс, Здоровье, Сон, базовые показатели |
| Межударный интервал | История, одно среднее на запись — ряда интервалов нет | код | Проверка HRV на синтетику |
| Стресс кольца (0–1) | История — SDK помечает поле устаревшим с прошивки V0.9.4; живой замер | замер | Кандидат для Стресса (§8) |
| SpO2 | История, своё расписание | код | Сон (среднее за ночь), базовые показатели |
| Частота дыхания | История, каждая запись; берём ночное среднее | код; точность — замер (валидация, A5) | Базовые показатели, Сон |
| Температура кожи | Каждая запись + раз в минуту во сне | код | Отклонение от личной нормы: Энергия, Цикл, ранняя диагностика, базовые показатели |
| Засыпание, пробуждение, время в постели | События сна кольца | код | Сон |
| Шаги, дистанция, калории, интенсивность | Активность за 5 минут; интенсивность — сидячий / низкая / средняя / высокая | код | Активность; Батарейка — нагрузка и сидение; Стресс — активный или сидячий отрезок |
| Тренировки | Режим тренировки, запускается из приложения: бег, ходьба, бассейн, открытая вода, велосипед, велотренажёр, йога, другое. Во время тренировки — пульс, каденс, скорость, MET, дистанция, калории | SDK | Активность; Батарейка — нагрузка; Стресс — снимает накопленный |
| Автоопределение активности | За 5 минут: ходьба / бег / плавание / другая ритмичная | SDK, замер | Активность — «автоопределение» только после проверки |
| Надето / на зарядке, заряд | Каждая запись | код | Честные пробелы на графиках, детектор посадки, предупреждение о разряде |
5.2 Что считает телефон
Заголовок раздела «5.2 Что считает телефон»| Данные | Как | Статус | Где в продукте |
|---|---|---|---|
| Фазы сна: бодрствование / лёгкий / глубокий / REM | Библиотека вендора SleepV4 по истории, пульсу и движению | код; каппа против Oura — замер | Сон, Энергия, Здоровье |
| Латентность, средний пульс и пульс покоя за ночь | SleepV4 | код; пульс покоя против Oura — замер | Сон, Энергия, базовые показатели |
| Стресс | Свой расчёт по RMSSD против личной базы или метрика кольца — решаем по данным (§8) | замер | Стресс, Батарейка, Здоровье |
| Батарейка, Энергия, Здоровье, Sleep Score | Наши формулы | — | см. формулы |
5.3 Расписание замеров
Заголовок раздела «5.3 Расписание замеров»Расписание задаём мы, заводское — только значение по умолчанию. Длительность и интервал замера задаются отдельно для бодрствования и сна, и отдельно для SpO2; интервал — до 18 часов.
| Профиль | Пульс / HRV / дыхание / температура | SpO2 | Зачем |
|---|---|---|---|
| Заводской | 15 с каждые 5 мин днём, 30 с каждые 5 мин во сне | раз в 2 ч | Точка отсчёта |
| Плотная ночь | 60 с каждые 2 мин во сне, раз в 15 мин днём | раз в час во сне | Если ночью много невалидного HRV |
| Экономный | раз в 10 мин во сне, раз в 15 мин днём | раз в 2 ч | Если не добираем 5 дней батареи |
Продуктовый профиль выбираем после замера батареи на нём (ось 2 валидации). Первым делом проверяем, что кольцо применяет записанное расписание: на X3 прошивка исполняла окно для SpO2 и игнорировала его для HRV.
5.4 Свежесть данных
Заголовок раздела «5.4 Свежесть данных»Кольцо не шлёт замеры само — данные приходят синхронизацией.
- Синк — при каждом открытии приложения. Фоновый синк — отдельная техническая проверка, не обещание.
- Батарейка, «стресс сейчас» и шаги верны на момент последнего синка. Если данным больше 15 минут — подпись «обновлено N мин назад».
- Синк может отбиться, пока кольцо делает автозамер или идёт тренировка, — повторяем через полминуты, пользователю ошибку не показываем.
- Если кольцо не синкали дольше 7 дней, старые данные перезаписываются: напоминаем синхронизироваться заранее.
5.5 Замеры по запросу
Заголовок раздела «5.5 Замеры по запросу»Работают только пока кольцо подключено.
| Замер | Что приходит | Где в UI | В формулы |
|---|---|---|---|
| Живой замер пульса | Пульс, RMSSD (если надёжность достаточная), межударный интервал, дыхание, стресс кольца, качество сигнала | «Измерить стресс сейчас» на экране Стресса | Нет (формулы, §6) |
| Живой замер SpO2 | SpO2 | Детальный экран SpO2 в базовых показателях | Нет |
| Разовая температура | Температура кожи | В UI не выводим: дневная кожная температура несравнима с ночной нормой | Нет |
| Сырой PPG + акселерометр | 25 / 50 / 100 Гц, в памяти кольца не хранится | Не используем. Кандидат для Cardio Age в v2 | Нет |
Какую формулу даёт живой замер для «стресса сейчас», зависит от того, приходит ли межударный интервал по каждому удару. Проверяется первым вечером с кольцом (валидация, A4).
5.6 Apple Health
Заголовок раздела «5.6 Apple Health»- Пишем шаги, дистанцию и активные калории кольца (5-минутными отрезками) и тренировки, начатые в Lumo.
- Читаем дневной итог шагов: Health сам убирает двойной счёт между iPhone, Watch и кольцом, и шаги не пропадают, пока кольцо на зарядке. Плюс то, что уже запрашиваем на онбординге: тренировки, рост и вес, пульс, сон.
- Активность считаем по минутам нагрузки: «средняя» и «высокая» интенсивность по кольцу, без кольца — темп от 100 шагов в минуту (от 130 — высокая). Ориентир — 150 минут средней нагрузки в неделю. Формула — в Активности.
- HRV в Health не пишем: там тип SDNN, у нас RMSSD — разные метрики.
5.7 Данные есть, пока не используем
Заголовок раздела «5.7 Данные есть, пока не используем»Кольцо отдаёт, но сценарии строим только после проверки на реальных данных. На экранах этого нет.
| Данные | Откуда | Что проверить |
|---|---|---|
| VO2max | Активность за 5 минут | Правдоподобие против Oura / Apple Watch |
| Кардиокогерентность (0–1) | История, живой замер | Реагирует ли на дыхательные практики |
| Дневной сон | Отдельный тип в SleepV4 | Ловит ли дневные 20–30 минут |
| Тревоги пульса и SpO2 | События кольца | Без вибрации это только push — нужен ли вообще |
| Режим замера «HRV/rr» | Недокументированный режим расписания | Вопрос вендору: непрерывный ли это ряд интервалов |
| Апноэ: AHI, ODI, T90 | SleepV4 | Не заявляем в любом случае — медицинская метрика |
6. Ограничения и дисклеймеры
Заголовок раздела «6. Ограничения и дисклеймеры»| Функция | Ограничение |
|---|---|
| ЭКГ / AFib | Нет — SR28D без ЭКГ |
| Давление, глюкоза | Нет, не заявляем |
| Вибрация | Нет — любые напоминания только через телефон |
| Температура | Кожная, на пальце. Показываем только отклонение от личной ночной нормы, как Oura и Whoop. Не градусник: никаких «у вас температура» |
| SpO2 | Точечные замеры по расписанию. Показываем среднее за ночь; эпизоды десатурации — нет |
| Ряд RR-интервалов | Фоном нет — одно среднее на запись. Собственный HRV возможен только из живого замера |
| Шаги | Не в реальном времени — на момент синка |
| GPS | Через телефон (Bluetooth) |
| Baseline Батарейки | Точен после 14 дней ношения |
| Здоровье | Появляется после 10 дней данных |
7. Экраны
Заголовок раздела «7. Экраны»Детальные спеки экранов — в 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 | Профиль и настройки (+ уведомления) |
8. Открытые вопросы
Заголовок раздела «8. Открытые вопросы»Что ещё на обсуждении:
- Стресс: метрика кольца или свой расчёт. Может подойти стресс кольца, может — свой по 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