Перейти к содержанию

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 с телефона → «На экран Домой». Работает с мобильного интернета, ноутбук и домашняя сеть не нужны. После каждой тренировки жать «Выгрузить» и сохранять JSONlocalStorage чистится браузером без предупреждения. Подробная инструкция — в задаче #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). Всё остальное ниже осознанно: туннель, бот и источники не приближают ответ на главный вопрос, а данные и схема — приближают.