refactor: Создать базовый класс BaseProductEntity и реструктурировать Product/ProductKit
Основные изменения:
## Модели (models.py)
- Создан абстрактный класс BaseProductEntity с общими полями:
* Идентификация: name, sku, slug
* Описания: description, short_description (новое поле)
* Статус: is_active, timestamps, soft delete
* Managers: objects, all_objects, active
- Product:
* Унаследован от BaseProductEntity
* sale_price переименован в price (основная цена)
* Добавлено новое поле sale_price (цена со скидкой, nullable)
* Добавлено property actual_price
- ProductKit:
* Унаследован от BaseProductEntity
* fixed_price переименован в price (ручная цена)
* pricing_method: 'fixed' → 'manual'
* Добавлено поле sale_price (цена со скидкой)
* Добавлено поле cost_price (nullable)
* Добавлены properties: calculated_price, actual_price
* Обновлен calculate_price_with_substitutions()
## Forms (forms.py)
- ProductForm: добавлено short_description, price, sale_price
- ProductKitForm: добавлено short_description, cost_price, price, sale_price
## Admin (admin.py)
- ProductAdmin: обновлены list_display и fieldsets с новыми полями
- ProductKitAdmin: добавлены fieldsets, метод get_price_display()
## Templates
- product_form.html: добавлены поля price, sale_price, short_description
- product_detail.html: показывает зачеркнутую цену + скидку + бейджик "Акция"
- product_list.html: отображение цен со скидкой и бейджиком "Акция"
- all_products_list.html: единообразное отображение цен
- productkit_detail.html: отображение скидок с бейджиком "Акция"
## API (api_views.py)
- Обновлены все endpoints для использования поля price вместо sale_price
Результат: единообразная архитектура с поддержкой скидок, DRY-принцип,
логичные названия полей, красивое отображение акций в UI.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>