Почему рабочий интерфейс ещё не означает готовую систему
На реальном кейсе Academy разбираем разницу между UI complete, feature complete, infrastructure complete и production ready.
Первый MVP AI Academy был полезным и рабочим: страницы открывались, курс отображался, уроки читались, progress action работал, Continue Learning появлялся после просмотра. Для пользователя это выглядело как настоящая feature. Но инженерно это еще не означало production ready. Под интерфейсом progress временно хранился в server-only cookie-backed adapter, а PostgreSQL migration существовала только как подготовленный артефакт.
Это нормальная стадия разработки, если она честно названа. Проблема начинается тогда, когда агент пишет «готово», не раскрывая, что storage не постоянный, auth не production, migration не подключена к runner, а Docker не содержит Postgres. В AI-assisted разработке честность отчета — часть качества кода.
- Страницы выглядят готовыми.
- Пользовательский путь можно пройти.
- Есть локальный state или fallback.
- Не гарантирует production persistence.
- Есть реальный storage.
- Есть production identity.
- Есть migration runner.
- Есть проверки failure modes и rollback path.
Четыре уровня готовности
- 1UI complete
Интерфейс работает, route доступен, пользователь понимает, что делать.
- 2Feature complete
Основные пользовательские сценарии работают, включая empty, repeat и not-found states.
- 3Infrastructure complete
Под feature есть реальный storage, auth, migrations, env и runtime wiring.
- 4Production ready
Система проверена в условиях деплоя, имеет понятный rollback и не скрывает known gaps.
В Academy Phase 1 уровень был между UI complete и feature complete. После аудита persistence был сделан правильный следующий шаг: не устанавливать ORM внезапно, а выделить `AcademyProgressRepository`, оставить cookie adapter как demo fallback и сделать production default disabled. Это не «меньше работы», а более честное инженерное решение.
Фраза «всё готово» опасна, если она смешивает UI, feature и infrastructure. В финальном отчете нужно явно писать, какой уровень готовности достигнут.
- Что реально реализовано?
- Что работает только через fallback?
- Что подготовлено, но не подключено?
- Какие production gaps остаются?
- Какие проверки это подтверждают?
Practice
A real WorkerHubs scenario for this lesson.
Возьми любую feature и разложи ее на implemented, mocked, fallback и missing. Не пытайся сделать отчет красивее реальности.