Back to project

Project documentation

Bank

A wiki section for product context, business rules and task materials. It can grow without overloading the project page.

Project overview

Банк в BugLab имитирует небольшой интернет-банк для физических лиц. Пользователь регистрируется, подтверждает контактные данные, входит в личный кабинет, смотрит баланс и переводит деньги другому клиенту по номеру телефона.

Роли

  • Клиент банка: регистрируется, авторизуется и выполняет переводы.
  • Служба безопасности: анализирует подозрительные операции и блокировки.
  • Поддержка: помогает с ошибками профиля и переводов.

Основные сущности

  • Customer - клиент банка.
  • Account - банковский счет клиента.
  • Transfer - перевод между счетами.
  • AuditEvent - запись о важном пользовательском действии.

Общие правила

  • Пользователь не должен видеть данные другого клиента.
  • Все денежные операции должны оставлять audit trail.
  • Повтор запроса перевода не должен случайно списывать деньги дважды.
  • Ошибки валидации должны быть понятными для пользователя и стабильными для API-клиента.

BANK-101

Bank Customer Registration

Test new customer registration, field validation and profile creation without access to another user's data.

Бизнес-цель

Регистрация должна позволить новому клиенту создать учетную запись без обращения в поддержку. Команда хочет снизить потери пользователей на первом шаге и сохранить базовую безопасность.

API-контракт

POST /api/v1/sandbox/bank/customers

{
  "full_name": "Ivan Petrov",
  "email": "ivan@example.com",
  "phone": "+79991234567",
  "password": "StrongPass123",
  "terms_accepted": true
}

Успешный ответ возвращает customer_id, profile_status и created_at. Пароль и внутренние security-флаги не возвращаются.

Нефункциональные ожидания

  • Ответ API до 500 мс на тестовом стенде.
  • Сообщения ошибок одинаковы в UI и API по смыслу.
  • Все события регистрации пишутся в audit log.

BANK-214

Phone Number Transfer

Test money transfer by phone number, fees, limits and duplicate charge protection.

POST /api/v1/sandbox/bank/transfers

Обязательные поля: recipient_phone, amount, currency, idempotency_key.

Правила:

  • Минимальная сумма перевода: 10 RUB.
  • Максимальная сумма за одну операцию: 150000 RUB.
  • Перевод самому себе запрещен.
  • При повторе запроса с тем же idempotency_key возвращается исходный результат.