Skip to content

Репликация: интерфейс и пользовательские сценарии ​

Статус: проект UI, без подключённого runtime. Интерактивный макет в разговоре демонстрирует состояния на условных данных; он не управляет сервером. API, протокол и этапы.

Экран «Инфраструктура → Репликация» ​

Основной экран показывает режим защиты записи, primary и список зеркал. До первой настройки — короткое объяснение, что будет скопировано, требования к диску/сети и одна кнопка «Подключить узел». Общие сведения о продукте и развёртывании не повторяются на каждом экране.

На карточке узла: имя/роль, доступность, стадия синхронизации, время свежего наблюдения. Отдельно от состояния сети — раздача и проверенные копии. В выбранном узле три значения: проверенные bytes/объекты, остающийся backlog и место, удерживаемое от очистки на source. Неизвестные значения показываются «Нет данных», а не 0/100%.

Не показывать среднюю скорость, ETA или «4 ТБ скопировано», пока они не измерены/подтверждены. ETA выводится диапазоном только при достаточно стабильной скорости, при паузе/повторном seed исчезает. Прогресс initial seed и очередь новых изменений — разные строки.

Верхнее сообщение объясняет последствия: «Запись доступна; зеркало отстаёт», «Раздача с зеркала остановлена: недоступна проверка прав», «Запись приостановлена: нет обязательной второй копии». Состояние не обозначается одним цветом. «Синхронизировано» не означает «writer можно переключить».

Мастер подключения ​

  1. Режим и назначение. Mirror либо доступный HA provider из capabilities. У mirror видно: published files; primary нужен для каталога и прав; writer переключать нельзя. Нереализованный HA-профиль не выглядит доступным вариантом установки.
  2. Подготовка узла. Выбор OS installer/remote setup, локальное создание node identity и выбор volume. На исходной машине не вводятся произвольные команды/пути target. Нельзя выбрать непустой чужой data root. При ручной установке — одна команда/пакет, проверка статуса службой, а не файл CMD вместо installer.
  3. Доверие. Pairing code ограниченного срока, fingerprints обеих сторон, подтверждённое HTTPS/mTLS. Secret показан один раз, очищается при закрытии, не сохраняется в браузере и не попадает в clipboard автоматически. Недействительный сертификат блокирует шаг; «продолжить небезопасно» отсутствует.
  4. Данные и ресурсы. Репозитории, полный объём копии, резерв диска, staging, max backlog, concurrency/byte limits. Показать, что каждый узел должен вместить свою полную выбранную копию. Поля имеют единицы; предлагаемые лимиты редактируются в расширенном разделе.
  5. Preflight и запуск. Результаты проверки сети, места, version/protocol, volume identity, доступа и возможности защиты от GC. Итоговая карточка последствий и «Начать синхронизацию». Принятая команда показывает operationId/фазу, а не «Узел подключён» до подтверждения.

После потери связи/reload мастер читает сохранённый operation status у сервера. Повтор с тем же Idempotency-Key продолжает ту же операцию. Утраченный pairing secret отзывается и выдаётся новый; нельзя показывать старый токен из локального журнала. Журнал незавершённой формы может содержать лишь несекретный operationId/черновик настроек согласно общей политике приватности.

Действия по состоянию ​

СостояниеОсновное действиеЧто остаётся видно
Seeding / catching upПаузаЗакрытые checkpoints, backlog, retained source bytes
DrainingОжидание / статус операцииКакие активные потоки ещё завершаются; конечный срок
PausedПродолжитьПоследний ACK, место под pins, последствия долгой паузы
Target offlineПроверить связьЗапись на primary, неизвестная актуальность target; пауза не лечит сеть
Authority offlineДиагностикаBytes на target сохранены; новые reads запрещены
Checksum mismatchПодробности → повторить проверку/передачуQuarantined artifact; отсутствие его в раздаче
Disk full / pins limitОткрыть использование местаКонкретный reserve/backlog threshold, без предложения отключить защиту
Reseed requiredПросмотреть план пересинхронизацииПричина, объём, возможное повторное использование проверенных bytes
Retiring / interruptedСтатус / reconcileНельзя скрыть незавершённую операцию удалением строки
Caught upПроверить целостностьCursor и свежесть результата, отдельное состояние delivery

«Пауза» не удаляет копию и не снимает pins. «Очистить очередь» разделяется на скрытие завершённой истории и прекращение конкретных obligations через отдельную подтверждаемую операцию. Успех в UI означает серверный receipt, не отправленный POST.

Настройки и удаление узла ​

Обычные поля — имя, scope, concurrency и byte ceiling. В расширенных — thresholds, retry, окна обслуживания, доверенные адреса. Секреты не возвращаются маскированной строкой как редактируемое значение. CAS conflict сохраняет черновик, показывает изменения сервера и предлагает заново сверить политику.

Retire сначала показывает preview: что перестанет раздаваться, какие source pins будут освобождены и какие файлы сохранятся на target. По умолчанию данные target остаются. Purge локальной копии — отдельный последующий preview/операция, когда worker/readers остановлены и их владение подтверждённо завершено. Неизвестное состояние не допускает кнопку «Удалить всё равно».

Переключение writer ​

В mirror v1 нет действующей кнопки promote. Информация «Для переключения writer нужен HA-профиль» видима в настройках режима, а не спрятана в tooltip. В будущем HA-профиле мастер показывает: доступность authority, подтверждённые копии, fencing provider, возможную потерю, влияние на uploads/reads, план cutover и условия отката.

Команда «Переключить» доступна только по результату свежего server-side preview, с отдельным permission. UI не принимает решение по heartbeat. После отправки UI наблюдает фазы drain → fence → verify → promote → readiness → route; потеря связи выводит interrupted и предлагает проверить тот же operation, а не повторно выполнять переключение. Нулевой RPO не выводится по одному зелёному индикатору replication.

Визуальная система и доступность ​

Основной код UI использует текущие tokens.css, светлую/тёмную/системную темы и RU/EN словари. Цвета, радиусы, spacing, типографика и motion не дублируются в feature CSS. В компонентах нет физических путей, SQL/LSN и служебных значений; они доступны в административных подробностях там, где помогают разбору инцидента.

Основной экран компактен: одна строка последствий, узлы, три показателя и доступные действия. Инвентарь и подробные ошибки открываются по запросу с cursor pagination. Tooltips содержат объяснения терминов, но ограничения записи, потери данных, доверия и удаления всегда видимы. Переходы короткие, без бесконечной пульсации и фиктивного движения прогресса; reduced motion отключает необязательные эффекты.

Forms сохраняют значения, focus и активную операцию при смене темы/языка. Кнопки имеют доступные имена; изменения стадий объявляются aria-live без чтения каждого байта. На 390 px узлы/показатели складываются вертикально, таблица inventory прокручивается внутри подписанного контейнера. Поддерживаются loading, empty, offline, revoked permission, stale data, CAS и partial failure.

Browser gate ​

Мастер с реальными тестовыми primary/target: подключение, истёкший token, несовместимость, ограниченный диск, потеря ответа, reload/resume; затем pause/drain, новый ACK, диапазон с готовой копии, authority outage, CAS, quarantine, retire и запрет purge при неопределённой остановке. RU/EN × light/dark × 390/1440 px, клавиатура и reduced motion. Реальные ОС installers, сертификаты и fencing дополняют браузерные проверки, не имитируются зелёным mock статусом.

Arkvory · ProAnimaStudio