Логика возвратов

Логика возвратов в FirstWork является частью финансовой системы и обеспечивает корректное перераспределение средств между участниками сделки в ситуациях, когда заказ не может быть завершён или был завершён ошибочно. Возвраты выполняются строго в рамках транзакций базы данных и всегда сопровождаются обновлением балансов, транзакций и прибыли проекта. Логика возвратов встроена в архитектуру сделок и работает в зависимости от стадии, на которой находится заказ.

Возврат средств возможен в двух основных сценариях. Первый сценарий — отмена сделки в процессе спора. В этом случае сделка находится в стадии четыре, и возврат выполняется после проверки валидности действия по ключу сделки или по правам управления. Система возвращает заблокированные средства стороне, которая должна их получить, закрывает спор, обновляет транзакции и переводит сделку в стадию три. Эта операция полностью отменяет финансовые последствия сделки и восстанавливает исходное состояние балансов участников.

Второй сценарий — возврат после завершения сделки. Он применяется, когда сделка уже была подтверждена и перешла в стадию два, но по решению арбитра требуется откат. В этом случае система выполняет перерасчёт комиссии, корректирует прибыль проекта, списывает средства с одной стороны и возвращает их другой. Возврат после завершения сделки требует дополнительной проверки кулдауна, что предотвращает злоупотребления и обеспечивает стабильность финансовой модели. После выполнения возврата сделка переводится в стадию три, а транзакции обновляются таким образом, чтобы отразить новое распределение средств.

Во всех сценариях возврат выполняется атомарно. Система блокирует строку сделки через select for update, проверяет текущую стадию, валидность действия и корректность данных. Если любое условие не выполняется, операция откатывается. Это исключает ситуации, когда средства списаны, но не возвращены, или когда транзакции обновлены без изменения балансов. Такой подход обеспечивает согласованность данных и защищает систему от ошибок и повторных действий.

Логика возвратов также включает корректировку комиссии. Если сделка была завершена и комиссия уже была добавлена в прибыль проекта, система уменьшает прибыль на соответствующую сумму. Это гарантирует, что финансовые показатели проекта всегда отражают реальное состояние дел и не содержат завышенных значений. Комиссия никогда не удерживается при возврате, что делает систему честной и предсказуемой для пользователей.

Возвраты всегда сопровождаются обновлением транзакций. Система фиксирует возврат как отдельное действие, что позволяет точно отслеживать историю финансовых операций. Это обеспечивает прозрачность и возможность аудита, а также позволяет пользователям видеть полную историю движения средств по каждой сделке.

Логика возвратов в FirstWork построена таким образом, чтобы любые спорные или отменённые сделки завершались корректным перераспределением средств, без нарушения балансов и без потери данных. Она обеспечивает стабильность финансовой системы, защищает пользователей и поддерживает целостность всех связанных подсистем.