atomic-booking-price-truncation.md 906 B

Округление цены бронирования: Ceil вместо int()

Контекст: Расчёт стоимости бронирования урезал дробные часы в пользу клиента. 2.5 часа = 2 часа в расчёте.

Суть

Было:

hours := int(b.EndTime.Sub(b.StartTime).Hours())
// 2.5 → 2, потеря выручки 20%

Стало:

hours := math.Ceil(b.EndTime.Sub(b.StartTime).Hours())
// 2.5 → 3, округление в пользу платформы

Почему Ceil: бронирование блокирует слот целиком, владелец не может продать оставшиеся 0.5 часа другому клиенту.

Связанные заметки

  • [[database-migrations]] — exclusion constraint на overlapping

#pricing #booking #golang #bug