# План проекта: WatchBody («Феникс 6X») > Код системы — WatchBody (репозиторий > `https://git.mind01.ru/VEU/VEU.WathBody.git`); название продукта — > «Феникс 6X». План проекта — формат по sd-init-5 > (`std1\_rules\sd\sd-init.md`); шаги процесса — > `std1\_process\process.md`. Статусы: ⬜ — не начат, 🔄 — в работе, > ✅ — завершён. План актуализируется по факту прохождения шагов. | Шаг процесса | Артефакты | Статус | |---|---|---| | 1. Инициация разработки | `1-docs\1-reqs\vision.md` (утверждён 2026-10-17, v1.0), `1-docs\0-mng\plan.md` | ✅ | | 2. Создание рабочей области | `readme.md` системы, структура репозитория, `.gitignore` | ✅ | | 3. Разработка функциональных требований | `1-docs\1-reqs\requirements.md` (утверждён 2026-10-17) | ✅ | | 4. Разработка архитектуры | `1-docs\2-arch\architecture.md`, `hld.puml` (+ рендер) (утверждена 2026-10-17) | ✅ | | 5. Разработка технических требований | `1-docs\3-tech\tech-requirements.md`, спецификации библиотек (утверждены 2026-10-17) | ✅ | | 6. Проектирование баз данных | `1-docs\2-db\` — readme, `src\tables.md`, `ref\tables.md`, `functions.md` (утверждены 2026-10-17) | ✅ | | 7. Итерационная разработка | `3-app\` (код), `1-docs\4-modules\` (документы модулей) | 🔄 | ## Решение шага 6 (состав данных) Принято (2026-10-17): серверная БД — **PostgreSQL** (реляционные данные, ссылочная целостность, изоляция атлетов); состояние телефона — локальная Room/SQLite; файлы (`.fit`, логи) — вне БД. Схемы-слои: `src` — данные тренировок, программ, атлетов, метрик; `ref` — справочники (двигательные группы). Документация — `1-docs\2-db\`. JSON-тела (версии программ, факты .fit) — `jsonb` внутри таблиц. ## Решение шага 7 (разбивка версии 1.0 на модули) Принято (2026-10-17): версия 1.0 разбивается на модули по компонентам архитектуры v1.1; порядок — итерациями (итерация 1 — серверный фундамент, чек-лист шага 7 tech-requirements разд. 7). Статусы модулей: ⬜ — не начат, 🔄 — в работе, ✅ — завершён. | Модуль | Состав (проект) | Итерация | Статус | |---|---|---|---| | m01-server-db | Схема `src`/`ref`: миграции, psql-функции + тесты (d-dev 1–4); домен C# + DAL-репозитории (d-dev 5–7; 13 репозиториев в 8 файлах: Program.cs → Program+ProgramVersion, Workout.cs → Workout+WorkoutSet+CommandLog, DailyLog.cs → DailyLog+WorkoutMetrics+Break, Exercise.cs → Exercise+ExerciseReplacement, остальные — по классу); `--mode migrate` | 1 | ✅ (2026-10-18: 38/38 функций `DONE`; после З-35 — тесты psql 123/123 + C# 56/56, миграция 003 external_id) | | m02-rest-api | `Server.WatchBody.Web`: `POST /api/v1/sync`, `GET workouts`, `GET programs/active`, middleware ключа; MVC + fluent Kit.Helpers.Routes | 1 | ✅ (2026-10-18: закрыт; после З-41(а) — тесты Web 81/81 + Core 56/56) | | m03-program-store | `Server.WatchBody.Core`: версионный JSON программ, `active` — ровно одна | 1 | ✅ (2026-10-18: ProgramStore, 7 методов, тесты 19 PASS) | | m04-metrics-engine | `Server.WatchBody.Core`: adherence, тоннаж, 1ПМ (Эпли), пульс-метрики, красные флаги | 2 | ✅ (2026-10-18: MetricsEngine + Safety, sync-пересчёт, тесты 17 PASS) | | m05-progression-rules | `Server.WatchBody.Core`: правила прогрессии (Ф-12.2), делоад (Ф-12.4), перерывы/возврат (Ф-14), учёт ограничений (is_active/замены), draft-версии `author=rules` | 2 | ✅ (2026-10-18: ProgressionRules + BreakEngine, фильтр ограничений, тесты Web 81/81 + Core 56/56) | | m06-fit-import | `Server.WatchBody.Import` + `--mode import`: FitParser (FIT SDK) → workout-facts/1, сопоставление ±15 мин, дедуп fit_file_id, пакет программы, TCX/GPX, архив | 2 | ✅ (2026-10-18: Garmin.FIT.Sdk 21.218.0, FitParser/WorkoutImporter/ProgramPackageImporter/ImportService, тесты Web 93/93 + Core 56/56, psql 123/123) | | m07-fit-fetch | `Server.WatchBody.Fetch` + `--mode fetch`: GarminClient (SSO по контракту garminconnect), FitFetcher (дедуп 2 рубежей), разбор конвейером m06 | 2 | ✅ (2026-10-18: SSO-флоу + FakeGarminHandler, тесты Web 98/98 + Core 56/56; против живого Garmin — ручная валидация прототипа, fallback — m06) | | m08-admin-web | Admin-консоль: UI — Flutter Web (`3-app\3-web\admin-web`), бэкенд — admin REST API (`/api/admin/*`) в `Server.WatchBody.Web`: атлеты, тренировки, программы, метрики, CSV | 3 | ⬜ | | m09-phone-core | `WorkoutCore` + `LocalDb` (Room) + `SyncQueue`: тренировка, дневник, допуск, перерывы | 4 | ⬜ | | m10-phone-ui | `TrainingUi` (Compose): экраны тренировки/истории/программ/профиля/дневника/допуска | 4 | ⬜ | | m11-voice-input | `VoiceInput`: Vosk-STT, грамматика, TTS, журнал команд | 5 | ⬜ | | m12-watch-channel | `WatchChannel`: companion-канал Connect IQ (прототип ОВ-3 — итерация 1, чек-лист 7.1) | 5 | ⬜ | | m13-fenix-data-field | `FenixDataField` (Monkey C, таргет `fenix6x`): пульс/зоны/отдых | 5 | ⬜ | Прототипы чек-листа шага 7 (tech-requirements разд. 7) выполняются в своих итерациях; ОВ-3 (companion-канал) — прототип в итерации 1 параллельно m01–m03 (нужен для ранней проверки канала). ## Состав версий (vision 2.2–2.4, решения опросников) - **v1.0:** полный MVP-цикл (Ф-1–Ф-9) + программы без LLM (Ф-10, Ф-11, правила прогрессии), Ф-13 (MVP-состав документа метрик: дневник АД/вес/ пульс покоя/самочувствие, допуск, RPE/боль в колене, правила 1–6) и Ф-14 (перерывы, vision 2.2). Платформы: Android (Kotlin), Fenix 6X (Monkey C, поле данных; изменение vision 1.5), сервер C#/.NET 10 + PostgreSQL. - **v2:** LLM-планирование (еженедельно), wake-word, iOS, экспорт FIT, программы на часы (FIT workout). - **v2.x:** мезоциклы LLM, «генератор+ревьюер», опрос RPE, аналитика. - **v3+:** трековые виды спорта (бег/вело).