Skip to content

Latest commit

 

History

History
202 lines (147 loc) · 9.96 KB

CONTRIBUTING.md

File metadata and controls

202 lines (147 loc) · 9.96 KB

Вклад в проект "Shift Rest"

Введение

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

Сетап для разработки

  1. Клонируйте репозиторий:
git clone [ссылка на ВАШ форк этого репозитория]
  1. Перейдите в директорию проекта:
cd credit_card
  1. Установите все зависимости с помощью Poetry:
poetry install
  1. Активация виртуального окружение для запуска приложения или flake8, mypy и pytest:
poetry shell
  1. Запуск приложения:

docker compose up -d

Запуск без докера(not recommended):

python main_auth.py - для сервиса авторизации на 24001 (C HTTPS)
python main_balance.py - для сервиса баланса на 24101
python main_verify.py - для сервиса верификации на 24201

Для работы с сервисом без докера необходимо настроить пути между сервисами в файле config.py

img_2.png

Для работы с БД используется SQLAlchemy ORM.

Запуск для проверки работоспособности:

  1. Поднять контейнеры:
docker compose up -d
  1. Миграции можно запустить из папки с проектом, предварительно раскомментировав строку 12 в env.py:

    poetry run alembic upgrade head

    или из контейнера cc_auth(После того как он запустится. Проверьте как назван ваш контейнер):

    docker exec -it credit_card-cc_auth alembic upgrade head

Шаги для разворачивания в кубернетис

  1. Примените конфигурации для хранилища данных:
 kubectl apply -f k8s/volume.yaml
  1. Добавьте секреты и константы:
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/configmap.yaml
  1. Деплоим сервисы:
kubectl apply -f k8s/deployment_cc_auth.yaml
kubectl apply -f k8s/deployment_cc_balance.yaml
kubectl apply -f k8s/deployment_cc_verify.yaml
  1. Деплоим сервисы:
kubectl apply -f k8s/service_cc_auth.yaml
kubectl apply -f k8s/service_cc_balance.yaml
  1. Джобом накатываем миграции(но так как у нас нет доступа к джобам - мы сделаем это с помощью одноразового пода.):
kubectl apply -f k8s/job_alembic.yaml

Проверка статуса:

kubectl get pods
kubectl logs <pod_name>

Структура проекта

Проект разделен на три микросервиса: авторизация (credit_card_auth), баланс и транзакционные операции (credit_card_balance), верификация (credit_card_verify).

Единый для всех сервисов конфигурационный файл:

  • config/config.py : Файл с константами для приложения.
    • AUTH_APP_PORT : Сервис авторизации. Порт, на котором будет запущено приложение.
    • AUTH_APP_HOST : Сервис авторизации. Хост приложения.
    • BALANCE_APP_PORT : Сервис Баланса. Порт, на котором будет запущено приложение.
    • BALANCE_APP_HOST : Сервис Баланса. Хост приложения.
    • VERIFICATION_PORT : Сервис Верификации. Порт, на котором будет запущено приложение.
    • VERIFICATION_HOST : Сервис Верификации. Хост приложения.
    • KAFKA_HOST : Хост Kafka.
    • PRE_INSTALLED_CARD_NUMBER : Номер карты, который будет добавлен при первоначальной инициализации приложения для тестирования.
    • PRE_INSTALLED_CARD_DATA: Данные карты^
    • TEST_USER_LOGIN: Логин предустановленного пользователя.
    • TEST_USER_PASSWORD: Пароль предустановленного пользователя.

Микросервис: credit_card_auth

  • main_auth.py : Основной файл приложения.

  • src : Исходный код проекта.

    • database : Файлы для работы с базой данных.
    • repositories : Файлы с репозиториями для работы с базой данных.
    • routers : Файлы с описанием эндпоинтов.
    • schemas : Схемы данных.
    • services : Файлы с сервисами для работы с приложением.
  • tests: Тесты сервиса.

    • unit: Юнит тесты разбиты по файлам в соответствии со структурой проекта.
    • integration: Сценарий интеграционных тестов из задания в одном файле + тесты API.

    БД:

    Для данного сервиса нужна всего одна таблица c пользователями веб портала auth.

    db_scheme.png

    Модель описана в файле base.py

Микросервис: credit_card_balance

  • main_balance.py : Основной файл приложения.

  • src : Исходный код проекта.

    • database : Файлы для работы с базой данных и модели.

    • repositories : Файлы с репозиториями для работы с базой данных.

    • routers : Файлы с описанием эндпоинтов.

    • schemas : Схемы данных.

    • services : Файлы с сервисами для работы с приложением.

    • tests: Тесты сервиса.

      • unit: Юнит тесты разбиты по файлам в соответствии со структурой проекта.
      • integration: Сценарий интеграционных тестов из задания в одном файле + тесты API.

      БД:

      Таблицы для хранения логов(Balance и Common) и карточек.

      db_scheme.png

      Модель описана в файле base.py

Микросервис: credit_card_verify

  • main_verify.py : Основной файл приложения.

  • src : Исходный код проекта.

    • routers : Файлы с описанием эндпоинтов.
    • schemas : Схемы данных.
    • services : Файлы с сервисами для работы с приложением.
  • tests: Тесты сервиса.

    • integration: Сценарий интеграционных тестов из задания в одном файле + тесты API.

Общие файлы

  • alembic : Скрипты для миграции.
  • CHANGELOG.md : История изменений проекта.
  • CONTRIBUTING.md : Рекомендации для контрибьюторов (вы сейчас читаете его).
  • README.md : Описание проекта.

Процесс внесения изменений

  1. Создайте форк проекта на GitLab.
  2. Клонируйте ваш форк на свой локальный компьютер.
  3. Создайте новую ветку для ваших изменений.
  4. Внесите необходимые изменения и убедитесь, что все тесты проходят.
  5. Отправьте ваши изменения на проверку в виде pull/merge request в основной репозиторий.

Кодовые стандарты и соглашения

Мы следуем стандартам кодирования, предложенным wemake-python-styleguide, а также проверяем типы с помощью mypy. Убедитесь, что ваш код соответствует этим требованиям перед отправкой на ревью.

Процесс ревью

Все изменения в проекте проходят процесс проверки другими разработчиками. Ваш код будет проверен на соответствие стандартам качества и функциональности.

Полезные ссылки