Ассоциация производителей КРС голштинской породы

Эволюция продукта

«Работающий прототип» и «готовый продукт» — разные обещания, и путаница между ними дорого стоит обеим сторонам. Здесь этапы названы своими именами, и отмечено, на каком из них платформа находится сегодня.

Семь этапов зрелости

ЭтапГлавная цельДоступ и аудиторияСтабильность и архитектура
POCпройденПроверить техническую выполнимость гипотезыТолько внутри командыКод-однодневка, «на коленке»
Prototypeмы здесьПроверить интерфейс и пользовательский сценарийКоманда, стейкхолдеры, респондентыЧасто без бэкенда — кликабельный макет
MVPПроверить ценность на реальном рынкеПервые реальные пользователиБазовая архитектура, минимальный функционал
AlphaНайти внутренние дефекты и проверить интеграцииВнутренняя команда, тестировщики, закрытая группаНестабильно, структура данных может меняться
BetaПроверить нагрузку, удобство и краевые сценарииВнешние пользователи: закрытый или открытый тестСтабильные API и база, доработка мелочей
Release CandidateФинальная проверка перед запускомТестировщики, стейкхолдерыЗаморозка кода, только исправление блокеров
Release / GAКоммерческая эксплуатацияВсе пользователиПолная стабильность, SLA, поддержка

Где мы сейчас

Платформа — работающий прототип, который по объёму функций уже перерос иные MVP: три роли со своими кабинетами, полный цикл проверки данных Ассоциацией, расчёт индекса племенной ценности с настраиваемыми профилями весов, родословная вглубь до девятого колена, выпуск племенных документов с журналом выдачи.

И всё-таки это не MVP. MVP — не про объём функций, а про проверку ценности на реальном рынке. Пока в базе синтетическое стадо, построенное по реальным распределениям, и нет ни одного хозяйства, которое ведёт здесь настоящий учёт, называть систему MVP было бы преувеличением. Отметка сдвинется, когда появятся реальные данные и первые пользователи, — и не раньше.

Что это значит на практике: показать можно всё, положиться пока не на что. Отсюда и порядок ближайших работ — не новые разделы, а то, что превращает прототип в продукт.

Переход: прототип → продукт

Прототип становится продуктом, когда выполнены четыре условия. Ниже — что они означают и как обстоит дело у нас. Наполовину сделанное отмечено как наполовину сделанное: страница, где всё зелёное, не сообщает ничего.

Архитектурная устойчивость

сделано

Логика и база спроектированы под масштаб, а не как временный костыль

Схема прошла ревизию: 28 правил целостности в самой базе, история оценок отдельно от снимка, журнал правок карточки. Проверено на 280 тысячах записей — страница книги открывается за 0,4 секунды, карточка за 0,1.

Обработка ошибок

частично

Система отвечает внятно на нештатное, а не падает с невнятным стеком

Импорт объясняет каждую непринятую строку, миграции и осмотр окружения дают команду починки, ошибки устаревшей схемы отвечают инструкцией. Общего перехвата на уровне приложения пока нет.

Безопасность и разграничение прав

частично

Роли, изоляция данных между хозяйствами, защита персональных данных

Роли работают, изоляция хозяйств проверяется отдельным скриптом-ревизией, роль эксперта Ассоциации не может править чужие данные. Впереди — точечный доступ вместо нынешнего «открыть карточку целиком» и аудит персональных данных.

Инфраструктура и CI/CD

впереди

Автоматическая сборка, тесты, мониторинг и логирование

Есть Docker, проверки готовности (/healthz) и набор служебных ревизий, запускаемых вручную. Автоматической сборки, тестов и мониторинга нет — это ближайшая работа, и без неё говорить о продукте рано.

Что означают буквы в версиях

Alpha, Beta, RC

Alpha — ключевой функционал есть, но продукт далёк от завершения: много ошибок, интерфейс меняется, структура базы может сбрасываться. Задача этапа — найти сбои во взаимодействии компонентов.

Closed Beta — доступ по приглашениям. Смысл не в количестве, а в качестве обратной связи: специфические сценарии, которые внутри команды не воспроизвести.

Open Beta — доступ всем желающим. Здесь проверяется инфраструктура под потоком пользователей и собираются метрики: частота падений, время ответа.

Release Candidate — версия, которая станет релизом, если в ней не найдут критических дефектов. Объявлена заморозка кода: новые возможности не добавляются категорически, только исправления.

Семантическое версионирование

Формат МАЖОР.МИНОР.ПАТЧ — три числа, каждое со своим обещанием:

  • Мажорная (1.0.0) — ломающие изменения: обратная совместимость API или структуры данных нарушена.
  • Минорная (1.1.0) — новая функциональность без нарушения совместимости.
  • Патч (1.1.1) — исправление ошибок, новых возможностей нет.

Путь выглядит так: 0.1.0-alpha 0.9.0-rc.1 1.0.0 — первый коммерческий релиз.

Текущая версия платформы — 0.16.0-alpha. Ноль в начале говорит прямо: публичного обещания совместимости пока нет, структура данных может измениться. Что именно появлялось в каждой версии — на вкладке «Версии».

Что нужно, чтобы двинуться дальше

До MVP — первое хозяйство, которое ведёт в системе настоящий учёт, и его данные вместо синтетических. Ценность проверяется пользователем, а не объёмом функций.

До закрытой беты — автоматическая сборка, тестирование и мониторинг. Пускать внешних пользователей туда, где о падении узнают от них же, нельзя.

До релиза — интеграции, ради которых система и задумана: ФГИАС ПР, ВетИС и ICAR. Без них хозяйству придётся вести учёт дважды, а это ровно то возражение, с которого продукт начинался.

Конкретные работы со сроками — на вкладке «Дорожная карта», технические подробности — на вкладке «Документация».