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

Сон

Провал из карточки Сна на главном экране. Этот же файл держит определение метрики — формулу, контрибьютеры и пресентацию.

Скор 0–100 · общая длительность · средний ночной пульс · горизонтальный микро-таймлайн фаз.

┌──────────────────────────────────────────────────┐
│ │
│ 🌙 Сон │
│ │
│ 87 │ ← герой: Sleep Score
│ ✨ Восстанавливающий │ ярлык зоны
│ 7ч 23м · 23:14 → 06:37 │ под-строка
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ 💡 Глубокий сон выше нормы (24%) — │ │ ← рекомендация
│ │ ночь дала полноценный физический │ │ про эту ночь
│ │ ресет. День подходит для интенсивных │ │ конкретно
│ │ нагрузок. │ │
│ └──────────────────────────────────────────┘ │
│ │
│ ─────────────────────────────────────────────── │
│ ИДЕАЛЬНЫЙ СОН vs МОЙ СОН │
│ [двойная диаграмма распределения фаз — │
│ моя ночь рядом с целевым шаблоном по возрасту] │
│ │
│ ─────────────────────────────────────────────── │
│ КОНТРИБЬЮТЕРЫ │
│ Длительность ████████░░ 82 │
│ Эффективность █████████░ 91 │
│ Спокойствие ███████░░░ 74 │
│ REM ████████░░ 85 │
│ Глубокий █████████░ 93 │
│ Засыпание ██████████ 98 │
│ Тайминг ███████░░░ 72 │
│ │
│ ─────────────────────────────────────────────── │
│ ФАЗЫ СНА │
│ [гипнограмма 23:14 → 06:37: Awake/REM/Light/ │
│ Deep, ось времени, легенда снизу] │
│ │
│ ─────────────────────────────────────────────── │
│ КЛЮЧЕВЫЕ МЕТРИКИ │
│ Общий сон 7ч 23м │
│ В кровати 7ч 58м │
│ Эффективность 93% │
│ Пульс восстановления 52 уд/мин · 03:42 │
│ Долг сна (7 дней) −1ч 15м │
│ │
│ ─────────────────────────────────────────────── │
│ НИЗКОУРОВНЕВЫЕ МЕТРИКИ │
│ HRV ночью 64 мс (+5% от нормы) │
│ Пульс мин / средн 49 / 58 уд/мин │
│ SpO2 средний 96% │
│ │
└──────────────────────────────────────────────────┘

Одна цифра 0–100 — итог формулы. Под ней:

  • Ярлык зоны: 💎 Образцовый (90–100) / ✨ Восстанавливающий (75–89) / 💚 Достаточный (60–74) / 🟡 Лёгкий (45–59) / 🟠 Прерывистый (<45)
  • Под-строка: общая длительность · окно сна (засыпание → пробуждение)

Одно предложение, 1–2 строки. Не общий совет, а конкретная привязка к последней ночи: какой контрибьютер выстрелил выше/ниже нормы и что это значит для дня.

Триггеры (приоритет сверху вниз — берём первый сработавший):

  • Deep < 13% → «Глубокого сна мало, физическое восстановление неполное — день под лёгкую нагрузку»
  • REM < 18% → «REM ниже нормы — память и эмоциональный ресет недополучили, избегайте сложных решений до полудня»
  • Latency > 30 мин → «Долго засыпали — вечером уберите экраны и кофе после 14:00»
  • Efficiency < 85% → «Просыпались часто — проверьте температуру в спальне и поздние приёмы пищи»
  • Timing сдвинут > 1ч → «Время отхода ко сну плавает — циркадный ритм размывается»
  • Всё в норме → конкретная похвала про самый сильный контрибьютер

Логика «один совет → одно действие» — общая для всего приложения (см. 03-home.md).

Визуальное сравнение распределения фаз: «как должно быть для возраста/пола» рядом с «как было сегодня». Не ругаем — показываем форму.

Идеальный шаблон по возрастным когортам (упрощённо, источник — AASM):

  • 18–25: Deep 16–20%, REM 22–25%, Light 50–55%
  • 26–45: Deep 13–18%, REM 20–24%, Light 52–58%
  • 46–65: Deep 10–15%, REM 18–22%, Light 55–62%

Семь компонентов формулы, каждый — отдельный 0–100 балл. Тап по контрибьютеру → шторка с описанием, нормой и тем, что подтянуть.

КонтрибьютерЧто измеряетЦелевая нормаВес в формуле
ДлительностьОбщее время сна7–9ч0.25
ЭффективностьСон / время в кровати≥ 90%0.15
Спокойствие (Restfulness)WASO + микропробуждения + двигательная активностьWASO < 20 мин0.10
REMДоля REM в общем сне20–25%0.20
ГлубокийДоля Deep в общем сне13–23%0.20
Засыпание (Latency)Время от ложусь → засыпаю10–20 мин0.05
ТаймингСтабильность времени отхода ко сну (σ за 7 дней)σ < 30 мин0.05

Спокойствие — то, что Oura называет Restfulness: интегрирует WASO, число микропробуждений и двигательную активность ночью в один скор. Клинический маркер фрагментации сна.

Тайминг — про регулярность, не про «правильное» время. Сова с устойчивым 02:00 → 10:00 получает высокий тайминг.

Стандартный таймлайн фаз: Awake / REM / Light / Deep по оси времени. Ось — реальные часы сна (не «от 0»), легенда снизу. Тап на участок — длительность фазы и доля.

МетрикаЧто этоЗачем
Общий сонСумма Light + Deep + REMБазовая длительность
В кроватиОт ложусь → встаюВключает latency и WASO
ЭффективностьОбщий сон / В кровати< 85% — фрагментация
Пульс восстановленияМинимальный ночной HR + время его достиженияЧем раньше и ниже, тем глубже парасимпатический отдых. Норма — минимум в первой половине ночи
Долг снаКумулятивный дефицит за 7 дней vs персональная цельПревышение 5ч за неделю — фактор риска для иммунитета и решений

Персональная цель сна — берётся из онбординга, корректируется по факту: если 14 дней подряд естественно спите 7ч и Sleep Score ≥ 80, цель = 7ч. Не навязываем «надо 8».

Пульс восстановления ≠ Heart Rate Recovery после нагрузки. Здесь это абсолютный минимум HR за ночь и его тайминг — индикатор глубины ночного восстановления. Если минимум смещается к утру — ВНС не успевает переключиться, сигнал стресса/алкоголя/позднего ужина.

Сворачиваемый блок «Подробности» — для тех, кто хочет цифры под капотом. Не участвуют в формуле напрямую (HRV/RHR кормят Энергию, см. 07-energy-detail.md), но видны здесь для контекста ночи.

МетрикаИсточникПодача
HRV ночьюRMSSD из RR-интервалов в фазе глубокого снаАбсолютное значение + дельта от 14-дневного baseline
Пульс мин / среднийМинимальный и средний HR за окно снаДве цифры в строке
SpO2 среднийСредняя сатурация за ночьОдна цифра + флаг, если < 92%

Дополнительно в этом блоке (если данные есть):

  • Температура: дельта ночной температуры от персонального baseline
  • Частота дыхания: средняя за ночь
  • Эпизоды десатурации SpO2 < 90% (маркер апноэ — без диагноза, как фактический показатель)
Sleep Score =
Длительность × 0.25 (цель: 7–9ч, либо персональная цель)
Глубокий % × 0.20 (цель: 13–23%)
REM % × 0.20 (цель: 20–25%)
Эффективность × 0.15
Спокойствие × 0.10 (WASO + фрагментация)
Тайминг × 0.05 (σ времени отхода за 7 дней)
Засыпание × 0.05 (latency)

Каждый компонент сначала нормализуется в 0–100 относительно своей нормы (плавная функция, не cliff), потом суммируется по весам.

  • День / Неделя / Месяц
  • Месячный режим — календарная тепловая карта (цвет ячейки = Sleep Score)
  • Тап на день в истории → этот же экран за тот день
  • До 7 ночей — Долг сна и Тайминг скрыты (плашка «Накапливаем данные»)
  • До 14 ночей — HRV-дельта и Пульс восстановления показаны без сравнения с baseline
  • Идеальный шаблон фаз доступен сразу (зависит только от возраста, не от истории)
  • QCSleepModel — фазы, длительность, latency, WASO
  • QCSchedualHeartRateModel — ночной HR (мин/средн, кривая для пульса восстановления)
  • QCHRVModel — HRV в фазе глубокого сна
  • QCBloodOxygenModel — SpO2 ночью
  • QCThreeValueTemperatureModel — ночная температура
  • QCBreatheRateModel — частота дыхания (если доступна)
  • Возрастные когорты для «идеального сна» — упрощённая разбивка из AASM. Нужно ли давать пользователю менять её вручную (например, для хронических сов)?
  • Восприятие «Долга сна» — для части аудитории отрицательная цифра демотивирует. Возможно, прятать при долге < 30 мин и показывать только тренд за неделю.
  • Спокойствие vs WASO — термин «Restfulness/Спокойствие» более тёплый, но менее технически точный. Проверить на custdev, не путает ли с «расслабленностью» из индикатора Стресса.
  • Пульс восстановления как отдельный контрибьютер? — сейчас он только в ключевых метриках. Если данные покажут сильную корреляцию с субъективным восстановлением — может стать 8-м контрибьютером.