Представьте, пользователь работая в FAST видит ошибку "Произошла ошибка, обратитесь в поддержку".
Он не знает, что это банк, он думает "почему FAST не работает?"
Он уходит работать в ПО банка или к конкуренту.
Мы должны не просто передавать ошибку "как есть", а интерпретировать ошибки банка пользователю.
чтобы не было "а что делать?", можно:
- классифицировать ошибки банка по нашим сценариям: какие можно/нельзя исправить.
- какие можно переводить понятнее.
- какие требуют retry-логики у нас (внедрить стратегию обработки ошибок, при которой программа автоматически повторно выполняет операцию после сбоя. Это позволяет восстановиться от временных проблем, таких как сетевые сбои или временная недоступность сервиса, делая систему более надежной и отказоустойчивой. При реализации такой логики важно использовать задержки между попытками, различать временные ошибки от необратимых и ограничивать количество повторных попыток.)
- создать "error translation layer" (Обеспечить прозрачность - каждая ошибка либо логируется, либо преобразуется в понятный ответ, либо передаётся выше по стеку вызовов.) т.е перехватывать ответы банка, показывать читаемое сообщение и предлагать действие: перезаведите, повторите отправку, обновите данные и т.д.
Мы не банк, но мы лицо продукта. Пользователь не будет разбираться, кто виноват, он просто уйдет туда, где ему легче и понятнее.
Мы не просто "прокси" для ошибки банка, мы - точка контакта с пользователем, и пользователь винит нас, а не банк.
Наша задача - не перекладывать вину, а решать проблему пользователя. Даже если она "не наша" технически - она наша по факту опыта.