Назад к вопросам
OZON
Middle+
3
Задача: вас попросили сделать код ревью новой фичи, суть которой в возможности забронировать тур (состоящий из авиабилета и отеля). Фичи для раздельного бронирования авиабилета и тура уже существуют, от данной задачи ожидается наличие единого метода, который забронирует тур целиком, либо ничего из компонентов тура.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В такой задаче важно обеспечить атомарность операции бронирования тура, чтобы либо оба компонента (авиабилет и отель) были забронированы, либо ни один — иначе возможна рассинхронизация данных.
Основные моменты для ревью:
- Использовать транзакцию, которая охватывает оба бронирования.
- Обработать возможные ошибки каждого шага, чтобы при неудаче откатить изменения.
- Проверить, что вызовы к существующим методам бронирования авиабилета и отеля поддерживают откат или отмену.
- Логировать процесс для отладки и аудита.
Пример на C# с использованием транзакции (псевдокод):
using(var transaction = dbContext.Database.BeginTransaction())
{
try
{
BookFlight(flightDetails);
BookHotel(hotelDetails);
transaction.Commit();
}
catch(Exception)
{
transaction.Rollback();
throw;
}
}
Если методы бронирования не поддерживают транзакции, нужно реализовать компенсационные действия (отмена бронирования), чтобы при ошибке откатить уже сделанные брони.