Наблюдения
До трёх строк в статистике. Не советы и не оценки — только то, что видно в ваших же отметках.

Правило тона
Приложение пообещало в онбординге, что не будет говорить, как надо жить. Каждая карточка обязана это обещание держать.
Поэтому наблюдение сообщает факт и на этом останавливается. Ни «стоит», ни «попробуйте», ни «вы слишком мало». Что с этим делать — не дело приложения.
Сравните: «В будни ты инвестируешь в приоритеты 2,5 ч в день, в выходные — 40 м» — это наблюдение. «Уделяйте больше времени в выходные» было бы советом, и такой строки в приложении нет.
Какие бывают
| Наблюдение | О чём |
|---|---|
| Заряд и приоритет | «Когда заряд низкий, X забирает 13 м в день. Когда полный — 43 м» |
| Неделя против прошлой | «На X за неделю ушло 11,5 ч. На прошлой неделе было 4 ч» |
| Затих | «X не отмечался 9 дней, хотя за месяц набрал 6 ч» |
| Концентрация | «80 % месяца сложились из 6 дней. Всего с отметками — 21 день» |
| Будни и выходные | «В будни ты инвестируешь в приоритеты 2,5 ч в день, в выходные — 40 м» |
| Время разряда | «Заряд обычно садится „на нуле“ около 06:37» |
Окна фиксированы
Наблюдения не следуют переключателю периода. У каждого своё окно, и оно не меняется вместе с выбором наверху экрана.
Иначе одна и та же карточка означала бы разное в зависимости от того, что выбрано выше, и «стало вдвое чаще» перестало бы быть проверяемым утверждением.
Когда наблюдение молчит
У каждого свой порог, ниже которого оно не показывается вовсе — на экране не остаётся даже пустого места. Все пороги про одно: утверждение о жизни нельзя делать на двух днях истории.
Конкретные числа — в «Пределах».
Показываются максимум три. Больше трёх подряд читать перестают, и сильное тонет в проходном.
Как выключить
Тумблер «Наблюдения» в настройках. Данных за ним нет: наблюдения не хранятся, они вычисляются каждый раз заново — выключение просто убирает блок с экрана.
Рядом
Статистика · Модули · Пределы и лимиты
Как это работает внутри
- Тексты и пороги —
src/domain/insights.ts, строки — с префиксомins.вsrc/i18n/ru.ts, покрытоsrc/domain/insights.test.ts. - Считается всё из готового
Derived(src/achievements/derive.ts) — того же предпосчёта, который обслуживает достижения. Второй проход по истории ради тех же чисел был бы платой ни за что. - Наблюдение, для которого данных не хватило, возвращает
undefined, а не строку-заглушку: молчащая карточка честнее уверенной и пустой. - Медиана, а не среднее, для времени разряда — иначе одна отметка в четыре утра утащила бы вечернюю картину.
- Окно «будни против выходных» подрезается по первой записи: пустые дни до начала истории занижали бы оба средних.