Hydration on by default + diagnostics + reliable alarm; calorie bank; balance chart scale
Hydration reminder: ON by default (native defaults on when hydration.json is missing; JS writes the default config at startup; the profile toggle is checked by default) so it works out of the box on a ride instead of needing a hidden toggle. Adds hydration_log.jsonl diagnostics and swaps the ToneGenerator for the real alarm ringtone via MediaPlayer on STREAM_ALARM, with the alarm volume forced to max for the alert, so it is actually audible. Calorie bank: cumulative sum of daily balance over the window (+kg) in the day summary, answering "how much to eat up/under". Balance chart (weight vs balance) y-axis now floats symmetrically about 0 (±500 floor, no fixed ceiling) so one hard day no longer flattens the line.
This commit is contained in:
parent
9a8ef04230
commit
762221d186
7 changed files with 126 additions and 27 deletions
|
|
@ -0,0 +1,47 @@
|
|||
# 2026-10-26 - Гидратация (починка), банк калорий, фикс шкалы графика, разбор заезда 118км
|
||||
|
||||
## Гидратация: почему не сработала на 118км и что исправлено
|
||||
Сигнал не прозвучал за весь заезд. Причина №1: фича была ВЫКЛЮЧЕНА - требовала найти скрытую
|
||||
галку в профиле, о которой пользователь не знал. Исправлено:
|
||||
- `Hydration.kt`: `enabled=true` по умолчанию (нет конфига -> ON). `main.js`: дефолт-конфиг
|
||||
пишется на старте приложения; галка в профиле отмечена по умолчанию (выключить можно).
|
||||
- Диагностика: `hydration_log.jsonl` в корне приложения (строка на тик/бип: enabled, accruedMl,
|
||||
alertMl, startMl, beepOk/beepError) - чтобы после заезда видеть, а не гадать.
|
||||
- Звук укреплён: вместо ToneGenerator - реальный сигнал будильника через `MediaPlayer` на
|
||||
`STREAM_ALARM` + временный подъём громкости будильника до макс (раньше молчало из-за низкой
|
||||
громкости КАНАЛА БУДИЛЬНИКА, не медиа). Вибро + уведомление.
|
||||
- Логика (проверена по коду): тик каждые 10с из `GpsRecorderService` (велозаезд, приоритет) и
|
||||
HR-сервиса, дедуп общим синглтоном; дефицит = стартовый (из лога: норма ко времени − выпитое) +
|
||||
пот за активность; сигнал при дефиците >= alertMl, повтор reAlertMin. Кнопки «+вода» НЕТ -
|
||||
вода берётся из залогированной жидкости (решение пользователя).
|
||||
- НЕ проверено на реальном заезде (ждёт следующей поездки); компилируется, поставлено на телефон.
|
||||
|
||||
## Банк калорий (новый виджет)
|
||||
В сводке дня: «Банк за N дн.: ±X ккал (±Y кг)» + «Среднее» - накопительная сумма дневных балансов
|
||||
за окно (~7700 ккал = 1 кг). Отвечает на «сколько доесть/недоесть» (цель асимптотически к 75 кг).
|
||||
Переиспользует уже считающиеся подневные балансы в блоке тренда (`main.js`).
|
||||
|
||||
## Фикс шкалы графика «Вес и баланс калорий»
|
||||
Ось баланса (y1) уходила в пол при жёстком дне (заезд 118км -> глубокий дневной баланс растягивал
|
||||
ось). Сделал ось симметричной вокруг 0 и ФЛОТИРУЮЩЕЙ под данные: подгон по макс |баланса|
|
||||
(округление до 500), пол ±500, БЕЗ фиксированного потолка. Маленькие значения - маленькая шкала;
|
||||
большой день - ось ровно под него. Сам расчёт баланса не трогал (по просьбе).
|
||||
|
||||
## Разбор заезда 25.10 (117.6км, 9.4ч, ЧСС из gps_points.heart_rate)
|
||||
- ЧСС: средняя 136, макс 175 (рано, 13:19, на 17-19км/ч ровно - усилие, не спуск), мин 86.
|
||||
В точке 52км/ч пульс всего 112-119 (быстро и легко). Время ≥170 - всего 174с.
|
||||
- Траектория: первые 2.5ч 137-149 (тепло 15-17C); последние 3ч провал до 118-126 (холод 10-12C,
|
||||
встречный восточный ветер 4-6 м/с, после брода, 7ч+ усталости, жёсткий дефицит).
|
||||
- Погода: Open-Meteo по координатам заезда (темп/ветер за 25.10). Ветер с востока, возврат на
|
||||
восток = в лицо. Подтверждено данными.
|
||||
- Физиология (с исследованиями): низкий поздний пульс = острая разрядка (гликоген + холод +
|
||||
усталость), НЕ низкая база; холод давит пульс (вагус) и ЧСС недосчитывает трату. Макс от
|
||||
тренировок не растёт (скорее слегка вниз) - 175 это НЕ его потолок (заниженный на убитом заезде),
|
||||
настоящий макс ≥175 ~180. Разброс 48↔170 - норма и признак формы (широкий резерв). Передачи
|
||||
(синглспид!) - реальный рычаг: вынужденный гринд на горке = высокий пульс + убитые ноги.
|
||||
База вниз не пересматривается.
|
||||
|
||||
## TODO (записано в память)
|
||||
- Разобрать и доработать поведение brouter (завёл в поля/через ледяной брод); профиль trekking.
|
||||
- Память: графики баланса показывают дневное, НЕ «сколько есть» - это не баг, не чинить (но шкалу
|
||||
чинили - см. выше).
|
||||
Loading…
Add table
Add a link
Reference in a new issue