8.7 KiB
План проекта: 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: логин/PBKDF2→Bearer, атлеты, тренировки+CSV, программы, метрики, план/факт |
3 | ✅ (2026-10-19: Bearer-контур + 6 контроллеров + Flutter UI (SDK 3.47.7, build → wwwroot/admin), тесты Web 105/105 + Core 56/56, HTTP-смок пройден) |
| m09-phone-core | WorkoutCore + LocalDb (Room) + SyncQueue: тренировка, дневник, допуск, перерывы |
4 | ✅ (2026-10-19: Room 9 таблиц + WorkoutCore + SyncWorker/ApiClient + DataStore; APK 4,2 МБ, unit 18/18; смок sync 5 сущностей против живого сервера пройден, errata client_guid-UUID + guid-колонки daily_log/profile) |
| m10-phone-ui | TrainingUi (Compose): экраны тренировки/истории/программ/профиля/дневника/допуска |
4 | ✅ (2026-10-19: 8 экранов+VM, Compose Material 3 тёмная, unit 36/36, APK 12 МБ, живой смок контура программы; errata контрактов camelCase/flat program_version/sex m-f; запуск на устройстве — приёмка владельца) |
| m11-voice-input | VoiceInput: Vosk-STT, грамматика, TTS, журнал команд |
5 | ✅ (2026-10-19: парсер Ф-1.2 + VoskEngine с грамматикой/fallback + ModelStore (filesDir, не в APK) + executor через WorkoutCore 🛡 + TTS/сигналы + Mic-кнопка/RECORD_AUDIO + блок настроек; unit 63/63, APK 57 МБ; живой URL модели 200 OK; распознавание на устройстве — приёмка владельца, КУ-1 вручную) |
| 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+: трековые виды спорта (бег/вело).