Порядок разработки
Зачем нужно
Документ задаёт обязательный порядок разработки 7 доменов экосистемы с нуля. Порядок выбран по зависимостям: каждый следующий домен опирается на возможности предыдущих.
Шаги от нуля до экосистемы
Шаг 0. Платформа
Подготовка перед стартом любого домена:
- репозиторий с pnpm workspaces;
- общие пакеты:
api-contracts,auth-client,events-bus,reference-data,ui-kit,observability,permissions,testing; - инфраструктура dev-окружения (Docker Compose, postgres, redis, NATS);
- CI базовый pipeline;
- общие линтеры и pre-commit checks;
- тестовый стенд observability stack.
identity-apiкак временный platform host для/api/v2/platform/reference/*,/api/v2/platform/feature-flagsи/api/v2/platform/i18n/*до выделения отдельного platform-service;- MVP UI Kit: tokens, Button, Input, Select, Checkbox, Switch, Tabs, Modal, Toast, Tooltip, Table, Pagination, FormField, Alert, Skeleton, EmptyState;
- Storybook на
packages/ui-kitкак обязательный preview и regression target для базовых компонентов.
Готовность: пакеты собираются, dev-окружение поднимается, CI проходит на пустом сервисе, reference-data API отвечает через identity-api, UI Kit MVP виден в Storybook.
Шаг 1. identity
Без identity ни один другой домен не имеет аутентификации.
Реализуем по identity/overview.md → порядок разработки:
- Модель данных и БД.
- Auth flow, sessions, refresh rotation.
- RBAC и permissions.
- Family и organizations.
- OAuth/OIDC authorization server.
- Audit, notifications, transports.
- Frontend identity-admin-web и user screens.
Готовность: пользователь может зарегистрироваться, войти, получить access token; сервис может валидировать токен через JWKS; OAuth client_credentials работает для service-to-service.
Identity organization MVP для раннего запуска:
organization;organization_membership;- roles
owner,admin,member; - invitations;
- basic permissions and organization context.
Identity extended before competitions/task-bank integration:
organization_student;- ownership claim;
- ownership transfer;
- duplicate warning;
- organization merge model;
- admin organization panel;
- organization/team grants.
organization_student относится только к official organization contour. Он не является общим списком «мои ученики / мои группы» и не заменяет Learning Workspace.
Эти расширения нужны до полноценной интеграции competitions и task-bank, но не обязаны блокировать первый минимальный auth/OAuth релиз identity.
Шаг 2. storefront (минимально)
Витрина — read-model, поэтому она запускается рано как фасад.
Минимальный объём:
- публичные страницы;
- каталог продуктов (read-only, источник — crm в будущем; пока seed);
- формы заявок → события
storefront.lead.submitted; - SEO baseline.
Готовность: публичный сайт с лендингами и каталогом, формы превращаются в события.
Seed-каталог storefront временный: source_domain = temporary_seed, без владения ценой и коммерческой логикой. Для seed-записей задаётся migration deadline; после готовности CRM canonical product/product_run/price_plan переносится в CRM, а storefront остаётся read-model.
Шаг 3. crm
CRM становится потребителем storefront.lead.submitted и владеет коммерческой моделью.
Реализуем:
- accounts, person links, contacts, timeline.
- Лиды и сделки.
- Продукты и реализации.
- Заказы, счета, платежи, возвраты, баланс.
- Entitlements + интеграция с identity для проверок;
- Teacher payouts.
- CRM web.
Готовность: путь «лид → сделка → счёт → платёж → entitlement» работает end-to-end.
Шаг 4. lms
LMS подписан на crm.entitlement.activated, ведёт учебную часть.
Реализуем:
- Курсы, учебная структура, контент-блоки, активности.
- Enrollments по entitlements.
- Прогресс и evidence.
- Roadmap (программа, темы, pathways, прогресс).
- Learning Workspace:
learning_group,learning_group_participant, группы и занятия (attendance, расписание), с использованием identity-ownededucator_profile. - Запись на занятия и календарь.
- Тетради, проекты, чат.
- Геймификация.
- LMS web.
Готовность: ученик с активным entitlement видит курс и расписание, проходит активности, прогресс пишется, в crm уходит lms.entitlement.consumed.
Минимальный Learning Workspace slice до competitions:
- identity-owned
educator_profileдля преподавателя/координатора; learning_groupиlearning_group_participantкак канонический roster «мои ученики / мои группы»;- read API для handoff группы в competitions с snapshot и audit;
- training/review container для разбора олимпиадных результатов в учебном контуре;
- permissions
lms.learning-groups.*и assigned educator context.
Без этого slice competitions не должен закреплять competition_group как список учеников.
До готовности task-bank LMS может использовать только один compatibility-вариант:
- internal compatibility activity type без сохранения task-bank low-level attempts;
- task-bank stub API с фиксированным контрактом
GET /api/v2/task-bank/problems/{id}иPOST /api/v2/task-bank/problem-usages; - no persisted task-bank low-level attempts until task-bank acceptance.
Шаг 5. task-bank
Task-bank становится поставщиком задач и проверок для lms (и потом competitions).
Перед organization-scoped доступом к подборкам должны быть готовы identity organization memberships, basic roles и grants.
Реализуем:
- Задачи, версии, переводы.
- Таксономия, теги, скиллы.
- Решения, подсказки, схемы ответов и проверки.
- Использование
problem_usage. - Low-level problem attempts, answer checks и evidence, без подмены LMS/competition attempts/results.
- Editor web.
Готовность: lms-домашка использует задачи task-bank, проверки доходят до lms-evidence, а training attempts остаются в LMS/Learning Workspace.
Шаг 6. competitions
Олимпиадный домен использует identity, crm, task-bank как источник контента, минимальный Learning Workspace slice и LMS activity runtime или совм естимый temporary activity adapter для прохождения тура.
Перед запуском organization/group scenarios должны быть готовы organization_student для official organization contour, ownership claim/transfer, duplicate warning, admin organization panel и минимальный Learning Workspace slice для roster «мои ученики / мои группы».
Competitions-first launch slice разрешён, если цель — запустить первую олимпиаду до всей экосистемы. В этом режиме обязательны identity auth, organization-lite, organization_student только для official organization contour, минимальный Learning Workspace roster slice, permissions catalog, минимальный LMS activity contract или temporary LMS-compatible adapter и полный competitions cycle. competition_group в MVP может быть только event/season access snapshot и не становится каноническим списком учеников; task-bank, storefront, CRM, полный LMS и management подключаются фазами по ../domains/competitions/mvp-launch-plan.md.
Реализуем:
- События/сезоны/туры/треки.
- Регистрации и участники (в т.ч. без аккаунта).
- Event/season access snapshots для учителей и доступ к работам без владения Learning Workspace roster.
- Tour activity bindings через LMS activity runtime или temporary activity adapter; task-bank даёт source refs/content, но не runtime.
- Submission refs, checking status, immutable score snapshots и результаты.
- Отдельные publication actions, публичные projections для storefront и наградные документы.
- Кабинет внешнего преподавателя.
Готовность: тур проходит end-to-end: регистрация → activity launch → LMS/adapter attempt → score snapshot → finalize result → publication → диплом.
Шаг 7. management
Management запускается последним, потому что зависит от данных всех остальных.
Реализуем:
- Метрики и ingestion.
- Dashboards и алерты.
- Цели, диагностика, рекомендации.
- Внутренние задачи команд и план.
- Management web.
Готовность: руководитель видит сквозные aggregates, создаёт задачи, цели работают для учеников.
Параллельность
Часть работ можно вести параллельно после шага 1:
- дизайн-система и UI Kit идут одновременно с identity;
- storefront лендинги — после identity и до crm;
- task-bank можно стартовать сразу после identity и параллельно с lms по compatibility contract выше.
Что должно быть готово на каждом шаге
| Шаг | Платформенный артефакт |
|---|---|
| 0 | пакеты и dev-окружение |
| 1 | работающий identity, JWKS, OAuth |
| 2 | публичная витрина |
| 3 | коммерческая модель и entitlements |
| 4 | учебный кабинет |
| 5 | банк задач |
| 6 | олимпиадный кабинет |
| 7 | управленческий dashboard |