Ручная проверка защиты вывода¶
Документ предназначен для QA и операторской проверки на тестовых стендах. Он описывает, как проверять пользовательскую защиту вывода в app и операторский контроль в admin.
Главный принцип: каждый вывод создаёт заявку и проходит операционную обработку Saga. Режим защиты определяет, можно ли создать заявку, на какой адрес и когда она станет доступна оператору.
Что проверяем¶
Проверка считается полной, если подтверждены четыре области:
| Область | Что должно работать |
|---|---|
| Режимы защиты | Стандарт, Только подтверждённые адреса, Вывод отключён, отдельная Аварийная блокировка |
| Изменение настроек | Усиление сразу, ослабление через задержку и email, аварийная блокировка только через оператора |
| Пользовательский сценарий | Настройки защиты, подтверждённые адреса, форма вывода, email-отмена заявки |
| Admin-сценарий | Приоритет в списке клиентов, блок Защита вывода в карточке, восстановление заявок, контекст на странице выводов |
Быстрый маршрут проверки¶
Для быстрой регрессии пройдите сценарии в таком порядке:
Стандарт: создать или подготовить заявку на любой валидный адрес.Только подтверждённые адреса: проверить активный адрес и отказ для неподтверждённого адреса.Вывод отключён: убедиться, что новые заявки заблокированы, а старые не меняются.Аварийная блокировка: проверить блокировку новых заявок и перевод ожидающих заявок в заблокированные.Оператор: снять аварийную блокировку и отдельно восстановить одну заблокированную заявку.
Возможности по режимам¶
| Режим | Создание новой заявки | Адрес назначения | Что происходит с уже созданными заявками |
|---|---|---|---|
| Стандарт | Разрешено | Любой валидный адрес поддерживаемой сети | Не меняются; новая заявка получает задержку до обработки |
| Только подтверждённые адреса | Разрешено | Только активный подтверждённый адрес выбранной сети | Не меняются; новая заявка получает задержку до обработки |
| Вывод отключён | Заблокировано | Не применимо | Не меняются только из-за включения режима |
| Аварийная блокировка | Заблокировано | Не применимо | Ожидающие заявки становятся заблокированными |
Аварийная блокировка не является обычным пользовательским режимом рядом с остальными. Это отдельная защита, которую снимает только оператор после проверки восстановления доступа.
Изменение настроек¶
| Изменение | Когда применяется | Что проверить |
|---|---|---|
| Стандарт → Только подтверждённые адреса | Сразу | Форма вывода перестаёт принимать произвольный адрес |
| Стандарт → Вывод отключён | Сразу | Новые заявки блокируются |
| Только подтверждённые адреса → Вывод отключён | Сразу | Новые заявки блокируются, список адресов остаётся доступен |
| Увеличение задержки | Сразу | Новые заявки получают большую задержку |
| Уменьшение задержки | После задержки и email-подтверждения | На странице видно запланированное ослабление защиты |
| Только подтверждённые адреса → Стандарт | После задержки и email-подтверждения | До применения форма остаётся в режиме подтверждённых адресов |
| Вывод отключён → Только подтверждённые адреса | После задержки и email-подтверждения | До применения новые заявки остаются заблокированы |
| Вывод отключён → Стандарт | После задержки и email-подтверждения | До применения новые заявки остаются заблокированы |
| Включение аварийной блокировки | Немедленно | Новые заявки блокируются, ожидающие заявки становятся заблокированными |
| Снятие аварийной блокировки | Только оператором | Заблокированные заявки не восстанавливаются автоматически |
Пока ослабление защиты ждёт применения, повторный запрос на ослабление должен возвращать понятную ошибку. Отмена запланированного ослабления применяется сразу.
Состояния заявки¶
| Состояние заявки | Значение | Доступность оператору |
|---|---|---|
| Ждёт задержку | Заявка создана и пользователь получил email для отмены | Недоступна для обработки |
| Готова к обработке | Защитная задержка прошла | Доступна для обычной операционной обработки |
| Отменена | Пользователь отменил заявку по email | Недоступна |
| Заблокирована | Заявка заблокирована аварийной защитой или оператором | Недоступна до отдельного восстановления |
Действие Восстановить заявку не одобряет вывод. Оно только возвращает заблокированную заявку к обычной операторской обработке.
Подготовка¶
- Тестовый пользователь в
https://app.saga.surfили stage-окружении. - Тестовый администратор в
https://admin.saga.surfили stage-окружении с доступом к клиентам и операциям вывода. - Баланс пользователя для минимальной тестовой заявки.
- Тестовый адрес в поддерживаемой сети.
- Доступ к email тестового пользователя.
- Согласование, можно ли создавать заявку или нужно остановиться перед финальным подтверждением.
Границы безопасности:
- Не проверяйте сценарии на production-аккаунтах без отдельного разрешения.
- Не одобряйте и не исполняйте фактический вывод в рамках этой проверки.
- Для действий администратора используйте только тестового клиента и фиксируйте причину изменения.
App: Стандарт¶

Визуально проверьте: ручной ввод адреса доступен, режим обозначен как Стандарт, текст говорит о заявке и задержке до операционной обработки Saga.
- Войдите в пользовательское приложение.
- Откройте форму вывода.
- Проверьте, что адрес можно ввести вручную.
- Введите валидный тестовый адрес и согласованную сумму.
- Создайте заявку или остановитесь перед финальным подтверждением.
Ожидаемый результат:
- Подтверждённый адрес не обязателен.
- Пользователь видит, что создаётся заявка на вывод.
- Текст объясняет задержку до операционной обработки Saga.
- Интерфейс не обещает исполнение без оператора и не зависит от суммы как от отдельного пути обработки.
App: Подтверждённый адрес¶

Визуально проверьте: адреса разделены по статусам, адрес с ожидающим email-подтверждением не выглядит активным адресом для вывода, активный адрес явно готов к использованию после своей задержки.
- Откройте
Профиль→Защита вывода. - В блоке подтверждённых адресов выберите сеть.
- Введите тестовый адрес и понятное название.
- Сохраните адрес.
- Откройте письмо и перейдите по ссылке подтверждения.
- Вернитесь на страницу защиты вывода.
Ожидаемый результат:
- До подтверждения адрес отображается как ожидающий email.
- После подтверждения открывается понятная страница результата.
- Адрес становится пригодным для вывода только после своей задержки активации.
- Повторное открытие той же ссылки показывает недействительное или уже использованное состояние.


App: Только подтверждённые адреса¶

Визуально проверьте: вместо произвольного ручного ввода используется выбор активного подтверждённого адреса, а текст не обещает исполнение без операционной обработки.
- Убедитесь, что у пользователя есть активный подтверждённый адрес.
- На странице
Защита выводавыберите режимТолько подтверждённые адреса. - Сохраните настройки.
- Откройте форму вывода.
- Попробуйте создать заявку на активный адрес.
- Проверьте, что неподтверждённый или ожидающий подтверждения адрес недоступен для выбора.
Ожидаемый результат:
- Для активного адреса заявка создаётся.
- Для неподтверждённого адреса заявку нельзя создать.
- Если неподтверждённый адрес всё же попадает в попытку вывода, ошибка объясняет, что нужен активный подтверждённый адрес.
- Произвольный ручной ввод адреса не заменяет список подтверждённых адресов.
App: Вывод отключён¶

Визуально проверьте: создание новой заявки заблокировано, причина блокировки видна до попытки отправки, ранее созданные заявки не представлены как отменённые этим режимом.
- На странице
Защита выводавыберите режимВывод отключён. - Откройте форму вывода.
- Попробуйте создать новую заявку.
- Проверьте ранее созданные заявки в истории.
Ожидаемый результат:
- Новая заявка не создаётся.
- Пользователь видит понятное объяснение блокировки.
- Ранее созданные заявки не исчезают и не меняют статус только из-за включения режима.
- Возврат к менее строгому режиму планируется на будущее, а не применяется сразу.
App: Запланированное ослабление¶


Визуально проверьте: текущий режим и задержка отделены от будущего ослабления, запланированное ослабление показывает целевые параметры и время применения.
Если задержка применения длинная, проверка считается достаточной после фиксации видимого времени применения и email-подтверждения. Дожидаться фактического применения нужно только в полной регрессии или перед релизом этой логики.
- Включите более строгий режим или увеличьте задержку.
- Проверьте, что усиление применяется сразу.
- Затем попробуйте ослабить режим или уменьшить задержку.
- Проверьте страницу
Защита вывода. - Откройте email, связанный с изменением, и подтвердите действие.
Ожидаемый результат:
- Усиление применяется сразу.
- Ослабление отображается как запланированное действие.
- До email-подтверждения ослабление не применяется.
- Видно целевой режим, целевая задержка и время применения.
- Пользователь может отменить запланированное ослабление.
- Новый запрос на ослабление до завершения текущего не принимается.
App: Аварийная блокировка¶

Визуально проверьте: аварийная блокировка отделена от обычных режимов, пользователь не видит самостоятельного снятия, интерфейс направляет к поддержке.
- Откройте
Профиль→Защита вывода. - Найдите отдельный блок аварийной блокировки.
- Включите блокировку только на тестовом аккаунте.
- Откройте форму вывода.
- Проверьте ожидающие заявки в истории.
Ожидаемый результат:
- Новые заявки заблокированы.
- Ожидающие заявки переведены в заблокированные.
- Запланированное ослабление очищено.
- Пользователь не видит самостоятельного действия для снятия аварийной блокировки.
- Интерфейс направляет к поддержке и не обещает автоматического восстановления заявок.
App: Отмена заявки по email¶


Визуально проверьте: первое открытие ссылки только показывает подтверждение действия, а результат после явной отмены предлагает включить аварийную блокировку при подозрении на компрометацию.
- Создайте заявку, которая ждёт задержку.
- Откройте письмо по этой заявке.
- Перейдите по ссылке отмены.
- Не подтверждайте действие на первом экране.
- Вернитесь в приложение и проверьте, что заявка ещё не отменена.
- Снова откройте страницу отмены и нажмите явную кнопку отмены.
Ожидаемый результат:
- Простое открытие ссылки не отменяет заявку.
- Сначала открывается страница подтверждения действия.
- После явного подтверждения заявка становится отменённой.
- Повторное использование ссылки показывает недействительное или уже использованное состояние.
- После отмены интерфейс предлагает включить аварийную блокировку при подозрении на компрометацию.
Оператор: Список клиентов¶

Визуально проверьте: клиенты с состояниями, требующими внимания, подняты выше, рядом с клиентом видны компактные сигналы защиты, управление режимами отсутствует.
- Откройте
/admin/usersна нужном стенде. - Найдите тестового пользователя.
- Проверьте бейдж защиты вывода рядом с клиентом.
- Проверьте пользователей с аварийной блокировкой, заблокированными заявками или запланированным ослаблением защиты.
Ожидаемый результат:
- Видны статусы
Стандарт,Только подтверждённые адреса,Вывод отключён,Аварийная блокировка. - Пользователи с требующими внимания состояниями подняты выше глобально, а не только внутри текущей страницы.
- У пользователя видны краткие сигналы: заблокированные заявки, запланированное ослабление защиты, подтверждённые адреса, последнее событие.
- В списке нет кнопок управления режимами защиты.
Оператор: Карточка клиента¶

Визуально проверьте: блок показывает режим, задержку, запланированное ослабление защиты, аварийную блокировку, количество адресов и заблокированные заявки в одном операторском контексте.
- Откройте карточку пользователя из списка клиентов.
- Найдите блок
Защита выводанад историей операций. - Проверьте текущий режим, задержку, количество подтверждённых адресов и открытые заявки.
- Если есть запланированное ослабление, проверьте целевой режим, задержку и время применения.
- Если активна аварийная блокировка, проверьте дату, автора и причину.
Ожидаемый результат:
- Защита вывода управляется из карточки клиента.
- Аварийная блокировка визуально отделена от обычного режима.
- Запланированное ослабление видно сразу, не только в журнале.
- Заблокированные заявки показаны как отдельный список действий восстановления.
Оператор: Снятие аварийной блокировки¶

Визуально проверьте: снятие требует целевой режим, причину и номер подтверждения; текст явно говорит, что заблокированные заявки не восстановятся автоматически.
- Откройте карточку пользователя с активной аварийной блокировкой.
- Нажмите
Снять аварийную блокировку. - Укажите целевой режим, причину и номер обращения или подтверждения.
- Подтвердите действие.
Ожидаемый результат:
- Аварийная блокировка снята.
- Режим становится выбранным целевым режимом.
- Запланированное ослабление очищено.
- Заблокированные заявки не восстанавливаются сами.
- Клиент получает уведомление, если такой канал настроен на стенде.
Оператор: Восстановление заблокированной заявки¶

Визуально проверьте: действие называется Восстановить заявку, рядом указано, что оно возвращает заявку к обработке, но не одобряет сам вывод.
- Откройте карточку пользователя с заблокированной заявкой.
- В блоке
Защита выводанажмитеВосстановить заявку. - Перейдите во вкладку выводов или на страницу
Выводы.
Ожидаемый результат:
- Заявка возвращается к обычной операторской обработке.
- Сам вывод не одобряется этим действием.
- Для дальнейшей обработки оператор использует обычный процесс операций вывода.
Оператор: Страница выводов¶

Визуально проверьте: /admin/withdrawals показывает защитную метку заявки и ссылку на карточку клиента, но не содержит управления режимом защиты.
- Откройте
/admin/withdrawalsна нужном стенде. - Найдите заявку с защитной меткой.
- Проверьте контекст в колонке статуса.
- Откройте ссылку
Открыть безопасность клиента.
Ожидаемый результат:
- Страница выводов показывает только контекст защиты у заявки.
- Ссылка ведёт в карточку клиента.
- На странице выводов нет управления режимом защиты, запланированным ослаблением или аварийной блокировкой.
Ошибки¶
Проверьте эти случаи отдельно:
- Неверный формат адреса: заявка не создаётся, показана ошибка формата.
- Адрес не подтверждён для режима подтверждённых адресов: заявка не создаётся, показано требование активного адреса.
- Повторная email-ссылка: показано недействительное или уже использованное состояние.
- Истёкшая email-ссылка: показано, что ссылка устарела.
- Нет доступа у администратора: кнопки восстановления заблокированы или показана ошибка доступа.
- Сетевая ошибка: действие не считается выполненным, ошибка видна пользователю.
Успешная проверка¶
Проверка успешна, если:
- В
appработают три пользовательских режима и отдельная аварийная блокировка. - В
appнет текстов, обещающих исполнение без операционной обработки Saga. - Адрес можно добавить, подтвердить по email и использовать после активации.
- Режим подтверждённых адресов блокирует неподтверждённые адреса.
- Режим отключённого вывода блокирует новые заявки и не меняет существующие заявки.
- Email-ссылка отмены требует явного подтверждения.
- Истёкшие и повторные email-ссылки показывают понятное недействительное состояние.
- Администратор без нужного доступа не может выполнить восстановление или видит явную ошибку доступа.
- При сетевой ошибке действие не считается выполненным и ошибка видна пользователю.
- В
admin/usersвидны компактные индикаторы риска. - В карточке клиента видны режим, запланированное ослабление, аварийная блокировка, подтверждённые адреса и заблокированные заявки.
- Восстановление заблокированной заявки не одобряет вывод.
/admin/withdrawalsостаётся страницей операций и не управляет защитой пользователя.
Если любой пункт не совпал, зафиксируйте аккаунт, сумму, адрес, сеть, время проверки и текст ошибки.