Oct 24 04:56 · AI content
Сервер принял запрос. Почему интерфейс уже пишет «Готово»?
Кнопка экспорта позеленела. Сервер вернул 202. Файла ещё нет.
Разберём условный сервис: пользователь запускает выгрузку, API принимает задание, а отдельный обработчик готовит файл. Если интерфейс сразу пишет «Экспорт готов», он обещает результат, который система пока не подтвердила.
Что означает ответ сервера
HTTP 202 означает, что запрос принят в обработку. Работа может ещё не начаться, завершиться позже или закончиться ошибкой. Сам ответ не доказывает, что файл создан.
Описание статуса в MDN:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/202
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/202
Для такого сервиса полезно разделить состояния: запрос отправляется, задание в очереди, файл готовится, готов, ошибка. Отдельно — состояние неизвестно, когда проверить обработчик сейчас не получается.
Это состояния конкретного приложения. Способ проверки результата нужно определить в его API: например, ресурс статуса по идентификатору задания. Код 202 сам по себе такого адреса не создаёт.
Где появляется второй экспорт
Представьте последовательность:
1. Сервер принял задание.
2. Проверка статуса оборвалась.
3. Интерфейс показал ошибку и предложил запустить экспорт заново.
4. Первое задание продолжает работать, а пользователь создаёт второе.
2. Проверка статуса оборвалась.
3. Интерфейс показал ошибку и предложил запустить экспорт заново.
4. Первое задание продолжает работать, а пользователь создаёт второе.
Проблема здесь в том, что ошибка наблюдения превратилась в утверждение о провале самой работы. До повторного запуска стоит сохранить ID и проверить существующее задание, если API это позволяет.
Что проверить до выпуска
Возьмите один сценарий и задайте ожидаемый результат для каждой ситуации: успешное завершение, ошибка обработчика, пропавший ответ статуса, перезагрузка страницы в очереди, недоступный файл после завершения.
В проверке фиксируйте не только код ответа. Сохраните идентификатор задания, наблюдаемое состояние, итог и текст, который увидел пользователь. Если состояние неизвестно, зелёной отметки «готово» быть не должно.
Такое упражнение полезно и для небольшого проекта: достаточно таблицы с ожидаемым поведением и фактическим результатом. Оно показывает, где интерфейс выдаёт намерение за выполненную работу.
Инструмент для подготовки запуска
Launch Control Desk помогает собрать проверки, риски, ответственных и подтверждения перед выпуском. В нём можно записать такой сценарий, ожидаемый результат, итог проверки и зависимость от обработчика.
В комплекте локальное приложение RU/EN, инструкции и примеры. Распакуйте ZIP и откройте index.html. Рабочие данные хранятся локально; JSON-копии выгружайте отдельно. Инструмент помогает вести проверку, а результаты испытаний вы вносите сами.
Цена — 1 190 ₽ разово, без обязательной подписки внутри приложения.
Купить Launch Control Desk:
https://boosty.to/swiftuidev/posts/68708fd5-1dad-4ed3-ac0c-3356d796a00f?utm_source=boosty&utm_medium=post&utm_campaign=engineering_20261023
Купить Launch Control Desk:
https://boosty.to/swiftuidev/posts/68708fd5-1dad-4ed3-ac0c-3356d796a00f?utm_source=boosty&utm_medium=post&utm_campaign=engineering_20261023
Я Даниил Корнилов, автор Kornilov Tools. Подпишитесь на блог и Telegram: разбираю ошибки в интерфейсах, работу с данными и подготовку небольших продуктов к запуску.
https://t.me/SwiftUIDaily
https://t.me/SwiftUIDaily
Где в вашем продукте «успешно» пока означает только «поставлено в очередь»?
kornilovtools