Что исправить в FastAPI-сервисе перевода средств

Нужны проверка владельца счёта, точное представление суммы, единая транзакция, защита конкурентного списания и идемпотентность. Два независимых UPDATE могут оставить деньги списанными без зачисления.

Короткий ответ

Что ответить на собеседовании

Нужны проверка владельца счёта, точное представление суммы, единая транзакция, защита конкурентного списания и идемпотентность. Два независимых UPDATE могут оставить деньги списанными без зачисления.

Подробный разбор

Ответ с пояснениями

Условие

Учебный endpoint принимает отправителя, получателя и float-сумму, затем отдельно уменьшает и увеличивает балансы. Нет идемпотентности и транзакции. Какие риски исправить?

Ответ

Нужны проверка владельца счёта, точное представление суммы, единая транзакция, защита конкурентного списания и идемпотентность. Два независимых UPDATE могут оставить деньги списанными без зачисления.

Храните сумму в минимальных единицах либо согласованном decimal-формате. Зафиксируйте порядок блокировок счетов, проверьте положительность суммы, валюту и остаток. Повтор запроса должен вернуть тот же результат, а не новый перевод. Синхронный драйвер БД нельзя просто вызывать внутри async endpoint, рассчитывая на неблокирующее поведение.

Источник: fastapi.tiangolo.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее