Реализация типа лендинга “Под заказ”
Дата: 2026-01-09
Статус: ✅ Реализовано
Версия: 1.0
✅ Что реализовано
1. Поддержка типа “под-заказ” в валидации
- ✅ Добавлена нормализация типа лендинга (поддержка разных вариантов написания:
под-заказ, под_заказ, подзаказ, order, под заказ)
- ✅ Для типа “под-заказ” колонка “Остаток” (M) не требуется
- ✅ Валидация не выдает ошибку, если колонка “Остаток” отсутствует для типа “под-заказ”
2. Обновлена функция prepare_data()
- ✅ Функция принимает параметр
landing_type
- ✅ Остатки читаются только для типа “в-наличии”
- ✅ Для типа “под-заказ” остатки не читаются (всегда
stock = None)
3. Обновлен заголовок лендинга
- ✅ Для типа “В Наличии”:
<h1>Название клиента</h1> + <p class="stock-date">В наличии на 09.01.2026</p>
- ✅ Для типа “Под заказ”:
<h1>Название клиента</h1> + <p class="stock-date">Под заказ 09.01.2026</p>
- ✅ Дата генерируется автоматически для обоих типов
- ✅ Формат даты:
DD.MM.YYYY (например, 09.01.2026)
4. Обновлена JavaScript логика
- ✅ Добавлена константа
LANDING_TYPE в JavaScript
- ✅ Проверка остатков при добавлении в корзину выполняется только для типа “в-наличии”
- ✅ Отображение остатков в карточке товара только для типа “в-наличии”
- ✅ Отображение доступного товара в корзине только для типа “в-наличии”
- ✅ Функция
updateCartStock() выполняется только для типа “в-наличии”
5. Обновлена команда генератора
- ✅ Добавлена поддержка
--type под-заказ
- ✅ Запрос названия клиента для типа “под-заказ”
- ✅ Обновлены сообщения о типе лендинга
📋 Отличия типов лендингов
Тип “В Наличии”
- Колонка “Остаток” (M): ✅ Обязательна
- Проверка остатков: ✅ Выполняется при добавлении в корзину
- Отображение остатков: ✅ Показывается в карточке товара
- Отображение доступного товара: ✅ Показывается в корзине
- Заголовок: Название клиента + “В наличии на [дата]”
Тип “Под заказ”
- Колонка “Остаток” (M): ❌ Не требуется
- Проверка остатков: ❌ Не выполняется
- Отображение остатков: ❌ Не показывается
- Отображение доступного товара: ❌ Не показывается
- Заголовок: Название клиента + “Под заказ”
🔧 Технические детали
Валидация файла:
validate_excel_structure(df, landing_type='обычный')
# Для типа 'под-заказ': колонка 'Остаток' не требуется
# Для типа 'в-наличии': колонка 'Остаток' обязательна
Подготовка данных:
prepare_data(df, landing_type='обычный')
# Для типа 'под-заказ': остатки не читаются (stock = None)
# Для типа 'в-наличии': остатки читаются из столбца M
JavaScript проверка остатков:
const LANDING_TYPE = "под-заказ"; // или "в-наличии"
// Проверка остатков только для типа "в-наличии"
if (LANDING_TYPE === 'в-наличии' && stock !== null) {
// проверка остатка
}
🧪 Тестирование
Пример создания лендинга “Под заказ”:
python3 generate_landing.py "файл.xlsx" "Название Клиента" "short-name" --type под-заказ
Или с интерактивным запросом:
python3 generate_landing.py "файл.xlsx" "" "" --type под-заказ
# → Генератор спросит название клиента
Ожидаемый результат:
- ✅ Файл валидируется без требования колонки “Остаток”
- ✅ Остатки не читаются из файла
- ✅ Заголовок: “Название клиента” + “Под заказ”
- ✅ В карточках товаров не показываются остатки
- ✅ В корзине не показывается доступный товар
- ✅ При добавлении в корзину не проверяются остатки
📝 Изменения в коде
Файл: Inbox/generate_landing.py
- Функция
validate_excel_structure():
- Добавлена нормализация типа лендинга
- Для типа “под-заказ” колонка “Остаток” не требуется
- Функция
prepare_data():
- Добавлен параметр
landing_type
- Остатки читаются только для типа “в-наличии”
- Функция
generate_html():
- Обновлен заголовок: “Под заказ” вместо “В наличии на [дата]”
- Добавлена константа
LANDING_TYPE в JavaScript
- JavaScript функции:
addToCart() - проверка остатков только для типа “в-наличии”
updateQuantity() - проверка остатков только для типа “в-наличии”
renderCart() - отображение доступного товара только для типа “в-наличии”
updateCartStock() - выполняется только для типа “в-наличии”
showCategory() - отображение остатков только для типа “в-наличии”
- Функция
main():
- Добавлена поддержка
--type под-заказ
- Запрос названия клиента для типа “под-заказ”
- Обновлены сообщения о типе лендинга
✅ Статус
Реализовано: ✅
Протестировано: ⏳ Требуется тестирование
Готово к использованию: ✅
Последнее обновление: 2026-01-09