Skip to content

tsunonoaru/test_wb_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wildberries Analytics

Веб-приложение для анализа и визуализации данных о товарах с Wildberries с современным интерфейсом и расширенной функциональностью.

Возможности

Backend

  • Парсинг товаров с Wildberries с использованием Selenium
  • REST API для работы с данными
  • Фильтрация и поиск товаров
  • Статистика и аналитика
  • Пагинация и сортировка

Frontend

  • Таблица товаров с колонками: название, цена, цена со скидкой, рейтинг, отзывы, категория
  • Фильтры: диапазон цен, минимальный рейтинг, минимальное количество отзывов, категория
  • Сортировка по всем колонкам (возрастание/убывание)
  • Диаграммы: гистограмма распределения цен, график скидка vs рейтинг
  • Динамическое обновление при изменении фильтров
  • Современный адаптивный интерфейс с градиентами

Технологии

  • Backend: Django 5.2, Django REST Framework
  • Frontend: HTML5, CSS3, JavaScript, Bootstrap 5.3, Chart.js
  • База данных: SQLite
  • Парсинг: Selenium WebDriver
  • Фильтрация: django-filter
  • Стилизация: CSS Grid, Flexbox, градиенты

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

  1. Клонируйте репозиторий:
git clone <repository-url>
cd test_wb_project
  1. Создайте виртуальное окружение:
python -m venv venv
source venv/bin/activate  # Linux/Mac
# или
venv\Scripts\activate  # Windows
  1. Установите зависимости:
pip install -r requirements.txt
  1. Настройте переменные окружения:
# Скопируйте пример файла
cp env.example .env

# Отредактируйте .env файл, изменив SECRET_KEY
# SECRET_KEY=your-super-secret-key-here-change-this-in-production

Важно: Обязательно измените SECRET_KEY в файле .env на уникальное значение!

  1. Примените миграции:
python manage.py migrate
  1. Создайте суперпользователя (опционально):
python manage.py createsuperuser
  1. Запустите сервер разработки:
python manage.py runserver
  1. Откройте браузер и перейдите по адресу: http://127.0.0.1:8000

Переменные окружения

Создайте файл .env в корне проекта со следующими переменными:

# Django Settings
SECRET_KEY=your-super-secret-key-here-change-this-in-production
DEBUG=True
ALLOWED_HOSTS=127.0.0.1,localhost

# Database Settings
DB_ENGINE=django.db.backends.sqlite3
DB_NAME=db.sqlite3
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_PORT=

# Localization
LANGUAGE_CODE=ru-ru
TIME_ZONE=Europe/Moscow

# REST Framework
PAGE_SIZE=20

# Logging
LOG_LEVEL=INFO

Настройки для продакшена

Для продакшена измените следующие переменные:

DEBUG=False
SECRET_KEY=your-very-long-and-random-secret-key
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.com

Использование

Парсинг данных

Для парсинга товаров с Wildberries используйте команду:

python manage.py parse_wildberries --query "телефон" --category "Электроника" --pages 3

Параметры:

  • --query: Поисковый запрос (по умолчанию: "телефон")
  • --category: Категория товаров (опционально)
  • --pages: Количество страниц для парсинга (по умолчанию: 3)
  • --use-api: Использовать API вместо Selenium (опционально)

Добавление тестовых данных

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

python manage.py add_test_data --count 50

API Endpoints

  • GET /api/products/ - Список товаров с пагинацией
  • GET /api/products/stats/ - Статистика товаров
  • GET /api/products/price_distribution/ - Распределение цен
  • GET /api/products/discount_vs_rating/ - Корреляция скидки и рейтинга

Фильтрация и сортировка

API поддерживает фильтрацию по следующим параметрам:

  • category - Категория товара
  • min_price / max_price - Диапазон цен
  • min_rating / max_rating - Диапазон рейтингов
  • min_reviews - Минимальное количество отзывов
  • search - Поиск по названию
  • ordering - Сортировка (price, rating, reviews_count, name, created_at)

Пример: /api/products/?category=Электроника&min_price=1000&max_price=50000&min_rating=4.0&ordering=-rating

Функциональность фронтенда

Таблица товаров

  • Колонки: Название товара, цена, цена со скидкой, рейтинг, количество отзывов, категория
  • Сортировка: Клик по заголовку колонки для сортировки (возрастание/убывание)
  • Визуальные индикаторы: Иконки сортировки, звездочки для рейтинга, бейджи скидок
  • Пагинация: Навигация по страницам

Фильтры

  • Диапазон цен: Слайдер с полями "От" и "До"
  • Минимальный рейтинг: Поле для ввода рейтинга (0-5)
  • Минимальное количество отзывов: Поле для ввода числа отзывов
  • Категория: Выпадающий список всех доступных категорий
  • Кнопки: "Применить фильтры" и "Сбросить"

Диаграммы

  • Гистограмма цен: Распределение товаров по ценовым диапазонам
  • График скидка vs рейтинг: Точечная диаграмма корреляции
  • Обновление: Диаграммы обновляются при изменении фильтров

Статистика

  • Карточки: Общее количество товаров, средняя цена, средний рейтинг, товары со скидкой
  • Обновление: Статистика обновляется в реальном времени

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

test_wb_project/
├── products/                 # Основное приложение
│   ├── management/          # Django команды
│   │   └── commands/
│   │       ├── parse_wildberries.py  # Парсер Wildberries
│   │       └── add_test_data.py      # Добавление тестовых данных
│   ├── migrations/          # Миграции базы данных
│   ├── models.py           # Модели данных
│   ├── views.py            # API представления
│   ├── serializers.py      # Сериализаторы
│   ├── filters.py          # Фильтры
│   ├── admin.py            # Админка
│   └── wildberries_parser.py # Парсер Wildberries
├── templates/              # HTML шаблоны
│   └── index.html         # Главная страница с интерфейсом
├── wb_analytics/          # Настройки проекта
│   ├── settings.py        # Настройки Django
│   ├── urls.py           # URL конфигурация
│   └── wsgi.py           # WSGI конфигурация
├── requirements.txt       # Зависимости
├── env.example           # Пример переменных окружения
├── .env                  # Переменные окружения (создать)
├── .gitignore           # Исключения Git
└── README.md             # Документация

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

  • Настроены базовые настройки безопасности Django
  • Логирование для отслеживания активности
  • Валидация входных данных на фронтенде и бэкенде

Особенности

Backend

  • REST API: Полнофункциональное API с фильтрацией и пагинацией
  • Парсинг: Надежный парсер с обработкой ошибок
  • Модели: Оптимизированные модели с вычисляемыми полями
  • Фильтрация: Гибкая система фильтров с поддержкой диапазонов

Frontend

  • Современный дизайн: Градиенты, тени, анимации
  • Адаптивность: Работает на всех устройствах
  • Интерактивность: Динамическое обновление без перезагрузки
  • UX/UI: Интуитивный интерфейс с визуальными подсказками
  • Производительность: Оптимизированная загрузка данных

Аналитика

  • Статистика: Детальная аналитика по товарам
  • Визуализация: Интерактивные диаграммы Chart.js
  • Фильтрация: Мощные инструменты для анализа данных
  • Экспорт: Возможность экспорта данных через API

Разработка

Добавление новых фильтров

  1. Обновите ProductFilter в products/filters.py
  2. Добавьте соответствующие поля в HTML форму
  3. Обновите JavaScript для обработки новых фильтров

Добавление новых диаграмм

  1. Создайте новый API endpoint в products/views.py
  2. Добавьте сериализатор в products/serializers.py
  3. Создайте функцию обновления диаграммы в JavaScript

Кастомизация дизайна

  • Основные стили находятся в <style> блоке templates/index.html
  • Цветовая схема: градиенты от #667eea до #764ba2
  • Анимации: hover эффекты и transitions

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors