Два менеджера редактировали один заказ, и изменения первого пропали
Менеджер А открыл карточку заказа и поменял адрес доставки. Одновременно менеджер Б открыл тот же заказ и поменял комментарий. Оба сохранили через PUT /orders/77 с полным объектом заказа. Б сохранил вторым — и адрес вернулся к старому.
Какое решение на уровне API предотвращает такую потерю?
- Оптимистичная блокировка: версия в запросе, при расхождении — 409 или 412
- Блокировать заказ в базе, пока карточка открыта у менеджера
- Сохранять изменения, пришедшие по времени последними
- Отправлять изменения не чаще раза в минуту
