Решение о собственной платформе уже принято. Теперь задача команды - сохранить действующие доступы и обязательства перед учениками, перенести проверяемую историю и переключить новые операции в заранее назначенный момент.
Не начинайте с одного большого экспорта. Сначала зафиксируйте состав данных и критерии приемки, затем постройте повторяемый конвейер переноса. Исходный GetCourse остается доступным до завершения сверки и утвержденного периода наблюдения.
Как построить план переноса с GetCourse?
План должен отделять получение исходных данных, их преобразование и загрузку в новую систему. У каждого этапа есть версия входных файлов, протокол ошибок, ответственный и измеримый результат.
- Зафиксировать границы. Перечислить продукты, тренинги, группы, роли, интеграции и незавершенные обязательства.
- Снять исходное состояние. Сохранить выгрузки, время их формирования, фильтры и контрольные количества.
- Сопоставить модели. Связать объекты GetCourse с сущностями собственной платформы и определить недостающие поля.
- Перенести контрольную выборку. Включить обычные записи, дубли, частичные оплаты, возвраты и сложный прогресс.
- Провести репетицию переключения. Замерить длительность финальной дельты, сверки и восстановления.
- Переключить поток. Остановить изменения в старом контуре, загрузить дельту, открыть новую платформу ограниченной группе.
- Принять результат. Сверить числа, связи и пользовательские сценарии, а не только успешный статус импорта.
Саму платформу, роли и учебный маршрут стоит зафиксировать до миграции. Для этого пригодятся материалы о техническом задании на разработку и границах MVP.
Какие данные нужно инвентаризировать?
Реестр миграции строят по бизнес-объектам, а не по названиям выгрузок. Для каждого набора указывают владельца, источник, объем, ключи связи, способ получения, срок хранения и решение: перенос, архив или удаление.
| Набор | Что проверить | Контроль после переноса |
|---|---|---|
| Пользователи и группы | GetCourse ID, email, телефон, дополнительные поля, менеджер, статусы и даты членства | Уникальные ученики, роли, сегменты и доступы |
| Заказы и покупки | ID заказа и пользователя, состав, статусы, суммы, валюта, промокоды, рассрочки и возвраты | Баланс обязательств и право на продукт |
| Платежи | ID платежа, заказ, дата, сумма, комиссия, способ, статус и возврат | Суммы по периоду, валюте и статусу |
| Обучение | Тренинги, уроки, порядок, расписания, стоп-уроки, ответы, оценки, тесты и дипломы | Доступный урок, принятые работы и завершение |
| Материалы и файлы | Файл, GetCourse ID, формат, размер, владелец, место использования и правила доступа | Файл открывается из нужного урока и нужной роли |
| Коммуникации | Рассылки, процессы, шаблоны, триггеры, часовые пояса, согласия и отписки | Одно событие создает одно корректное уведомление |
| Интеграции | Домены, формы, аналитика, CRM, вебинары, касса, платежные провайдеры и callback-вызовы | Сквозной сценарий проходит без ручного дубля |
Карта автоматизаций онлайн-школы поможет найти обмены, которые легко пропустить при просмотре одной LMS: заявка, оплата, доступ, обучение и поддержка.
Что дают официальный экспорт и API GetCourse?
Export API GetCourse официально перечисляет четыре типа массовой выгрузки: пользователей, группы, заказы и платежи. Экспорт выполняется в один поток, а лимит составляет 100 запросов за два часа с учетом запросов проверки готовности.
Документация GetCourse не рекомендует использовать Export API для постоянной передачи новых объектов. Для оперативных событий платформа предлагает процессы с операцией вызова URL. Поэтому полный снимок и изменения после него проектируют как разные механизмы.
Пользователей, заказы и часть других наборов можно выгружать через интерфейс в CSV или XLSX. Ответы тестирований имеют отдельную штатную выгрузку. При этом учебный прогресс, структура уроков, ответы на задания, комментарии и связи файлов нельзя считать автоматически покрытыми одним Export API: этих объектов нет в опубликованном перечне его четырех типов.
- заранее выполнить пробные выгрузки всеми доступными способами и сохранить заголовки полей;
- проверить права сотрудника на каждый тип экспорта;
- разделить полный снимок, финальную дельту и оперативные события;
- не строить массовую миграцию на частом опросе Export API;
- согласовать с поддержкой GetCourse способ получения данных, которых нет в штатной выгрузке;
- не использовать разбор интерфейса как основной канал, если нет подтвержденного и устойчивого способа.
Если миграционный контур вызывает API и вебхуки нескольких систем, примените правила из статьи об интеграции по API: журнал запросов, идемпотентность, повтор обработки и ограничение ключей.
Как связать старые и новые идентификаторы?
Новая платформа не должна угадывать связь по email. Храните отдельную таблицу соответствий для каждого типа объекта и не меняйте ее задним числом без журнала версии.
| Сущность | Старый ключ | Новый ключ | Дополнительный контроль |
|---|---|---|---|
| Пользователь | GetCourse user ID | platform user ID | Нормализованные email и телефон |
| Заказ | GetCourse order ID | platform order ID | Пользователь, состав, сумма и дата |
| Платеж | GetCourse payment ID | ledger transaction ID | Заказ, провайдер, сумма и статус |
| Курс и урок | training ID и lesson ID | course ID и lesson ID | Версия структуры и порядок |
| Попытка и ответ | исходный ID или составной ключ | attempt ID и submission ID | Пользователь, урок, время и версия |
| Файл | GetCourse file ID и URL | storage object ID | Хеш, размер, тип и место использования |
Составной ключ используют только когда стабильного исходного ID действительно нет. Его формулу фиксируют до переноса, например пользователь + урок + номер попытки + время, и отдельно обрабатывают совпадения.
Как очистить данные без разрушения истории?
Очищайте рабочую копию, а исходные выгрузки храните неизменяемыми. Нормализация форматов и объединение дублей - разные операции: первая меняет представление, вторая может изменить принадлежность заказов, ответов и доступов.
- Привести email, телефоны, даты, валюты и справочники к единому формату.
- Отделить тестовых пользователей, ложные заказы и служебные файлы по согласованным признакам.
- Построить кандидатов на дубли по нескольким полям, не объединяя их автоматически по одной почте.
- Выбрать основную запись и перепривязать заказы, платежи, группы, ответы и файлы.
- Зафиксировать каждое объединение: исходные ID, победившие значения и ответственного.
- Повторно посчитать учеников, коммерческие суммы и учебные статусы после очистки.
Как провести пробную миграцию?
Контрольная выборка должна представлять реальные крайние случаи, а не только удобных учеников. Одну и ту же выборку прогоняют повторно после каждой правки, чтобы результат зависел от версии правил, а не от ручных действий.
- 01
Собрать выборку
Активный и завершенный курс, несколько ролей, дубль, возврат, рассрочка, повторная попытка, файл и часовой пояс.
- 02
Загрузить в тестовый контур
Не отправлять реальные письма, чеки и платежные команды, пометить тестовые события.
- 03
Сверить автоматически
Количество записей, суммы, контрольные хеши, обязательные поля и отсутствующие связи.
- 04
Пройти сценарии
Войти учеником, продолжить урок, отправить ответ, открыть файл, проверить работу куратором.
- 05
Повторить с нуля
Очистить тестовый контур, применить ту же версию конвейера и сравнить результат.
Пробный перенос входит в приемку продукта, а не остается задачей разработчика. Общую логику пилота можно взять из чек-листа проверки LMS, не возвращаясь к вопросу выбора платформы.
Как перенести заказы, платежи и будущие списания?
Коммерческий контур делят на историю, текущие обязательства и будущие операции. Успешный импорт платежей не доказывает, что рассрочка продолжится или возврат уйдет через нужного провайдера.
| Контур | Что переносить | Что проверить действием |
|---|---|---|
| История заказов | Состав, статус, валюта, скидка, сумма, оплачено и задолженность | Право ученика на продукт и финансовый отчет |
| История платежей | Транзакция, заказ, дата, сумма, комиссия, способ, статус и возврат | Сверка с отчетом провайдера и учетом |
| Открытые рассрочки | График, остаток, следующий платеж и состояние договора | Тест следующего шага без реального списания |
| Регулярные списания | Только разрешенные провайдером ссылки и идентификаторы | Возможность продолжения или повторная привязка |
| Возвраты и споры | Открытые обращения, сумма, основание и ответственный | Маршрут возврата после переключения |
| Чеки и касса | Признаки фискализации и связь с операцией | Тестовые сценарии оплаты и возврата |
Не переносите реквизиты платежного инструмента обычным экспортом. Возможность передачи платежного токена подтверждает провайдер и договор; иначе пользователь заново подключает оплату. На переключении блокируют двойное создание заказа и двойную отправку платежной команды.
Как организовать параллельный период?
Параллельная работа нужна для сравнения, но две редактируемые системы быстро расходятся. Назначьте владельца каждого типа данных и разрешите запись только в одной системе; вторая получает копию или работает в режиме чтения.
- новые регистрации и заказы создаются только в назначенном основном контуре
- дельта передается по сохраненному внешнему ID и с ключом идемпотентности
- ответы и прогресс не принимаются одновременно в двух LMS
- рассылки в старой системе отключены либо переведены в безопасный тестовый режим
- отписки, согласия и изменения контактов синхронизируются до отправки
- поддержка видит, где ученик должен выполнять действие в конкретный день
Уведомления готовят отдельно для учеников, кураторов, продаж и поддержки. Сообщение содержит дату перехода, новый адрес входа, способ восстановления доступа, судьбу текущего урока и канал помощи. Перед массовой отправкой его получают сотрудники и пилотная группа.
Как переключиться и сохранить возможность отката?
Откат - это заранее проверенный возврат бизнес-потока, а не надежда снова включить старую страницу. Команда задает окно переключения, стоп-критерии и последнюю точку, после которой обратный перенос новых действий станет отдельным проектом.
- Объявить окно изменений и остановить редактирование курсов, заказов и правил доступа.
- Снять финальные выгрузки и дельту после последней успешной репетиции.
- Отключить старые формы, триггеры и платежные команды, не удаляя исходные данные.
- Загрузить дельту, сверить блокирующие показатели и открыть доступ пилотной группе.
- Переключить домен, формы и интеграции, наблюдая очередь ошибок и дубли событий.
- При стоп-критерии остановить новые операции, вернуть маршрутизацию в старый контур и восстановить изменения из журнала.
Примеры: не сходится сумма оплаченных заказов, часть активной группы не получает доступ, платеж создается дважды, ученик не может продолжить обязательный урок. Формулировка «если что-то пойдет не так» не помогает принять решение в ночь переключения.
Как принять миграцию и измерить результат?
Приемка сочетает автоматическую сверку данных и прохождение пользовательских маршрутов. Процент успешно обработанных строк полезен только вместе со списком отклонений и оценкой их влияния.
| Метрика | Как считать | Критерий |
|---|---|---|
| Полнота пользователей | Перенесенные уникальные ID / ID в утвержденном составе | Согласованный порог и список исключений |
| Целостность связей | Заказы, платежи, попытки и файлы без найденного родителя | Ноль блокирующих разрывов |
| Финансовая сверка | Суммы по валютам, периодам и статусам в трех источниках | Расхождения объяснены до запуска |
| Учебная непрерывность | Ученики, которые открыли ожидаемый следующий урок | Все критичные случаи подтверждены |
| Ошибки входа | Неуспешные входы и восстановления на активного ученика | Не выше принятого порога |
| Дубли уведомлений | Повторные сообщения на одно событие | Ноль массовых дублей |
| Очередь миграции | Отклоненные записи по причине и владельцу | Нет безымянных и забытых ошибок |
После технической сверки ученики, кураторы, администраторы и финансы проходят свои сценарии и подписывают протокол. Стоимость сопровождения и исправлений стоит учитывать в общей оценке разработки веб-приложения. Если нужен контекст о причине собственной разработки, он остается в отдельном материале о готовой и собственной LMS.
Частые вопросы
Можно ли перенести школу с GetCourse совсем без потерь?
Обещать это заранее нельзя. Риск снижают полной инвентаризацией, неизменяемыми исходными выгрузками, таблицей идентификаторов, несколькими пробными загрузками, сверкой контрольных показателей и периодом чтения старой системы.
Что GetCourse позволяет выгрузить через Export API?
В официальной документации Export API перечислены пользователи, группы, заказы и платежи. Для прогресса, ответов, учебной структуры и файлов нужен отдельный маршрут: штатные выгрузки интерфейса, согласованный способ получения данных и контроль полноты.
Нужно ли переносить все ответы учеников и комментарии кураторов?
Только если они нужны для продолжения обучения, разбора спорных ситуаций или выполнения обязательств. Остальную историю можно оставить в архиве только для чтения, заранее определив срок хранения и круг доступа.
Когда можно выключать GetCourse?
После формальной приемки, завершения согласованного периода параллельной работы и проверки, что новые операции больше не создаются в старой системе. Архив и резервные копии сохраняют на утвержденный срок.
Что делать с регулярными платежами и рассрочками?
Разделить историю платежей и будущие списания. Историю переносят для учета, а возможность продолжить списания проверяют по договору с платежным провайдером. Если платежные реквизиты нельзя перенести, ученику предлагают заново подключить способ оплаты с корректным согласием.
Сколько пробных миграций нужно?
Не задавайте число заранее. Повторяйте перенос одной и той же контрольной выборки, пока правила преобразования воспроизводимы, критические расхождения закрыты, а отклоненные записи имеют владельца и решение.
Источники и границы материала
- GetCourse: документация Export API
- GetCourse: экспорт пользователей из системы
- GetCourse: работа с заказами и экспорт
- GetCourse: работа с платежами и экспорт
- GetCourse: экспорт ответов тестирований
- GetCourse: информация об учениках и статистика тренинга
- GetCourse: файловое хранилище
- GetCourse: секретный ключ API
Материал носит информационный характер. Конкретная архитектура, бюджет, режим работы с данными и уровень человеческого контроля зависят от процесса и требований компании.
Разберите миграцию на контрольной выборке
Покажите структуру аккаунта GetCourse, целевую модель и критичные учебные сценарии. Мы поможем собрать карту данных, план пробного переноса и критерии переключения.
