Этот файл предназначен для разработчиков, которые хотят внести свой вклад в проект. Здесь вы найдете информацию о том, как настроить проект для разработки, структуру проекта, а также рекомендации и требования по стилю кода.
- Клонируйте репозиторий:
git clone [ссылка на ВАШ форк этого репозитория]
- Перейдите в директорию проекта:
cd credit_card
- Установите все зависимости с помощью Poetry:
poetry install
- Активация виртуального окружение для запуска приложения или flake8, mypy и pytest:
poetry shell
- Запуск приложения:
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
Для работы с БД используется SQLAlchemy ORM.
Запуск для проверки работоспособности:
- Поднять контейнеры:
docker compose up -d
-
Миграции можно запустить из папки с проектом, предварительно раскомментировав строку 12 в env.py:
poetry run alembic upgrade head
или из контейнера cc_auth(После того как он запустится. Проверьте как назван ваш контейнер):
docker exec -it credit_card-cc_auth alembic upgrade head
- Примените конфигурации для хранилища данных:
kubectl apply -f k8s/volume.yaml
- Добавьте секреты и константы:
kubectl apply -f k8s/secret.yaml
kubectl apply -f k8s/configmap.yaml
- Деплоим сервисы:
kubectl apply -f k8s/deployment_cc_auth.yaml
kubectl apply -f k8s/deployment_cc_balance.yaml
kubectl apply -f k8s/deployment_cc_verify.yaml
- Деплоим сервисы:
kubectl apply -f k8s/service_cc_auth.yaml
kubectl apply -f k8s/service_cc_balance.yaml
- Джобом накатываем миграции(но так как у нас нет доступа к джобам - мы сделаем это с помощью одноразового пода.):
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: Пароль предустановленного пользователя.
-
main_auth.py : Основной файл приложения.
-
src
: Исходный код проекта.- database : Файлы для работы с базой данных.
- repositories : Файлы с репозиториями для работы с базой данных.
- routers : Файлы с описанием эндпоинтов.
- schemas : Схемы данных.
- services : Файлы с сервисами для работы с приложением.
-
tests
: Тесты сервиса.unit
: Юнит тесты разбиты по файлам в соответствии со структурой проекта.integration
: Сценарий интеграционных тестов из задания в одном файле + тесты API.
Для данного сервиса нужна всего одна таблица c пользователями веб портала auth.
Модель описана в файле base.py
-
main_balance.py : Основной файл приложения.
-
src
: Исходный код проекта.-
database : Файлы для работы с базой данных и модели.
-
repositories : Файлы с репозиториями для работы с базой данных.
-
routers : Файлы с описанием эндпоинтов.
-
schemas : Схемы данных.
-
services : Файлы с сервисами для работы с приложением.
-
tests
: Тесты сервиса.unit
: Юнит тесты разбиты по файлам в соответствии со структурой проекта.integration
: Сценарий интеграционных тестов из задания в одном файле + тесты API.
Таблицы для хранения логов(Balance и Common) и карточек.
Модель описана в файле base.py
-
-
main_verify.py : Основной файл приложения.
-
src
: Исходный код проекта. -
tests
: Тесты сервиса.integration
: Сценарий интеграционных тестов из задания в одном файле + тесты API.
- alembic : Скрипты для миграции.
- CHANGELOG.md : История изменений проекта.
CONTRIBUTING.md
: Рекомендации для контрибьюторов (вы сейчас читаете его).- README.md : Описание проекта.
- Создайте форк проекта на GitLab.
- Клонируйте ваш форк на свой локальный компьютер.
- Создайте новую ветку для ваших изменений.
- Внесите необходимые изменения и убедитесь, что все тесты проходят.
- Отправьте ваши изменения на проверку в виде pull/merge request в основной репозиторий.
Мы следуем стандартам кодирования, предложенным wemake-python-styleguide
, а также проверяем типы с помощью mypy
. Убедитесь, что ваш код соответствует этим требованиям перед отправкой на ревью.
Все изменения в проекте проходят процесс проверки другими разработчиками. Ваш код будет проверен на соответствие стандартам качества и функциональности.