Поправки и миграция субъектов
Поправка (amendment) — это изменение протокола, которое живёт как новая опубликованная версия
дизайна. Уже включённые субъекты не переезжают на неё автоматически: их переводят явной
операцией миграции по плану, и всегда — сначала дифф и пробный прогон, потом
выполнение. Консоль миграции — пункт Поправки в навигации исследования, в группе
«Закрытие» (право subject.migrate_version); попасть сюда можно и из истории версий на
экране дизайна.
План миграции: откуда и куда
Заголовок раздела «План миграции: откуда и куда»Миграция описывается планом: исходная версия → целевая.
- Исходная — версия, на которой субъекты сейчас (опубликованная или уже заменённая).
- Целевая — новая опубликованная версия, на которой работают центры.
Создание плана только считает дифф и фиксирует маппинг по совпадению OID-идентификаторов — само по себе оно ничего не меняет в данных. Планы проходят статусы: Черновик → Прогон выполнен → Выполняется → Завершён (или С ошибками).
Шаг 1. Дифф изменений
Заголовок раздела «Шаг 1. Дифф изменений»План классифицирует каждое изменение по цене для существующих данных — от безопасного до ломающего. Дифф раскрывается по классам, у каждого — понятное объяснение последствий:
| Класс | Что это значит для собранных данных |
|---|---|
| Косметические | Безопасно: лейблы, порядок, отображение. Данные и подписи не затронуты. |
| Аддитивные | Новые поля, формы, визиты. Новые поля приходят пустыми; существующие данные не меняются. |
| Ограничивающие | Ужесточения (обязательность, диапазоны, SDV): возможны конфликты значений; подписи станут недействительны и потребуют повторного подписания. |
| Ломающие | Поля исчезают или меняют тип — данные осиротеют (уйдут в архив, ничего не удаляется). Требуются явные маппинги или подтверждение. |
Ломающие изменения раскрыты по умолчанию — их нельзя пропустить. Внутри каждого класса видны конкретные изменения по OID (например, «поле стало обязательным», «изменён тип данных», «визит добавлен»).
Шаг 2. Пробный прогон (dry-run)
Заголовок раздела «Шаг 2. Пробный прогон (dry-run)»Пробный прогон считает impact-отчёт по реальным данным — без единого изменения. Он показывает, во что обойдётся поправка.
Итоговые счётчики:
| Показатель | Смысл |
|---|---|
| Субъектов в области | сколько субъектов затронет миграция |
| Переносится | значения переезжают как есть |
| Трансформируется | значения преобразуются по маппингу |
| Осиротеет (архив) | значения без места в новой версии уходят в архив (не удаляются) |
| Новых обязательных пустых | новые обязательные поля, которые придут пустыми |
| Форм станет Incomplete | формы, которые перестанут считаться заполненными |
Отдельная янтарная панель «Последствия миграции» прямо называет побочные эффекты:
- Подписи будут инвалидированы — сколько подписей слетит и потребует переподписания;
- SDV сбросится — сколько верификаций вернётся в статус «ожидает» (и сколько флагов медобзора);
- Queries — сколько запросов закроется и сколько откроется автоматически.
Есть и разбивка по субъектам — видно, у кого именно возникнут «сироты» и потери подписей.
Шаг 3. Выполнение (execute)
Заголовок раздела «Шаг 3. Выполнение (execute)»Выполнение переключает субъектов на целевую версию и применяет автоэффекты по классам (инвалидация подписей, сброс SDV, авто-открытие/закрытие запросов) с полным аудитом.
-
Создайте план: выберите исходную и целевую версии. План посчитает дифф.
-
Изучите дифф по классам, разрешите блокеры (если есть).
-
Запустите пробный прогон и оцените impact-отчёт и панель последствий.
-
Нажмите «Выполнить миграцию», подтвердите осознание последствий — субъекты переводятся на новую версию.
Операция идемпотентна и резюмируема: если часть субъектов не мигрировала (статус «С ошибками»), повторный запуск дообработает только оставшихся — уже мигрированные не трогаются. Результаты по каждому субъекту (мигрирован / ошибка / пропущен) видны в таблице.
Перепись «кто на какой версии»
Заголовок раздела «Перепись «кто на какой версии»»После миграции план показывает блок «Кто на какой версии» — сколько субъектов на каждой версии дизайна. Это прямой ответ на вопрос, который в старых EDC был источником невоспроизводимых экспортов: у вас всегда есть точная, аудируемая картина того, какой субъект какие определения видит.