Go to file
virus-home 2f8c6095a7 m13-fenix-data-field (итерация 5, последний модуль v1): поле данных Connect IQ «Феникс» для профиля «Силовая» Fenix 6X — errata Ф-2.3/Ф-2.1 (утв. гейт 1.3): события Strength Set в CIQ API нет ни в одной версии → подход = Lap→Lap (onTimerLap), «время подхода» = с последнего Lap; ядро Monkey C (source/): ZoneCalc (зоны 50/70/85 % целочисленно в масштабе ×10, Танака 2080−7×age / ручной hrMaxBpm), SetTracker (среднее интервала с null-пропуском, округление к ближайшему без Float), RestTimer (старт по Lap, окончание — ровно один сигнал), Vibe (конец отдыха лёгкая / красная двойная, гистерезис 60 с, safeVibrate Ф-2.8), Format (mmss целочисленно), FieldSettings (properties restSec 30–600/hrMaxBpm 0–250/age 14–100 с клампами, getApp null-safe); экран — параметрический (без фиксированных координат: плашка зоны цвет+подпись, пульс FONT_NUMBER_THAI_HOT→MEDIUM адаптивно, строка ПОДХОД/ОТДЫХ mm:ss·ср N, прочерки), ru/en ресурсы, иконка 40×40; тесты: штатный harness monkeydo /t несовместим с девайс-паком docker в симуляторе (Unexpected Type Error у любого тестового prg, проверено минимальным проектом) → собственный раннер test-source/ (watch-app TestEntry + CoreChecks, в release не попадает — base.sourcePath задан явно): 54/54 в симуляторе fenix6xpro, раннер поймал 3 бага ядра (шкала порогов зон, слагаемое округления avgBpm, конкатенация mmss) — исправлены; тулчейн: SDK 4.2.2 (Wayback) + девайс-паки из docker 4.1.7 → %APPDATA% (таргет fenix6xpro), developer-ключ ОБЯЗАН быть RSA-4096 PKCS#8 DER (2048 молча отвергался прошивкой — Signature check failed, подтверждено сэмплем Garmin); мультитаргет-инвариант: fenix6 260×260 + fenix6s 240×240 собираются только заменой iq:product, правок кода 0; симулятор 4.2.2 не хостит поля данных → интерактивный смок (спека 03 §5) и sideload (Developer Mode → USB → GARMIN\APPS\DataField) — приёмка владельца, инструкция в readme; Monkey C-ловушки зафиксированы (строки == по ссылке, число+строка не склеивается, dc.setFont нет на API 3.x — justification 5-м аргументом); errata НД внесена после гейта 1.3: requirements Ф-2.1/Ф-2.3, tech-req 7п.1; plan.md m13 ✅ — все 13 модулей v1 завершены 2026-10-19 17:56:34 +05:00
1-docs m13-fenix-data-field (итерация 5, последний модуль v1): поле данных Connect IQ «Феникс» для профиля «Силовая» Fenix 6X — errata Ф-2.3/Ф-2.1 (утв. гейт 1.3): события Strength Set в CIQ API нет ни в одной версии → подход = Lap→Lap (onTimerLap), «время подхода» = с последнего Lap; ядро Monkey C (source/): ZoneCalc (зоны 50/70/85 % целочисленно в масштабе ×10, Танака 2080−7×age / ручной hrMaxBpm), SetTracker (среднее интервала с null-пропуском, округление к ближайшему без Float), RestTimer (старт по Lap, окончание — ровно один сигнал), Vibe (конец отдыха лёгкая / красная двойная, гистерезис 60 с, safeVibrate Ф-2.8), Format (mmss целочисленно), FieldSettings (properties restSec 30–600/hrMaxBpm 0–250/age 14–100 с клампами, getApp null-safe); экран — параметрический (без фиксированных координат: плашка зоны цвет+подпись, пульс FONT_NUMBER_THAI_HOT→MEDIUM адаптивно, строка ПОДХОД/ОТДЫХ mm:ss·ср N, прочерки), ru/en ресурсы, иконка 40×40; тесты: штатный harness monkeydo /t несовместим с девайс-паком docker в симуляторе (Unexpected Type Error у любого тестового prg, проверено минимальным проектом) → собственный раннер test-source/ (watch-app TestEntry + CoreChecks, в release не попадает — base.sourcePath задан явно): 54/54 в симуляторе fenix6xpro, раннер поймал 3 бага ядра (шкала порогов зон, слагаемое округления avgBpm, конкатенация mmss) — исправлены; тулчейн: SDK 4.2.2 (Wayback) + девайс-паки из docker 4.1.7 → %APPDATA% (таргет fenix6xpro), developer-ключ ОБЯЗАН быть RSA-4096 PKCS#8 DER (2048 молча отвергался прошивкой — Signature check failed, подтверждено сэмплем Garmin); мультитаргет-инвариант: fenix6 260×260 + fenix6s 240×240 собираются только заменой iq:product, правок кода 0; симулятор 4.2.2 не хостит поля данных → интерактивный смок (спека 03 §5) и sideload (Developer Mode → USB → GARMIN\APPS\DataField) — приёмка владельца, инструкция в readme; Monkey C-ловушки зафиксированы (строки == по ссылке, число+строка не склеивается, dc.setFont нет на API 3.x — justification 5-м аргументом); errata НД внесена после гейта 1.3: requirements Ф-2.1/Ф-2.3, tech-req 7п.1; plan.md m13 ✅ — все 13 модулей v1 завершены 2026-10-19 17:56:34 +05:00
2-db Этап 7, итерация 2 завершена: m06-fit-import + m07-fit-fetch 2026-10-18 23:58:53 +05:00
3-app m13-fenix-data-field (итерация 5, последний модуль v1): поле данных Connect IQ «Феникс» для профиля «Силовая» Fenix 6X — errata Ф-2.3/Ф-2.1 (утв. гейт 1.3): события Strength Set в CIQ API нет ни в одной версии → подход = Lap→Lap (onTimerLap), «время подхода» = с последнего Lap; ядро Monkey C (source/): ZoneCalc (зоны 50/70/85 % целочисленно в масштабе ×10, Танака 2080−7×age / ручной hrMaxBpm), SetTracker (среднее интервала с null-пропуском, округление к ближайшему без Float), RestTimer (старт по Lap, окончание — ровно один сигнал), Vibe (конец отдыха лёгкая / красная двойная, гистерезис 60 с, safeVibrate Ф-2.8), Format (mmss целочисленно), FieldSettings (properties restSec 30–600/hrMaxBpm 0–250/age 14–100 с клампами, getApp null-safe); экран — параметрический (без фиксированных координат: плашка зоны цвет+подпись, пульс FONT_NUMBER_THAI_HOT→MEDIUM адаптивно, строка ПОДХОД/ОТДЫХ mm:ss·ср N, прочерки), ru/en ресурсы, иконка 40×40; тесты: штатный harness monkeydo /t несовместим с девайс-паком docker в симуляторе (Unexpected Type Error у любого тестового prg, проверено минимальным проектом) → собственный раннер test-source/ (watch-app TestEntry + CoreChecks, в release не попадает — base.sourcePath задан явно): 54/54 в симуляторе fenix6xpro, раннер поймал 3 бага ядра (шкала порогов зон, слагаемое округления avgBpm, конкатенация mmss) — исправлены; тулчейн: SDK 4.2.2 (Wayback) + девайс-паки из docker 4.1.7 → %APPDATA% (таргет fenix6xpro), developer-ключ ОБЯЗАН быть RSA-4096 PKCS#8 DER (2048 молча отвергался прошивкой — Signature check failed, подтверждено сэмплем Garmin); мультитаргет-инвариант: fenix6 260×260 + fenix6s 240×240 собираются только заменой iq:product, правок кода 0; симулятор 4.2.2 не хостит поля данных → интерактивный смок (спека 03 §5) и sideload (Developer Mode → USB → GARMIN\APPS\DataField) — приёмка владельца, инструкция в readme; Monkey C-ловушки зафиксированы (строки == по ссылке, число+строка не склеивается, dc.setFont нет на API 3.x — justification 5-м аргументом); errata НД внесена после гейта 1.3: requirements Ф-2.1/Ф-2.3, tech-req 7п.1; plan.md m13 ✅ — все 13 модулей v1 завершены 2026-10-19 17:56:34 +05:00
Books Шаг 3 утверждён; шаг 4: architecture.md + hld.puml (+svg/png рендер) 2026-10-17 18:46:11 +05:00
.gitignore Этап 7, итерация 3 завершена: m08-admin-web (консоль владельца) 2026-10-19 01:31:45 +05:00
Growing_Stronger_CDC.pdf Шаг 3 утверждён; шаг 4: architecture.md + hld.puml (+svg/png рендер) 2026-10-17 18:46:11 +05:00
program-trenirovok.json Шаг 3 утверждён; шаг 4: architecture.md + hld.puml (+svg/png рендер) 2026-10-17 18:46:11 +05:00
program-trenirovok.md Изменение vision 1.1 (несколько атлетов на сервере, разные модели часов); требования — черновик 2 2026-10-17 18:20:02 +05:00
readme.md Ревью №2 утверждено: uuid-FK (Р2-Б доведён), контур break (planned_return, source auto|manual), якорь Fenix 6X (vision 1.5), ОВ-10, Safety.HrStrengthMax, fetch 15 мин, «с половиной» (О-2-Б), IsoStepKg (О-3-А), migrate-режим, src.migration 2026-10-17 23:03:28 +05:00
Архитектура_LLM_планирования_тренировок.md Шаг 1: vision v1.0 утверждён; шаг 2: рабочая область (структура, .gitignore, readme системы), план проекта 2026-10-17 18:00:38 +05:00
Метрики_тренировок_и_самоконтроля.md Интеграция документа метрик (vision 1.3, Ф-13, правила координации 1–6, Safety-пороги, daily_log, RPE) 2026-10-17 19:04:31 +05:00
Перерывы_подводные_камни_и_рекомендации.md Интеграция документа перерывов (vision 1.4, Ф-14: auto-break + вопрос атлету, формула возврата, правила 12-17, breaks/session_kind) + волна 1 errata ревью (З-5,6,9-14) + З-2 архитектура 2026-10-17 19:40:40 +05:00
Техническое задание.md Шаг 1: vision v1.0 утверждён; шаг 2: рабочая область (структура, .gitignore, readme системы), план проекта 2026-10-17 18:00:38 +05:00
Требование.md Шаг 1: vision v1.0 утверждён; шаг 2: рабочая область (структура, .gitignore, readme системы), план проекта 2026-10-17 18:00:38 +05:00
Форматы_тренировок_и_рекомендации.md Шаг 1: vision v1.0 утверждён; шаг 2: рабочая область (структура, .gitignore, readme системы), план проекта 2026-10-17 18:00:38 +05:00

readme.md

WatchBody — «Феникс 6X», контроль силовых тренировок

Код системы — WatchBody (репозиторий https://git.mind01.ru/VEU/VEU.WathBody.git); отображаемое название продукта — «Феникс 6X». Компоненты: Phone.WatchBody (Android- приложение атлета), Server.WatchBody (серверная часть); поле данных часов — WatchBody Data Field.

Персональный комплекс «часы Garmin Fenix 6X + телефон Android + личный сервер»: голосовой учёт подходов, кардиоконтроль на запястье, ведение и корректировка программ тренировок, полный архив с пульсом в собственной базе.

Концепция

Для атлета-любителя, который тренируется со штангой и гантелями и хочет вести учёт и контролировать нагрузку, не выпуская из рук снаряд, «Феникс 6X» — персональный комплекс «часы Garmin + телефон + личный сервер», который голосом записывает подходы, показывает кардионагрузку и отдых на запястье, ведёт тренировку по программе и автоматически собирает полный архив с пульсом в собственной базе; в отличие от блокнотов, приложений-дневников с ручным вводом и штатных экранов Garmin, наш продукт фиксирует результаты без рук, сверяет их с программой и на основании результатов корректирует следующие тренировки, храня данные у владельца, а не в чужом облаке.

Полный образ проекта — 1-docs\1-reqs\vision.md (утверждён 2026-10-17).

Версии

  • v1.0 — полный MVP-цикл: голосовой учёт подходов (офлайн), кардиоконтроль на часах (поле данных в профиле «Силовая»), офлайн-учёт с автосинхронизацией, серверный архив из .fit (Garmin Connect), веб-история с CSV, программы тренировок с контролем «план/факт» и правилами прогрессии (без LLM).
  • v2 — LLM-планирование (еженедельные предложения через валидатор), wake-word «Феникс, записывай», iOS, экспорт FIT, программы на часы.
  • v2.x — мезоциклы LLM, «генератор+ревьюер», опрос RPE, аналитика.
  • v3+ — трековые виды спорта (бег/вело).

Состав системы и архитектурные фиксации

  • Часы Garmin Fenix 6X — Monkey C (Connect IQ SDK): поле данных в штатном профиле «Силовая»; пульс, зоны (50/70/85 %), Lap — конец подхода; полностью автономны от телефона.
  • Телефон — нативный Android (Kotlin, Room, офлайн-STT Vosk/sherpa-onnx): голосовой учёт, экран тренировки, программы, локальная БД, очередь синхронизации; работает без часов, интернета и сервера.
  • Сервер — C# / .NET 10 + PostgreSQL по стандарту std1: REST API (статический ключ, идемпотентность), забор .fit из Garmin Connect (неофициальный клиент; деградация — ручной экспорт в папку импорта), парсинг FIT (Garmin FIT SDK), MetricsEngine, ProgramStore (версионированный JSON-программы), веб-интерфейс с CSV.
  • Форматы — FIT основной; импорт FIT/TCX/GPX; внутреннее хранение и API — JSON; CSV — отчётные выгрузки; GPX для силовых данных не используется.
  • Офлайн-first и независимость частей — каждая часть (часы, телефон, сервер) работает при отсутствии остальных; данные досылаются автоматически, дубликаты исключаются идемпотентностью.
  • LLM — планировщик, код — источник истины — LLM только предлагает изменения структурным JSON; детерминированный валидатор и подтверждение пользователя обязательны; офлайн-fallback — правила прогрессии.

Слои

Серверная часть (БД, DAL, документация делятся одинаково):

  • src — основные данные: тренировки, подходы, программы, метрики;
  • ref — справочники: библиотека упражнений, двигательные группы.

Структура репозитория

readme.md              — этот файл
Техническое задание.md — исходное ТЗ (17.10.2026)
Требование.md          — требование по стекам (сервер — std1)
Форматы_тренировок_и_рекомендации.md  — обзор форматов
Архитектура_LLM_планирования_тренировок.md — дизайн LLM-планирования
1-docs\
  0-mng\     — управление проектом (план проекта)
  1-reqs\    — vision, функциональные требования
  2-arch\    — архитектура (components, hld.puml)
  3-tech\    — технические требования, спецификации библиотек
  4-modules\ — документы модулей
2-db\        — функции БД (psql, тесты)
3-app\
  1-lib\     — разделяемые библиотеки (Kit.Helpers и др.)
  2-cli\     — приложения/модули сервера

Ссылки

  • Стандарт разработки std1: I:\Kit\Kit.DevAi\std1 (процесс — _process\process.md, правила — _rules\).
  • План проекта: 1-docs\0-mng\plan.md.