Основы
Что такое Control Platform v2
Это единый control-plane для проектов Baby in Brazil. Web Admin управляет внутренним состоянием, Telegram показывает оперативные действия, а Preview Portal публикует только предварительные версии, которые явно разрешены для просмотра.
AdminПроекты, roadmap, задачи, releases, audit и управление.
TelegramОперативная проекция: что делать, что ждёт решения, где срок или блокер.
PreviewТолько предварительные artifacts. Production не зеркалируется автоматически.
Identity / RBAC
Web Admin входит через тот же Telegram identity
Основной браузерный flow v2 не требует вручную копировать DEV admin-token. Web Admin создаёт одноразовый challenge, пользователь открывает @BIBControlDevBot и подтверждает вход. После подтверждения браузер получает HttpOnly/Secure session cookie.
Telegram user ID связывается с участником Control Platform. Права могут быть глобальными и project-level. Emergency bearer token остаётся только bootstrap/recovery механизмом и не показывается в обычном Admin UI.
Структура
Projects и универсальный Roadmap
Каждая работа сначала относится к Project. Внутри проекта используется произвольное дерево roadmap: phase, workstream, module, milestone, category или другой тип узла. Движок не должен требовать специального кода для конкретного проекта.
Roadmap, Tasks и Releases — разные слои. Наличие узла в roadmap само по себе не означает, что работа завершена или версия выложена в production.
Для Preview проект или узел может использовать режим AUTO / TREE / VERSIONS. TREE полезен при реальных фазах/ветках; VERSIONS — когда пользователю нужна просто история версий без искусственного дерева; AUTO выбирает представление по фактической структуре.
Работа
Задачи, сроки и следующий action
Задача хранит фактическую работу: owner/assignee, статус, приоритет, блокировку, срок и следующий ожидаемый action. Управленческая сводка должна отвечать на вопросы: что делается, что заблокировано, что просрочено и от кого сейчас нужен следующий шаг.
EstimateОценка продолжительности или диапазона.
PlanПлановая цель, которая может измениться при изменении scope.
DeadlineКонкретная крайняя дата/время.
CommitmentЗафиксированное обязательство; может иметь deadline.
SLAНорматив времени реакции или обработки, например на review.
Согласование
Review относится к конкретной revision
Approval не должен быть абстрактным комментарием к задаче. Review фиксируется для конкретной revision. Если после CHANGES_REQUIRED содержимое меняется, создаётся новая revision и новый review cycle; старые решения не должны молча переноситься.
В управленческой проекции важно видеть не только «на согласовании», но и кто уже принял решение, кто ещё ожидается и какой SLA действует для текущего цикла.
Предварительные версии
Release, Preview artifact и Deployment — не одно и то же
Release — версия продукта или части проекта. Preview artifact — конкретный предварительный результат, который разрешено открыть до выкладки. Deployment — отдельный факт выкладки версии в dev, staging или production.
Preview Portal использует последовательную навигацию: проекты → фазы/ветки → версии. На первой странице показываются только проекты, у которых реально есть опубликованные preview artifacts. После входа в проект открывается его preview-capable roadmap, а уже внутри конкретной фазы/ветки — история версий и кнопки открытия artifacts.
Поэтому обычная production-задача — например новая статья или карточка врача — не появляется в Preview Portal автоматически. Она появится там только если для неё существует специально опубликованный preview artifact.
Паспорт версии
Каждый опубликованный preview release может иметь отдельный паспорт: project/node, версия, lifecycle/gate, current/immutable признаки, дата публикации, manifest и список artifacts. Snapshot/source package регистрируются отдельными artifact types и не смешиваются с самим preview URL.
Immutable snapshot создаётся при публикации/установке версии, получает SHA-256 и скачивается как зарегистрированный artifact. Для legacy releases bytes импортируются отдельно; отсутствие старого ZIP не подменяется выдуманным snapshot.
Telegram
Telegram — клиент Control Platform
Бот не является отдельным источником истины. Он читает те же project/action projections, что и Web Admin, поэтому roadmap и статусы не должны дублироваться отдельными Telegram-справочниками.
Постоянная нижняя навигация
Частые глобальные переходы вынесены из старых сообщений в persistent reply keyboard: Главная, Сегодня, Проекты, Согласования, Сроки, Блокеры, Preview, Справка и Настройки. При выборе «Проекты» нижняя клавиатура временно показывает проекты, а после открытия проекта возвращается к основному меню.
Inline-кнопки в сообщениях предназначены не для общей навигации, а для действий над конкретным объектом: например APPROVE / CHANGES REQUIRED для конкретного review, подтверждение конкретного обязательства или открытие конкретного preview artifact.
/start
Открыть персональную оперативную сводку: срочные действия + состояние проектов.
/today
Оперативная сводка по portfolio.
/projects
Выбрать проект через нижнюю клавиатуру.
/reviews
Задачи на согласовании.
/deadlines
Задачи с зафиксированными сроками.
/blockers
Заблокированные задачи и причины.
/preview
Предварительные версии, разрешённые к просмотру.
/settings
Язык и настройки уведомлений.
/help
Краткая справка и ссылка на публичную базу знаний.
/project <slug>
Открыть конкретный проект.
DEV-бот ограничен allowlist. Публичная справка не публикует Telegram user IDs, token или внутренние ключи.
Профиль
Язык и уведомления — одна запись для Web и Telegram
Профиль хранит UI language, notification language, timezone, digest mode и категории уведомлений. Те же preferences редактируются в Web Admin и через «⚙️ Настройки» в Telegram; интерфейсы не ведут отдельные копии.
R5 фиксирует contract/preferences и identity. Полный event-dispatch уведомлений подключается следующим операционным слоем вместе с импортом mature v1 workflows.
Governance
Что считается источником истины
- Состояние задачи — Control Platform.
- Review decision — конкретный review cycle / revision.
- Audit — история изменения состояния.
- Telegram — интерфейс, а не отдельная база.
- Notification — уведомление, а не доказательство отсутствия или существования задачи.
- Комментарий — не approval.
- Новый feedback не переписывает задним числом исторически завершённую работу.
Интерфейс
Светлая/тёмная тема и разные экраны
В v2 тема выбирается пользователем и сохраняется локально в браузере. Светлая тема остаётся default. Layout не ограничивается фиксированной шириной контейнера: интерфейс занимает доступную ширину и адаптируется от телефона до широких/TV/4K экранов.
Migration boundary
Обязательства и mature v1 workflows не потеряны
Foundation II сначала фиксирует identity/RBAC, preferences, management projections, Preview navigation и release passports. После этого v1 импортируются задачи/review/audit, а отдельным операционным слоем — obligations, recurring occurrence cycles, owner/recipient facts, reminders и daily reports.
Это намеренная последовательность: обязательство остаётся отдельной сущностью со своей семантикой и не превращается в специальный task type или набор project-specific if.