Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Payout Service API

REST-сервис для управления заявками на выплату средств. Реализован на Django + DRF с использованием Celery для фоновой обработки задач.

🛠 Технологический стек

  • Язык: Python 3.13
  • Фреймворк: Django 5.2, Django REST Framework
  • Асинхронность: Celery, Redis
  • База данных: PostgreSQL
  • Инфраструктура: Docker, Docker Compose
  • Пакетный менеджер: Poetry
  • Тесты: Pytest
  • Линтеры: Ruff

🚀 Быстрый запуск (Docker)

Для удобства все команды обернуты в Makefile. Можете с ними ознакомиться введя make help

1. Подготовка окружения

Создайте файл .env в корне проекта:

cp .env.example .env

2. Запуск проекта

Сборка и запуск контейнеров (Web, Database, Redis, Celery Worker, Celery Beat):

make build

3. Добавьте доменное имя в Nginx PM (localhost:81)

Зарегистрируйте аккаунт. Откройте Hosts -> Proxy Host -> Add proxy host.

Укажите доменное имя, например, localhost, после чего установите:

Forward Hostname - app

Forward Port - 8000

(Либо можно на nginx:80, но тогда надо указывать custom locations на статику)

Тестирование и Качество кода

В проекте реализованы тесты (Pytest) с использованием моков для Celery.

Для проверки качества кода используется Ruff.

Запуск тестов

make test

Запуск линтера

make lint

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

После запуска сервиса интерактивная документация доступна по адресам:

Основные эндпоинты:

  • GET /api/v1/payouts/ — Список выплат (поддерживает фильтрацию, поиск, сортировку).
  • POST /api/v1/payouts/ — Создание выплаты (запускает асинхронную задачу).
  • GET /api/v1/payouts/{id}/ — Детали выплаты.

Стратегия деплоя

Для развертывания проекта в Production-среде предполагается следующая архитектура:

  1. CI/CD Pipeline (GitHub Actions / GitLab CI):
    • Автоматический запуск тестов (pytest) и линтеров (ruff) при каждом пуше.
    • Сборка Docker-образа и отправка его в Container Registry.
  2. Инфраструктура:
    • Оркестрация: Kubernetes или Docker Swarm для управления контейнерами.
    • Web-сервер: Gunicorn (запущенный внутри контейнера) за обратным прокси Nginx (для статики и SSL).
    • Database: PostgreSQL.
    • Broker: Managed Redis (AWS ElastiCache) для очередей задач.
  3. Безопасность:
    • Секретные данные (ключи, пароли) передаются через переменные окружения (Vault или Kubernetes Secrets). DEBUG=False обязательно.
  4. Мониторинг и Логирование:
    • Sentry: Для отслеживания ошибок в реальном времени.
    • Prometheus + Grafana: Для сбора метрик производительности.
    • ELK/Loki+Promtail: Для централизованного анализа логов
    • Jaeger: Для трейсинга запросов между сервисами

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

SmartCollectTest
├── deploy/                 # Dockerfiles и скрипты запуска
├── src/
│   ├── server/                 # Основной код бэкенда
│       ├── apps/               # Приложения Django (payouts и периодические задачи)
│       ├── api/                # API проекта
│       ├── tests/              # Тесты
│       ├── celery_app.py
│       ├── settings.py
│       ├── .env
│       ├── .env.example
├   ├──manage.py
├── celery_app.py
├── docker-compose.yml
├── Makefile
├── pyproject.toml          # Зависимости и конфиги (Poetry, Ruff, Pytest)
└── README.md

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages