Перейти к основному содержимому

Фазы миграции

Зачем нужно

Документ задаёт порядок перехода. Каждая фаза имеет вход, выход, временные интеграции и критерии завершения.

Фаза 0. Платформа

Вход: репозиторий, dev-окружение, общие пакеты.

Выход:

  • pnpm-workspace с пакетами api-contracts, auth-client, events-bus, reference-data, ui-kit, observability, permissions;
  • Docker-compose с postgres, redis, NATS;
  • CI с базовым набором checks;
  • observability stack на dev.

Временные интеграции: нет.

Фаза 1. identity

Вход: действующий сервис идентификации.

Выход:

  • identity-api по domains/identity;
  • OAuth/OIDC для всех клиентов экосистемы;
  • service-to-service tokens;
  • official organization contour, включая organization_student только для организаций;
  • audit и observability.

Временные интеграции:

  • auth-bridge для исходных сервисов (Laravel-сайт, GetCourse) до их вывода;
  • read-only sync пользователей из исходного identity при миграции UUID;
  • текущий экран входа редиректит на целевой identity по feature flag.

Завершение: все frontend-приложения экосистемы используют новый identity, audit включён, миграция данных завершена.

Фаза 2. storefront (минимум)

Выход:

  • публичные страницы и лендинги;
  • catalog read-model (на seed-данных или на API будущего CRM);
  • формы лидов → события storefront.lead.submitted;
  • SSR и SEO baseline.

Временные интеграции: Laravel-сайт остаётся частично активным до полной миграции лендингов.

Фаза 3. crm

Выход:

  • crm-api по domains/crm;
  • accounts, leads, deals, products, orders, invoices, payments, refunds;
  • entitlements + интеграция с identity;
  • teacher payouts.

Временные интеграции: ручные таблицы остаются как append-only архив, импортируются через скрипты.

Завершение: путь «лид → сделка → счёт → платёж → entitlement» работает end-to-end в новой системе.

Фаза 4. lms

Выход:

  • lms-api по domains/lms;
  • курсы, уроки, активности, прогресс;
  • Learning Workspace: educator profiles, learning groups, learning group participants;
  • roadmap, занятия, attendance;
  • тетради, проекты, чат с преподавателем;
  • запись на занятия и календарь;
  • геймификация.

Временные интеграции:

  • параллельная работа GetCourse: новые курсы — в целевом LMS, текущие курсы — в GetCourse;
  • ETL прогресса из GetCourse в новую БД;
  • read-only mirror прогресса до полного переключения.

Завершение: новые продажи активируют доступ только в новый LMS; GetCourse в режиме read-only архива.

Срок отключения GetCourse: не позднее конца фазы 4 + 90 календарных дней. После срока допускается только read-only архив для исторических документов и сверки миграции.

Фаза 5. task-bank

Выход:

  • task-bank-api по domains/task-bank;
  • задачи, версии, таксономия, варианты;
  • решения, подсказки, схемы ответов и проверки;
  • usage registry, low-level problem attempts, answer checks и problem-level evidence;
  • editor web.

Временные интеграции: Мир Олимп остаётся источником для исторических задач, миграция партиями.

Завершение: Мир Олимп в read-only архиве, новые задачи только в task-bank.

Фаза 6. competitions

Выход:

  • competitions-api;
  • сезоны, туры, треки, площадки;
  • регистрации, участники (включая без аккаунта);
  • event/season access snapshots для учителей, без владения Learning Workspace roster;
  • tour activity bindings через LMS activity runtime или temporary activity adapter; task-bank только источник content refs;
  • submission refs, checking status, immutable score snapshots, результаты, документы;
  • personal/public publications, published projections для storefront и learning signals для LMS;
  • кабинет внешнего преподавателя.

Временные интеграции: путь для Мир Олимп выбран ранним migration decision gate: new season only, archive only, import tasks, import seasons/results или hybrid. Фаза 6 реализует выбранный путь; при competitions-first запуске выполнение тура идёт через минимальный LMS activity contract или temporary LMS-compatible adapter.

Фаза 7. management

Выход:

  • management-api;
  • метрики, dashboards, ingestion;
  • цели, диагностика, рекомендации;
  • задачи команд и план;
  • management web.

Временные интеграции: ручные KPI-таблицы импортируются как seed; со временем заменяются live ingestion.

Постмиграция

  • закрытие GetCourse, Laravel-каталога, Мира Олимп;
  • архивация старых таблиц;
  • удаление temporary auth-bridge.

Критерии завершения миграции

  • ни один пользовательский сценарий не зависит от старых систем;
  • все источники истины — в целевых доменах;
  • temporary интеграции отключены;
  • backups и runbooks обновлены.

Связанные документы