Задача
Сотрудникам нужен был мобильный сервис, где можно проверить баланс, посмотреть историю платежей и самостоятельно пополнить счёт через банк. Для администраторов требовался отдельный интерфейс: управлять пользователями и просматривать журнал действий. Права и функции этих двух частей нельзя было смешивать. Сервис также должен был работать с банковским API и фиксировать операции. Результат платежа зависит от внешнего банковского сервиса, а нестандартные ситуации приходится разбирать сотруднику.
Что разработали
Мы сделали личный кабинет сотрудника и отдельную админку. В кабинете видны текущий баланс и история платежей, там же можно начать пополнение через банк. В админке можно управлять пользователями и смотреть журнал действий.
Сервер работает на Python и FastAPI, интерфейс — на SvelteKit. Данные хранятся в PostgreSQL, а изменения структуры базы проводятся через Alembic. Для связи с банком используется OAuth2, пароли обрабатываются с помощью Argon2. Обе части работают с единым API. Банковская авторизация не связана со входом в кабинет. Журнал сохраняет предусмотренные системой действия пользователей и администраторов. Также в сервисе есть ИИ-классификация платежей и чат-помощник.
Как работает
После входа сотрудник видит доступный баланс и историю платежей. При пополнении сервис обращается к банковской интеграции и проходит авторизацию по OAuth2. Ответ банка возвращается в сервис. Если это ошибка, дальнейшие действия зависят от её статуса.
ИИ классифицирует платежи, а чат-помощник отвечает на вопросы пользователей. Администратор работает отдельно: управляет учётными записями и просматривает сохранённые в журнале события. Для обработки паролей используется Argon2.
Результат
Сотрудник работает с балансом, историей операций и пополнением счёта в одном кабинете. Управление пользователями и журнал действий вынесены в админку. Так повседневные платежи не смешиваются с управлением системой. Нестандартные и спорные ситуации остаются за сотрудником поддержки.
Ограничения и зависимости
Оплата зависит от доступности банковского API, соединения, ответов банка и корректности переданных данных. Поэтому сервис не гарантирует успех каждой операции. Классификация платежей и ответы чат-помощника могут потребовать проверки. OAuth2 используется для авторизации в банковской интеграции, Argon2 — для обработки паролей, но сами по себе эти механизмы не подтверждают безопасность всей системы.