68 lines
7.5 KiB
Markdown
68 lines
7.5 KiB
Markdown
# План проекта: 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+:** трековые виды спорта (бег/вело).
|