Thanks to visit codestin.com
Credit goes to github.com

Skip to content

AIGarifullin/orders

Repository files navigation

Приложение orders

Тестовый проект: мини-сервис аналитики заказов

Стек проекта

Python, Django REST Framework, HTTPS, PostgreSQL, Postman

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

💡 ВЕРСИЯ Python 3.10

Cоздать и активировать виртуальное окружение:

python3 -m venv venv
  • Если у вас Linux/macOS

    source venv/bin/activate
  • Если у вас Windows (в Git Bash)

    source venv/Scripts/activate
python3 -m pip install --upgrade pip

Установить зависимости из файла requirements.txt:

pip install -r requirements.txt

Выполнить миграции:

python3 manage.py migrate

Создать суперпользователя:

python3 manage.py createsuperuser

Запустить проект:

python3 manage.py runserver

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

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

API маршруты

📤 Загрузка заказов

POST http://localhost:8000/api/orders/upload/

Загрузка и обновление заказов пользователя. При повторной загрузке заказа с тем же order_number происходит обновление.

Тело запроса:

{
  "user": "test_seller",
  "orders": [
    {
      "order_number": "12345",
      "created_at": "2025-11-12T10:00:00Z",
      "total_amount": 2500.00,
      "status": "delivered",
      "items": [
        {
          "sku": "tea01",
          "name": "Чай зелёный",
          "quantity": 2,
          "price": 500
        },
        {
          "sku": "cup01", 
          "name": "Чашка фарфоровая",
          "quantity": 1,
          "price": 1500
        }
      ]
    }
  ]
}

Успешный ответ (201 Created):

{
  "message": "Заказы успешно загружены/обновлены.",
  "statistics": {
    "created_orders": 1,
    "updated_orders": 0,
    "created_items": 2
  }
}

📊 Статистика заказов

GET http://localhost:8000/api/orders/stats/?user=test_seller

Получение статистики по заказам пользователя. Параметры: user (обязательный) - имя пользователя.

Успешный ответ (200 OK):

{
  "user": "test_seller",
  "orders_count": 10,
  "total_revenue": 12345.67,
  "avg_order_value": 1234.57
}

Модели данных

User (Пользователь)

  • username - уникальное имя пользователя

Order (Заказ)

  • user - ссылка на пользователя
  • order_number - уникальный номер заказа
  • created_at - дата создания
  • total_amount - общая сумма заказа
  • status - статус заказа

OrderItem (Товар заказа)

  • order - ссылка на заказ
  • sku - артикул товара
  • name - название товара
  • quantity - количество товара
  • price - стоимость товара

DailyOrderStats (Хранения ежедневной статистики заказов)

  • date - дата статистики
  • total_users - всего пользователей
  • total_orders - всего заказов
  • total_revenue - общая выручка
  • avg_order_value - средний чек
  • created_at - дата создания

Ежедневная статистика заказов с Celery

Описание

Система автоматически собирает ежедневную статистику по заказам с использованием Celery и Redis. Статистика рассчитывается каждый день в полночь и включает:

  • Общее количество пользователей с заказами
  • Общее количество заказов
  • Общую выручку
  • Средний чек

Зависимости

Убедитесь, что установлены все зависимости:

pip install celery redis

Проверка работы Redis:

redis-cli ping

должен вернуться ответ: PONG.

Запуск Celery

Для работы системы необходимо запустить три процесса одновременно:

Terminal 1: Redis сервер

redis-server

Terminal 2: Celery Worker (обработчик задач)

celery -A config worker --loglevel=info

Terminal 3: Celery Beat (планировщик задач)

celery -A config beat --loglevel=info

Terminal 4: Django сервер

python manage.py runserver

Проверка работы

  • Проверка подключения Redis
redis-cli
127.0.0.1:6379> ping

должен вернуться ответ: PONG.

  • Проверка подключения Celery

В логах Celery worker вы должны видеть:

[config.celery] ready
  • Ручной запуск задачи для тестирования
python manage.py shell
from orders.tasks import daily_order_stats

# Асинхронный запуск
daily_order_stats.delay()

# Или синхронный запуск для отладки
daily_order_stats()
  • 📊 Просмотр статистики через API

GET http://localhost:8000/api/daily-stats/daily_stats/

Pre-commit

Для минимизации трудностей во время разработки и поддержании высокого качества кода в разработке мы используем pre-commit. Данный фреймворк позволяет проверить код на соответствие PEP8, защитить ветки master и develop от непреднамеренного коммита, проверить корректность импортов и наличие trailing spaces.

Pre-commit конфигурируется с помощью специального файл .pre-commit-config.yaml. Для использования фреймворка его необходимо установить, выполнив команду из активированного виртуального окружения:

pip install pre-commit==3.6.0

или

pip install -r requirements.txt

Для принудительной проверки всех файлов можно выполнить команду:

pre-commit run --all-files

При первом запуске будут скачаны и установлены все необходимые хуки, указанные в конфигурационном файле.

Для автоматической проверки всех файлов необходимо инициализировать фреймворк командой:

pre-commit install

About

Тестовый проект: мини-сервис аналитики заказов

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages