Антидубль платежей: защита в 2 слоя
В PDP поймали классический финт продакшена: пользователь оплатил дважды, банк ответил не сразу, а система уже напряглась. Чтобы не ловить две сделки на одно помещение, сделали двухуровневую защиту.

В PDP мы поймали классический финт продакшена: пользователь тыкнул оплату дважды, банк ответил не сразу, а система уже напряглась. Чтобы не ловить «ой, у нас две сделки на одно помещение», сделали двухуровневую защиту.
Первый слой — бизнес-логика в приложении: проверяем, что по помещению уже нет активной сделки. Второй — ограничение на уровне БД, которое физически не даёт создать пересекающиеся бронирования. То есть даже если где-то случится race condition, база скажет: не сегодня.
Жёсткое правило простое: одно помещение — одна активная сделка.
И да, жизнь как всегда богаче схем: бывает, банк считает платёж успешным, а наша система — нет. Для таких кейсов ввели статус оплачено с ошибкой, чтобы не терять деньги и разруливать расхождения без ручной магии в 2 ночи.
Надёжность сейчас — это уже не фича, а must-have.