Files
octopus/myproject/docs/README_VARIANTS.md

6.2 KiB
Raw Blame History

Система вариантов товаров - Краткое руководство

Что реализовано

Система позволяет создавать букеты с гибкими заменами компонентов. Каждый букет может иметь свои индивидуальные приоритеты для одной и той же группы товаров.

Новые модели

  1. ProductVariantGroup - группа взаимозаменяемых товаров
  2. KitItemPriority - приоритеты товаров для конкретной позиции букета

Изменения в существующих моделях

  1. Product - добавлено поле variant_groups (M2M)
  2. KitItem - добавлены поля variant_group, notes
  3. ProductKit - добавлены методы проверки доступности и расчета цен

Быстрый старт

1. Запуск демо

python manage.py demo_variants

Это создаст демонстрационные данные и покажет работу системы.

2. Создание группы вариантов через админку

  1. Откройте /admin/
  2. Перейдите в "Группы вариантов"
  3. Создайте новую группу (например, "Роза красная Freedom")
  4. Откройте товары и добавьте их в группу через поле "Группы вариантов"

3. Создание букета с вариантами

  1. Создайте новый комплект
  2. Добавьте позицию:
    • Либо укажите конкретный товар (без замен)
    • Либо укажите группу вариантов (с заменами)
  3. Откройте позицию и настройте приоритеты в разделе "Приоритеты вариантов"

API для разработчиков

Проверка доступности букета

from products.models import ProductKit
from products.utils.stock_manager import StockManager

kit = ProductKit.objects.get(name="Мой букет")
stock_manager = StockManager()

if kit.check_availability(stock_manager):
    print("Букет доступен!")
    price = kit.calculate_price_with_substitutions(stock_manager)
    print(f"Цена: {price}")

Получение лучшего товара для позиции

from products.models import KitItem
from products.utils.stock_manager import StockManager

kit_item = KitItem.objects.get(id=1)
stock_manager = StockManager()

best_product = kit_item.get_best_available_product(stock_manager)
if best_product:
    print(f"Используем: {best_product.name}")

Файлы документации

Интеграция со складом

Текущая версия использует заглушку StockManager. Для интеграции с реальной системой складского учета:

  1. Откройте products/utils/stock_manager.py
  2. Реализуйте методы:
    • check_stock(product, quantity) - проверка остатков
    • get_available_quantity(product) - получение доступного количества
    • reserve_stock(product, quantity, order_id) - резервирование
    • release_stock(product, quantity, order_id) - освобождение

Основные возможности

  • Создание групп взаимозаменяемых товаров
  • Один товар может быть в нескольких группах
  • Индивидуальные приоритеты для каждого букета
  • Проверка доступности с учетом замен
  • Расчет цены с учетом фактически доступных товаров
  • Валидация данных
  • Django Admin интерфейс
  • Документация и примеры

Примеры использования

Премиум букет

Позиция: Роза Freedom (группа вариантов) - 15 шт
Приоритеты:
  0. Роза 70см (200 руб/шт) - первый выбор
  1. Роза 60см (150 руб/шт)
  2. Роза 50см (100 руб/шт)

Цена: 15 × 200 = 3000 руб

Эконом букет

Позиция: Роза Freedom (группа вариантов) - 15 шт
Приоритеты:
  0. Роза 50см (100 руб/шт) - первый выбор
  1. Роза 60см (150 руб/шт)
  2. Роза 70см (200 руб/шт)

Цена: 15 × 100 = 1500 руб

Та же группа товаров, но разные приоритеты и разная цена!

Структура файлов

products/
├── models.py                          # Модели (обновлено)
├── admin.py                           # Админка (обновлено)
├── utils/
│   └── stock_manager.py              # Менеджер остатков (новый)
├── management/
│   └── commands/
│       └── demo_variants.py          # Демонстрация (новая)
└── migrations/
    └── 0004_productvariantgroup_...  # Миграция (новая)

docs/
├── README_VARIANTS.md                # Это руководство
├── product_variants_guide.md         # Подробная документация
└── example_usage.py                  # Примеры кода

Поддержка

Для получения помощи:

  1. Прочитайте product_variants_guide.md
  2. Изучите примеры в example_usage.py
  3. Запустите python manage.py demo_variants
  4. Обратитесь к разработчикам

Версия: 1.0 Дата: 2025-10-21