VEU.WathBody/1-docs/4-modules
virus-home d4867acefd m12-watch-channel (итерация 5): live-пульс с Fenix 6X — errata ОВ-3: companion-канал Connect IQ нереализуем на fenix 6X (CIQ ≤4.1.7, Communications в полях данных с API 5.0), транспорт = штатная трансляция «Broadcast Heart Rate» (BLE Heart Rate Service, односторонний, без GCM/ANT-железа) за интерфейсом WatchTransport — мультичасовая инфраструктура (указание владельца: любые часы со стандартной трансляцией, CIQ 5+/ANT+ — будущие реализации); таймер отдыха на часах автономный (Ф-2.4 errata, настройка поля, умолчание Rest.DefaultSec); ядро: HrBleClient (скан 0x180D→indications 0x2A37, оба поколения GATT-колбэков, батарея 0x180F опц., автопереподключение 1/5/30 с) + HrPacketParser + HrSampleStore + фасад WatchChannel (статусы/avgHr/freshHr/series, в БД не пишет) + WatchFormat + DeviceScanner; UI: статус-строка и блок пульса 44sp+зона+Canvas-линия последнего подхода на «Тренировке», finishWorkout(avgHr)→sync avg_hr, «Взять с часов» (≤30 с) на «Допуске», блок «Часы» (скан 15 с/выбор/забыть/инструкция) в «Настройках», 5 BLE-разрешений; unit 89/89 (m12 +26), APK 57,3 МБ; errata НД: requirements Ф-2.4/Ф-3.2/ОВ-реестр№3, tech-req 3п.3+7п.1, architecture 1.1/1.2/3/1.4; BLE на устройстве — приёмка владельца 2026-10-19 14:08:54 +05:00
..
m01-server-db Этап 7: итерации 1–2 — m01–m05 серверной части + обе волны ревью 2026-10-18 (З-35…З-42) 2026-10-18 20:11:40 +05:00
m02-rest-api m09-phone-core + m10-phone-ui (итерация 4): телефон Android — Room LocalDb, WorkoutCore (in_plan/допуск/перерывы manual), SyncQueue/ApiClient, Compose UI (8 экранов, тёмная M3); unit 36/36, APK 12 МБ, живые смоки sync; errata контрактов: client_guid-UUID (+guid daily_log/profile), GET active camelCase, program_version flat+version, sex m/f 2026-10-19 09:39:03 +05:00
m03-program-store Этап 7: итерации 1–2 — m01–m05 серверной части + обе волны ревью 2026-10-18 (З-35…З-42) 2026-10-18 20:11:40 +05:00
m04-metrics-engine Этап 7: итерации 1–2 — m01–m05 серверной части + обе волны ревью 2026-10-18 (З-35…З-42) 2026-10-18 20:11:40 +05:00
m05-progression-rules Этап 7: итерации 1–2 — m01–m05 серверной части + обе волны ревью 2026-10-18 (З-35…З-42) 2026-10-18 20:11:40 +05:00
m06-fit-import Этап 7, итерация 2 завершена: m06-fit-import + m07-fit-fetch 2026-10-18 23:58:53 +05:00
m07-fit-fetch Этап 7, итерация 2 завершена: m06-fit-import + m07-fit-fetch 2026-10-18 23:58:53 +05:00
m08-admin-web Этап 7, итерация 3 завершена: m08-admin-web (консоль владельца) 2026-10-19 01:31:45 +05:00
m09-phone-core m09-phone-core + m10-phone-ui (итерация 4): телефон Android — Room LocalDb, WorkoutCore (in_plan/допуск/перерывы manual), SyncQueue/ApiClient, Compose UI (8 экранов, тёмная M3); unit 36/36, APK 12 МБ, живые смоки sync; errata контрактов: client_guid-UUID (+guid daily_log/profile), GET active camelCase, program_version flat+version, sex m/f 2026-10-19 09:39:03 +05:00
m10-phone-ui m09-phone-core + m10-phone-ui (итерация 4): телефон Android — Room LocalDb, WorkoutCore (in_plan/допуск/перерывы manual), SyncQueue/ApiClient, Compose UI (8 экранов, тёмная M3); unit 36/36, APK 12 МБ, живые смоки sync; errata контрактов: client_guid-UUID (+guid daily_log/profile), GET active camelCase, program_version flat+version, sex m/f 2026-10-19 09:39:03 +05:00
m11-voice-input m11-voice-input (итерация 5): голосовой офлайн-учёт Ф-1 — Vosk-STT (грамматика-список слов + fallback на свободный разбор, n-best 3), парсер Ф-1.2 (NumberRu 0–999 словами/цифрами, «с половиной» → +0,5 кг только у веса, «эр пэ э»→«рпэ», Rejected out_of_grammar/out_of_range), executor через WorkoutCore 🛡 + журнал каждой команды (Ф-1.5), TTS-подтверждения + сигналы BEEP/NACK, Mic-кнопка (RECORD_AUDIO runtime, диалог загрузки модели ~44 МБ alphacephei → filesDir, не в APK/репо), «текущее упражнение» тапом в плане, блок «Распознавание речи» в настройках (URL/статус/загрузка/Проверить TTS); расширения: WorkoutCore.setLastSetRpe + DAO lastSet (m09), AppSettings.voiceModelUrl + https-валидатор (m10); unit 63/63 (m11 — 27), APK 57,3 МБ (vosk JNI ×4 ABI); errata vosk-android 0.3.47 (stop/shutdown, onResult/onFinalResult, TONE_PROP_NACK); распознавание на устройстве — приёмка владельца, КУ-1 вручную 2026-10-19 10:37:51 +05:00
m12-watch-channel m12-watch-channel (итерация 5): live-пульс с Fenix 6X — errata ОВ-3: companion-канал Connect IQ нереализуем на fenix 6X (CIQ ≤4.1.7, Communications в полях данных с API 5.0), транспорт = штатная трансляция «Broadcast Heart Rate» (BLE Heart Rate Service, односторонний, без GCM/ANT-железа) за интерфейсом WatchTransport — мультичасовая инфраструктура (указание владельца: любые часы со стандартной трансляцией, CIQ 5+/ANT+ — будущие реализации); таймер отдыха на часах автономный (Ф-2.4 errata, настройка поля, умолчание Rest.DefaultSec); ядро: HrBleClient (скан 0x180D→indications 0x2A37, оба поколения GATT-колбэков, батарея 0x180F опц., автопереподключение 1/5/30 с) + HrPacketParser + HrSampleStore + фасад WatchChannel (статусы/avgHr/freshHr/series, в БД не пишет) + WatchFormat + DeviceScanner; UI: статус-строка и блок пульса 44sp+зона+Canvas-линия последнего подхода на «Тренировке», finishWorkout(avgHr)→sync avg_hr, «Взять с часов» (≤30 с) на «Допуске», блок «Часы» (скан 15 с/выбор/забыть/инструкция) в «Настройках», 5 BLE-разрешений; unit 89/89 (m12 +26), APK 57,3 МБ; errata НД: requirements Ф-2.4/Ф-3.2/ОВ-реестр№3, tech-req 3п.3+7п.1, architecture 1.1/1.2/3/1.4; BLE на устройстве — приёмка владельца 2026-10-19 14:08:54 +05:00
.gitkeep Шаг 1: vision v1.0 утверждён; шаг 2: рабочая область (структура, .gitignore, readme системы), план проекта 2026-10-17 18:00:38 +05:00