virus-home
|
e4be7ceb31
|
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 |
virus-home
|
d61499025c
|
Этап 7, итерация 3 завершена: m08-admin-web (консоль владельца)
Backend (Server.WatchBody.Web): AdminAuthService — PBKDF2
(pbkdf2$100000$salt$hash) → in-memory Bearer-сессии TTL 8 ч
(Admin.Login пуст → консоль отключена); 6 контроллеров /api/admin/*:
login/logout; атлеты (создание — ключ wb-… возвращается один раз,
смена ключа, блокировка → 401 на /api/v1); тренировки всех атлетов
(фильтры/пагинация, карточка план/факт + таймлайн Lap/пульс +
пульсограмма ≤600 точек), CSV (;/BOM, tech-req 2.4); программы
(версии/body, активация draft, применение rules-предложения через
author=admin-копию — неизменяемость версий); метрики (+weekly
ISO-агрегат); план/факт (PlanSummaryService: недели от понедельника
создания active-версии, performed — только плановые дни).
Errata m02: ApiKeyMiddleware сужен до /api/v1/* (перехватывал статику);
Kit.Routes — роут на блок AddController (NeedHttpPost_All не чейнится).
Flutter Web UI (3-app\3-web\admin-web, SDK 3.47.7): Material 3 тёмная
тема, NavigationRail, 6 экранов, токен sessionStorage, 401 → логин,
CSV через Bearer+Blob, графики CustomPaint; без внешних pub-пакетов;
build.ps1 → wwwroot\admin (сборка в .gitignore — артефакт).
Тесты: Web 105/105 (m08 — 7), Core 56/56; flutter analyze 0
ошибок/варнингов; HTTP-смок хостинга/логина пройден. Эксплуатационные
файлы в коммит не включены.
|
2026-10-19 01:31:45 +05:00 |
virus-home
|
f41bf9a0d2
|
Этап 7, итерация 2 завершена: m06-fit-import + m07-fit-fetch
m06 (Server.WatchBody.Import + --mode import): FitParser на официальном
Garmin FIT SDK 21.218.0 (Dynastream.Fit; события Decode, типы по Mesg.Num)
→ канонический факт workout-facts/1 (+avg_hr, hr_recovery_s, fit_file_id);
TcxGpxParser (упрощённый факт); WorkoutImporter — дедуп fit_file_id,
сопоставление телефонной тренировке ±15 мин (Ф-8.4), иначе строка
«только .fit»; ProgramPackageImporter — пакет program-import.json по
external_id (повтор → новая версия max+1, отсутствующие упражнения
создаются); ImportService — подпапки-атлеты, архив, коды 0/1/2.
Errata З-35: program_select/get rev.2 (+external_id, DROP старой
сигнатуры), маппинг ProgramRepository.
m07 (Server.WatchBody.Fetch + --mode fetch): GarminClient — SSO по
контракту garminconnect (embed→csrf→signin→ticket→OAuth1→Bearer),
список активностей, скачивание .fit; FitFetcher — атлет по
Garmin.AthleteName, фильтр strength_training, дедуп 2 рубежей
(кэш activityId + fit_file_id в БД); коды 0/1/2, auth-fail →
подсказка про m06-fallback. Против живого Garmin — ручная валидация
прототипа; тесты — FakeGarminHandler + .fit-энкодер SDK.
Тесты: Web 98/98 (m06 — 12, m07 — 5), Core 56/56, psql 123/123.
Конфиг: Import.Dir/ArchiveDir, Garmin.* (в т.ч. новый AthleteName —
tech-req 4.2). Эксплуатационные файлы в коммит не включены.
|
2026-10-18 23:58:53 +05:00 |
virus-home
|
f232d592a4
|
Этап 7: итерации 1–2 — m01–m05 серверной части + обе волны ревью 2026-10-18 (З-35…З-42)
Модули (d-dev, все закрыты): m01-server-db (38 psql-функций, 13 репозиториев,
psql 123/123), m02-rest-api (sync/workouts/programs + middleware),
m03-program-store (версии draft→active→archived), m04-metrics-engine
(метрики + 6 красных флагов, Safety.*), m05-progression-rules
(ProgressionRules + BreakEngine: правила 1–5, делоад, перерывы/возврат,
фильтр ограничений is_active/замены; Web 81/81 + Core 56/56).
Волны ревью: З-35 external_id до артефактов (миграция 003, program_insert
rev.2 с DROP старой сигнатуры); З-36 --mode migrate (Program.cs,
MigrationRunner, Db.MigrationsDir); З-37 tech-req 4.2 к факту (BpElevated*,
фактические параметры, camelCase); З-38 шлюзы m05; З-39 примечание Ф-14.2
(illness → перезапуск); З-40/З-42 документация к факту (dto, SqlHelperAbstract,
spec m05/m04); З-41(а) is_active=false в sync → exercise_delete (Ф-4.2).
Инфраструктура: docker watchbody-pg (PostgreSQL 17, порт 5433); Kit.Helpers
в 3-app/1-lib (не изменялся). Эксплуатационные файлы (program-trenirovok.*,
program-import.json, presentation-trenirovok.html, журнал метрик) в коммит
не включены.
|
2026-10-18 20:11:40 +05:00 |
virus-home
|
a1b4969f57
|
Ревью №3 утверждено: Ф-13.7 источник не программа (З-30), импорт пакета программы ОВ-11 + program-import-format.md + src.program.external_id (З-31, О-4-Б), backspace в 2-db readme (З-33), косметика (З-34)
|
2026-10-17 23:10:41 +05:00 |
virus-home
|
0e8e3a6ad6
|
Ревью №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 |
virus-home
|
e6743186da
|
Архитектура v1.1 утверждена (шапка выверена: vision v1.4, требования v1.3)
|
2026-10-17 19:57:32 +05:00 |
virus-home
|
767ec4bc59
|
Утверждены: requirements v1.3, architecture v1.1, tech-requirements v1.3, tables/functions (UUID PK, breaks), чек-лист ревью закрыт
|
2026-10-17 19:56:39 +05:00 |
virus-home
|
36eb1741dd
|
Волна 2 ревью по решениям владельца: Р1-А (пульс покоя/самочувствие в v1), Р2-Б (UUID PK клиентских сущностей), Р3-А (Safety на телефоне); З-7/З-8; UI/UX-стандарт в техтребованиях
|
2026-10-17 19:54:31 +05:00 |
virus-home
|
1034c152f5
|
Интеграция документа перерывов (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 |
virus-home
|
0554f176ba
|
Шаг 6 завершён: functions.md слоёв src и ref утверждены
|
2026-10-17 19:15:37 +05:00 |
virus-home
|
695b5d9bf2
|
Шаг 6: tables утверждены; черновики functions.md слоёв src (30 функций) и ref
|
2026-10-17 19:13:22 +05:00 |
virus-home
|
74f57a5f6e
|
Шаг 5 утверждён; шаг 6: решение о БД, readme БД, tables.md слоёв src и ref
|
2026-10-17 19:10:19 +05:00 |
virus-home
|
2b3b0125fa
|
Тех-требования и архитектура: Safety-пороги, daily_log, RPE/боль по сетам, РПЭ в грамматике
|
2026-10-17 19:05:29 +05:00 |
virus-home
|
842876802c
|
Интеграция документа метрик (vision 1.3, Ф-13, правила координации 1–6, Safety-пороги, daily_log, RPE)
|
2026-10-17 19:04:31 +05:00 |
virus-home
|
9243df024e
|
Именование: базовое имя WatchBody; компоненты Phone.WatchBody и Server.WatchBody
|
2026-10-17 18:56:48 +05:00 |
virus-home
|
2b3ce40673
|
Шаг 4 утверждён; шаг 5: tech-requirements.md (закрытие ОВ, форматы обмена, конфигурация) + спецификация Kit.Helpers
|
2026-10-17 18:54:37 +05:00 |
virus-home
|
112f55c43c
|
Идентификатор системы приведён к имени репозитория: VEU.WathBody (продукт — «Феникс 6X»)
|
2026-10-17 18:49:39 +05:00 |
virus-home
|
e84349e020
|
Шаг 3 утверждён; шаг 4: architecture.md + hld.puml (+svg/png рендер)
|
2026-10-17 18:46:11 +05:00 |
virus-home
|
616df9a1a1
|
Админ-консоль: ход тренировки в карточке — таймлайн подходов/отдыха из .fit, пульсограмма
|
2026-10-17 18:25:12 +05:00 |
virus-home
|
3be4f9dc3c
|
Админ-консоль: раздел «Планы тренировок» — план/факт по запланированным тренировкам, сводка выполнения
|
2026-10-17 18:24:52 +05:00 |
virus-home
|
0b2c68614c
|
Изменение vision 1.2: веб — админ-консоль владельца (вход по логину/паролю); просмотр всех тренировок, динамика, корректировка программ, управление атлетами; требования — черновик 3
|
2026-10-17 18:24:28 +05:00 |
virus-home
|
acfef60245
|
Изменение vision 1.1 (несколько атлетов на сервере, разные модели часов); требования — черновик 2
|
2026-10-17 18:20:02 +05:00 |
virus-home
|
7f88753be0
|
Шаг 2 утверждён (readme); шаг 3: черновик функциональных требований v1
|
2026-10-17 18:06:05 +05:00 |
virus-home
|
3df0486303
|
Шаг 1: vision v1.0 утверждён; шаг 2: рабочая область (структура, .gitignore, readme системы), план проекта
|
2026-10-17 18:00:38 +05:00 |