Skip to content

tertt-dev/testtask

Repository files navigation

Bank API

API для управления банками, компаниями и банковскими счетами с поддержкой шифрования данных и аудита.

Особенности

  • Шифрование полей ИНН и номеров счетов (AES-256)
  • Маскирование конфиденциальных данных в ответах API
  • Аудит всех действий с записью в отдельную таблицу
  • Валидация ИНН, БИК, номеров счетов
  • Опциональная проверка ИНН через API ФНС
  • Docker-контейнеризация
  • Миграции с помощью Alembic

Требования

  • Python 3.9-3.11
  • PostgreSQL
  • Docker и Docker Compose

Установка и запуск

  1. Клонируйте репозиторий:

    git clone <repository-url>
    cd testtask
  2. Создайте файл .env на основе .env.example:

    cp .env.example .env
  3. Сгенерируйте ключ шифрования и добавьте его в .env:

    python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
  4. Запустите приложение:

    docker-compose up --build

API будет доступно по адресу: http://localhost:8000

API Endpoints

Компании

  • POST /companies/ - Создание компании

    {
      "name": "ООО Рога и Копыта",
      "inn": "7707083893",
      "kpp": "773601001",
      "legal_address": "г. Москва, ул. Примерная, д. 1",
      "ceo_name": "Иванов Иван Иванович"
    }
  • GET /companies/{id} - Получение информации о компании

  • PUT /companies/{id} - Обновление информации о компании

  • DELETE /companies/{id} - Удаление компании

  • GET /companies/search/?inn_part=770 - Поиск компаний по части ИНН

Банки

  • POST /banks/ - Создание банка

    {
      "name": "Сбербанк",
      "bik": "044525225",
      "swift_code": "SABRRUMM"
    }
  • GET /banks/{id} - Получение информации о банке

  • PUT /banks/{id} - Обновление информации о банке

  • DELETE /banks/{id} - Удаление банка

Банковские счета

  • POST /accounts/ - Создание счета

    {
      "account_number": "40702810038000123456",
      "bank_id": 1,
      "currency": "RUB"
    }
  • GET /accounts/{id} - Получение информации о счете

  • PUT /accounts/{id} - Обновление информации о счете

  • POST /accounts/{id}/block - Блокировка счета

  • DELETE /accounts/{id} - Удаление счета

Аудит

  • GET /audit/ - Получение истории изменений
    • Параметры:
      • entity_type: тип сущности (Company/Bank/Account)
      • entity_id: ID сущности
      • action: тип действия (CREATE/UPDATE/DELETE)

Валидация данных

  • ИНН: проверка контрольной суммы по алгоритму ФНС
  • БИК: строго 9 цифр
  • Номер счета: 20 цифр, уникальность в рамках банка
  • SWIFT-код: 8-11 символов, формат: [A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?

Безопасность

  • Шифрование конфиденциальных данных с использованием Fernet (AES-256)
  • Маскирование данных в ответах API (например, ИНН: ******7890)
  • Аудит всех действий с записью информации о пользователе, времени и типе операции

Документация API

Полная документация API доступна по следующим адресам:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published