Статьи Nazara
Как обработать незавершённое действие пользователя
Как различать сохранение и отправку, восстанавливать черновик и проверять результат перед повтором. Сценарии прерывания, ограничения и чек-лист.
Незавершённое действие в приложении нужно обрабатывать по его фактическому состоянию: сохранить допустимый черновик, показать последний подтверждённый шаг и предложить безопасное продолжение. Если отправка могла выполниться, сначала уточняют результат, затем решают вопрос повтора. Ниже — порядок для владельца рабочего приложения: описать потерю сети, закрытую вкладку и возврат пользователя так, чтобы введённые сведения не исчезали неожиданно, а заявка не создавалась дважды.
Различите ввод, сохранение и отправку
Пока человек заполняет поля, на экране находится незавершённая работа. Сохранённый черновик означает, что определённая версия данных записана в известное место. Отправленное обращение — другой результат: система приняла действие и может начать обработку. Эти состояния должны иметь разные подписи и правила продолжения.
Возьмём вымышленный сценарий заявки на закупку для офиса. Сотрудник указал состав и комментарий, отвлёкся, а затем закрыл вкладку. Другая ситуация: он нажал отправку и потерял сеть до ответа. В первом случае нужен черновик, во втором требуется узнать, появилась ли заявка. Одна универсальная кнопка «попробовать снова» не объясняет различие.
Опишите состояния на языке пользователя: «изменения ещё не сохранены», «черновик сохранён в этом браузере», «отправка выполняется», «заявка принята». Фразу «сохранено» нельзя показывать по факту нажатия кнопки, если запись ещё не подтверждена. Время последнего успешного сохранения полезнее непрерывно крутящегося значка без результата.
Для каждого перехода назначьте основание. Что подтверждает сохранение? Как приложение узнаёт о принятии? Когда разрешён повтор? Такая схема помогает разработчику реализовать поведение, а владельцу — проверить его. Она не требует показывать внутренние коды и названия API посетителю.
Выберите место и пределы хранения черновика
Локальный черновик живёт в конкретном браузере, серверный обычно связывается с учётной записью или другим согласованным контекстом. Выбирайте способ по задаче и допустимости хранения данных. Возможность продолжить на другом устройстве нельзя обещать только потому, что поля восстанавливаются после обновления одной вкладки.
В справке MDN о localStorage описано сохранение между сеансами браузера, а также ограничения и исключения, связанные с политиками хранения. В приватном режиме данные могут исчезнуть после закрытия последних приватных вкладок. Следовательно, локальная запись не является независимой резервной копией и не даёт гарантии вечного хранения.
Согласуйте, какие поля допустимо сохранять и на какой срок. Пароли и секреты не стоит включать в обычный черновик формы. На общем компьютере даже бытовой рабочий текст может оказаться доступен следующему человеку в том же профиле. Хранение должно соответствовать назначению приложения, а не включаться для всех полей автоматически.
Проверьте отказ записи: ограничение браузера, недоступный сервер или ошибка формата. Пользователь должен понимать, что последние изменения пока не сохранены. Если допустим ручной экспорт текста, объясните его как запасной путь с известными ограничениями. Не подменяйте неудачное сохранение зелёной отметкой ради спокойного интерфейса.
Чётко обозначьте границу сервиса. В каталоге приложений Nazara собраны разные инструменты; наличие каталога не означает, что у каждого есть автосохранение или перенос черновика между устройствами. Эта статья задаёт требования к проектируемому сценарию, а возможности выбранного продукта нужно проверять отдельно.

Предложите продолжение с понятного места
При возвращении покажите, какой черновик найден: задача, дата последнего сохранения и доступный следующий шаг. Если есть текущие несохранённые поля, не перезаписывайте их незаметно. Предложите выбрать восстановление или новую работу, объяснив, какие сведения будут заменены. Кнопки должны называть действие прямо.
Не считайте, что форма осталась актуальной. Пока пользователь отсутствовал, могли измениться доступные варианты, обязательные поля или права. Восстановите допустимые данные и заново проверьте их по текущим правилам перед отправкой. Если часть выбора больше недоступна, выделите её и сохраните остальной полезный ввод.
В учебной заявке выбранное кресло могло исчезнуть из каталога. Удалять всю заявку из-за одной позиции неудобно, а отправлять её как действующую — неверно. Сценарий продолжения должен показать неподтверждённую строку и предложить её уточнить. Это пример поведения, а не обещание функции конкретного конфигуратора.
Отдельно продумайте несколько черновиков. Название «последний» не объясняет, к какой задаче он относится. Нужен различимый контекст без лишнего раскрытия сведений. Если V1 формы и V2 хранят разные поля, перенос должен быть согласован; нельзя без проверки считать старый набор подходящим новой версии.
Объясните неопределённый результат отправки
Потеря ответа не доказывает, что сервер ничего не сделал. Запрос мог быть принят, а сообщение о результате — не дойти. Поэтому после неопределённой отправки сначала выясняют состояние операции по предусмотренному идентификатору или другому штатному механизму. Повторное нажатие без такой логики может создать второе действие.
Пользовательское сообщение должно отделять известное от неизвестного: «не удалось получить подтверждение, проверяем результат». Не пишите «заявка не отправлена», если это не установлено. Когда состояние удалось получить, покажите номер принятого обращения либо предложите повтор по согласованному правилу. Не оставляйте человека в бесконечном ожидании без следующего шага.
В проекте заранее определяют, как сервер распознаёт повтор одного намерения и как долго хранится его результат. Отключение кнопки помогает от случайных быстрых нажатий, но не заменяет серверную логику. Перезагрузка вкладки или повтор из другого окна всё равно должны иметь понятный исход. Техническое решение подбирают под операцию.
Если штатной проверки результата пока нет, назовите честный ручной маршрут. Например, сохранить контекст и обратиться к ответственному, не отправляя тот же запрос снова до уточнения. Это ограничение текущего процесса. Нельзя обещать безопасный автоматический повтор, которого система не реализует.
Согласуйте работу нескольких вкладок и истечение сеанса
Две вкладки могут редактировать разные версии одной работы. Если последняя запись всегда побеждает, более старый текст способен затереть новый. Определите, обнаруживает ли приложение конфликт и как предлагает выбор. Для небольшой формы допустимо ограничить одновременное редактирование, но это должно быть понятно человеку.
Не смешивайте восстановление черновика с обходом входа. После окончания сеанса пользователь подтверждает доступ штатным способом. Восстановленные поля ещё не разрешают отправку от прежнего имени. Если в браузере вошёл другой сотрудник, он не должен автоматически получить чужую незавершённую работу только из-за совпавшего адреса страницы.
При выходе определите судьбу локальных данных: очистка, предупреждение или иной согласованный порядок. Решение зависит от чувствительности сведений и назначения устройства. Проверьте его в реальном сценарии, включая возврат назад и повторное открытие. Не делайте универсальный вывод о безопасности по одному успешному выходу.
Для серверного черновика полезно различать время изменения и версию, на которой пользователь начал работу. При конфликте покажите возможность сверить варианты. Не объединяйте автоматически важные поля так, что человек не заметит смысловой подмены. Автосохранение должно поддерживать работу, а не скрывать её состояние.

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