foxnaim

QA · Надёжность

Один двойной клик создаёт две заявки. Разбор защиты на трёх слоях.

Форма отправилась, но человек не увидел реакцию и нажал ещё раз. В CRM появились две одинаковые заявки, и менеджер звонит клиенту дважды. Один слой улучшает интерфейс, три слоя защищают результат.

Обложка проекта Двойная отправка формы

Задача

Что нужно было показать

Форму заявки собирают за вечер, и на демонстрации она работает. Сбой появляется на медленной сети: ответ идёт секунды, у кнопки нет понятного состояния, человек нажимает второй раз. Дубль доходит до CRM, а в сценарии с оплатой — до списания.

Решение

Как устроен концепт

Защита ставится не в одном месте, а в трёх: в интерфейсе, в API и в базе данных. Каждый слой закрывает свой класс повторов, и ни один из них не заменяет остальные.

Проверка на реальном сценарии

Как одна заявка превращается в две

Пользователь заполняет форму и нажимает «Отправить заявку». Сеть отвечает медленно, кнопка выглядит активной, реакции нет. Человек нажимает ещё раз — и в CRM появляются две карточки с одним и тем же номером.

User flow

Сценарий от входа до результата

  1. 01

    Пользователь заполняет форму и нажимает кнопку отправки.

  2. 02

    Сеть отвечает медленно, кнопка выглядит активной, реакции нет.

  3. 03

    Человек нажимает ещё раз, и в CRM появляются две одинаковые заявки.

Решения

Почему интерфейс устроен так

  • Кнопка блокируется сразу и показывает понятный статус
  • Повтор с тем же ключом идемпотентности возвращает уже созданную запись
  • Ограничение в базе остаётся последней линией на случай гонки запросов

Границы

Что этот кейс не обещает

  • Разбор показывает учебный пример, а не данные реального клиента
  • Цифры потерь и конверсии не измерялись и здесь не приводятся
  • Конкретная реализация зависит от стека, CRM и платёжного провайдера

Что реализовано

Технологии

Idempotency keyUnique constraintREST APIPostgreSQLQA

Next iteration

Что потребуется для рабочей версии

  1. Включить медленную сеть в инструментах разработчика
  2. Нажать кнопку отправки дважды подряд
  3. Сравнить не экран, а количество записей в базе и в CRM

Похожие решения

Этот кейс показывает один конкретный сценарий. В каталоге решений собраны варианты для заявок, записи, торговли, CRM и AI-помощников.