PLAN — с чего начинаем и где нужен ты¶
Составлен 2026-08-18 после второго разбора совета. ROADMAP.md описывает
направление целиком; здесь — ближайшая работа, порядок и точки, где нужен владелец.
Регламент ревью — WORKFLOW.md. Коротко: прямой пуш в main запрещён технически,
всё идёт через MR, мержишь только ты.
Обновлено 2026-08-20. Контракты смержены (
proto!1), схема — на ревью (core-service!1). Выход наружу поднят целиком: проб-режим доступен по https://mybit.arvberezin.online, ноутбук для сбора данных больше не нужен. Этап 3 (туннель) закрыт досрочно — задачи T-00…T-04 закрыты как сделанные.
Что уже стоит¶
Инфраструктура и каркас готовы и проверены: 10 репозиториев с зелёными пайплайнами,
VM pet с раннером, контракты с генерацией Go/Python, локальный стек поднимается.
Реализована логика: проверка initData в боте, валидация таймингов в core, разбор
InBody с явным отказом, и проб-режим логирования подходов — работает офлайн,
без сервера.
Этап 0 — сбор данных. Начинается сегодня, идёт параллельно всему¶
#46 — 8–10 реальных тренировок в проб-режиме. do::user-test
Это единственная задача, которая даёт данные, и она ничего не блокирует и ничем не блокируется. Проект существует ради гипотезы, которую ни разу не проверяли на живых данных; всё остальное — обвязка вокруг неё.
Открыть https://mybit.arvberezin.online с телефона → «На экран Домой».
Работает с мобильного интернета, ноутбук и домашняя сеть не нужны.
После каждой тренировки жать «Выгрузить» и сохранять JSON — localStorage
чистится браузером без предупреждения. Подробная инструкция — в задаче #46.
Носить часы. Пульс достанем позже, данные уже будут собраны.
Этап 1 — контракты и схема. Первый код на ревью¶
#29 провенанс + #30 дефекты контрактов + #33 user_id — одним MR.
do::claude-code
Почему вместе: все трое правят одни и те же натуральные ключи. По отдельности это три миграции вместо одной.
Почему сейчас: migrations/0001_init.sql никогда не применялась. Пока в таблицах
нет строк, всё это — переписка файла. После первого goose up — миграция с
бэкфиллом. Задачи #12/#13 заблокированы именно поэтому.
Что внутри:
- user_id во все таблицы и во все сообщения proto, ключи вида
UNIQUE (user_id, source, external_id)
- провенанс точек пульса: confidence, recording_method, data_source, интервал
вместо одного момента — единственное, что нельзя добавить задним числом
- четыре подтверждённых дефекта: граница MAX_BACKDATE, семантика Ack,
optional на числах, UNIQUE при NULL
- поля под новую модель отметки подхода (ADR-0027): marked_at, saved_at,
entry_lag_seconds
Тут нужен ты: это чистая архитектура и маленький diff — идеальный первый разбор. Ревью контракта дороже ревью кода: ошибку в схеме потом видно годами.
Этап 2 — core-service: персистентность¶
#12, #13 — подключение к Postgres, миграции при старте, IngestWorkout /
IngestSets с идемпотентным upsert. Разблокируются после этапа 1.
Отдельным MR — импорт выгрузок проб-режима: данные с этапа 0 заезжают в базу.
Этап 3 — вход ✅ сделано, остался бот¶
Туннель, DNS и Caddy подняты и проверены сквозным запросом: T-00…T-04 закрыты.
Наружу выставлено шесть поддоменов, VPN не пострадал. Детали и карта портов —
ARCHITECTURE.md.
Осталось от этапа: T-06 (автопроверка домена и TLS) и T-07 (открыть Mini App с телефона вне дома — только после бота).
Дальше бот: регистрация через /start (#35), прокси к wger, замена проб-режима на
настоящую отправку.
Этап 4 — источники и ответ по гипотезе¶
Google Health через OAuth (нужна твоя регистрация приложения), сбор точек, сопоставление с отметками подходов и отчёт о покрытии и остаточной дисперсии (#32) — здесь гипотеза либо подтверждается, либо закрывается.
К этому моменту данные с этапа 0 уже лежат, так что отчёт считается сразу.
Где именно нужен ты¶
| Когда | Что | Почему не Claude |
|---|---|---|
| сейчас | тренировки в проб-режиме (#46) | данные добываются только в зале |
| каждый MR | ревью и мерж | пуш в main запрещён технически |
| этап 1 | разбор схемы и контрактов | цена ошибки в схеме — годы |
| этап 3 | ~~DNS-запись (T-01)~~ — сделано | |
| этап 3 | подтвердить, что VPN жив (T-05) | нет твоих клиентов |
| этап 3 | Mini App с телефона вне дома (T-07) | эмулятором не заменить |
| этап 4 | регистрация OAuth-приложения в Google | нужен твой аккаунт |
Приоритеты на доске¶
prio::high — ровно четыре задачи: сбор данных (#46) и три, которые вместе
составляют этап 1 (#29, #30, #33). Всё остальное ниже осознанно: туннель, бот и
источники не приближают ответ на главный вопрос, а данные и схема — приближают.