zov-tech/miniapp/assets/podbor.config.js
wasrusgen dd400b71ac miniapp: new pricing flow — brand strategy + budget presets + multi pick strategy
NEW STRUCTURE:
- Step 4 'Бренд' — ai/single/different + brand picker or per-cat chips (now 4-state with 'avoid')
- Step 5 'Бюджет' — Люкс/Премиум/Средний/Бюджет/Точные цифры presets
- Step 6 'Стратегия' — multi: Лучшее по отзывам / Цена-качество / Топ-бренды / Доступное / Tech / Стиль
- Step 7 'Инфра' — перенесено после стратегии
- Step 8 'Итог' — обновлённый summary с новыми полями

FIXES:
- Keyboard-disappearing bug in price inputs — removed render() on input, total recomputed locally
- localStorage merge with defaults for backward compat with new fields
- Bumped STORAGE_KEY to v4

REMAINING:
- Backend still reads checklist.priorities (old shape) — needs update to read pick_strategies + brand_strategy + budget_preset
2026-05-11 10:43:54 +03:00

393 lines
21 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ============================================================
Подбор техники — статические данные (адаптация 02_Чек-лист_клиенту.html)
============================================================ */
const PODBOR_CATEGORIES = [
{ key: "fridge", icon: "cat_fridge", label: "Холодильник" },
{ key: "hob", icon: "cat_hob", label: "Варочная панель" },
{ key: "oven", icon: "cat_oven", label: "Духовой шкаф" },
{ key: "dw", icon: "cat_dw", label: "Посудомоечная" },
{ key: "hood", icon: "cat_hood", label: "Вытяжка" },
{ key: "microwave", icon: "cat_microwave", label: "Микроволновка" },
{ key: "coffee", icon: "cat_coffee", label: "Кофемашина" },
{ key: "washer", icon: "cat_washer", label: "Стиральная машина" },
];
const PODBOR_BUDGET_TIERS = [
{ key: "premium", label: "Премиум", hint: "лучшее без оглядки на цену" },
{ key: "middle", label: "Средний", hint: "разумный баланс цена/функции" },
{ key: "budget", label: "Бюджет", hint: "только нужное" },
];
const PODBOR_INFRA = {
stove: [
{ key: "induction", label: "Индукция / 380 В" },
{ key: "el_220", label: "Электрика 220 В" },
{ key: "gas", label: "Газ" },
{ key: "any", label: "Не знаю / любой" },
],
vent: [
{ key: "yes", label: "Да — есть выводы в вентиляцию" },
{ key: "no", label: "Нет — рециркуляция с угольным фильтром" },
{ key: "unknown", label: "Не знаю — менеджер уточнит" },
],
};
const PODBOR_PRIORITIES = [
{ key: "balance", label: "Цена / качество" },
{ key: "reviews", label: "Отзывы" },
{ key: "popular", label: "Популярность бренда" },
{ key: "design", label: "Дизайн и цвет" },
{ key: "tech", label: "Технологичность" },
{ key: "service", label: "Сервис и гарантия" },
];
/* === Новая структура: бренд-стратегия / бюджет / стратегия подбора === */
const PODBOR_BRAND_STRATEGY = [
{ key: "ai", label: "Пусть AI решит", hint: "оптимально под бюджет и стратегию", recommended: true },
{ key: "single", label: "Одна марка на всю кухню", hint: "моноблочный комплект, премиум-сценарий" },
{ key: "different", label: "Разные марки по категориям", hint: "соберём оптимальный микс" },
];
/* Бренды, у которых есть полная линейка кухонной техники (для single-mode) */
const PODBOR_SINGLE_BRAND_OPTIONS = [
{ key: "miele", label: "Miele", tier: "premium" },
{ key: "gaggenau", label: "Gaggenau", tier: "premium" },
{ key: "asko", label: "Asko", tier: "premium" },
{ key: "v_zug", label: "V-ZUG", tier: "premium" },
{ key: "neff", label: "Neff", tier: "middle" },
{ key: "bosch", label: "Bosch", tier: "middle" },
{ key: "siemens", label: "Siemens", tier: "middle" },
{ key: "electrolux", label: "Electrolux", tier: "middle" },
{ key: "aeg", label: "AEG", tier: "middle" },
{ key: "samsung", label: "Samsung", tier: "middle" },
{ key: "lg", label: "LG", tier: "middle" },
{ key: "hansa", label: "Hansa", tier: "budget" },
{ key: "beko", label: "Beko", tier: "budget" },
{ key: "ai_pick", label: "Пусть AI выберет под бюджет", recommended: true },
];
const PODBOR_BUDGET_PRESETS = [
{ key: "luxe", label: "Люкс", hint: "от 1.5М ₽ за весь комплект" },
{ key: "premium", label: "Премиум", hint: "700к 1.5М ₽" },
{ key: "middle", label: "Средний", hint: "350к 700к ₽", recommended: true },
{ key: "budget", label: "Бюджет", hint: "до 350к ₽" },
{ key: "exact", label: "Точные цифры", hint: "ввести от-до по категориям" },
];
const PODBOR_PICK_STRATEGIES = [
{ key: "reviews", label: "Лучшее по отзывам", hint: "топ по рейтингам пользователей" },
{ key: "balance", label: "Цена / качество", hint: "оптимальный баланс", recommended: true },
{ key: "premium_brand", label: "Топ-бренды премиум", hint: "Miele · Gaggenau · Sub-Zero" },
{ key: "cheap", label: "Самое доступное", hint: "надёжный минимум" },
{ key: "tech", label: "Современные технологии", hint: "Wi-Fi · инверторы · пар" },
{ key: "style", label: "Стилевая согласованность", hint: "единый дизайн-язык всей техники" },
];
/* Параметры по категориям.
----------------------------------------------------------
Новая схема (иерархический wizard):
steps: [
{
key: "install",
title: "Тип установки",
type: "single" | "multi",
options: [ { key, label, hint, star?, pict? } ]
// ИЛИ если опции зависят от предыдущего шага:
optionsBy: { dependsOn: "<prevStepKey>", map: { <prevVal>: [options] } }
},
...
]
Старая схема (legacy, без wizard):
primary: [...], features: [...]
---------------------------------------------------------- */
const PODBOR_PARAMS = {
fridge: {
steps: [
{
key: "install",
title: "Тип установки",
type: "single",
options: [
{ key: "built_in", label: "Встроенный", hint: "под фасад", pict: "fridge_install_builtin" },
{ key: "freestanding", label: "Отдельностоящий", hint: "соло на полу", pict: "fridge_install_freestanding" },
],
},
{
key: "chamber",
title: "Тип камеры",
type: "single",
optionsBy: {
dependsOn: "install",
map: {
built_in: [
{ key: "single", label: "Однокамерный", hint: "только холод", pict: "fridge_bi_single" },
{ key: "two_chamber", label: "Двухкамерный", hint: "холод + мороз", pict: "fridge_bi_two" },
{ key: "col_cold", label: "Холодильная колонна", hint: "только холод · высокая", pict: "fridge_bi_colcold" },
{ key: "col_freeze", label: "Морозильная колонна", hint: "только мороз · высокая", pict: "fridge_bi_colfreeze" },
{ key: "col_pair", label: "Пара колонн", hint: "холод + мороз · рядом", pict: "fridge_bi_colpair" },
],
freestanding: [
{ key: "single", label: "Однокамерный", hint: "мини · бар", pict: "fridge_fs_single" },
{ key: "two_chamber", label: "Двухкамерный", hint: "морозилка снизу", pict: "fridge_fs_two" },
{ key: "sbs", label: "Side-by-Side", hint: "распашной · 2 двери", pict: "fridge_fs_sbs" },
{ key: "french", label: "French Door", hint: "2 двери · ящик мороза", pict: "fridge_fs_french" },
{ key: "freezer", label: "Морозильная камера", hint: "отдельный морозильник", pict: "fridge_fs_freezer" },
],
},
},
},
{
key: "size",
title: "Размер",
type: "single",
options: [
{ key: "narrow", label: "Узкий", hint: "W 4555 см" },
{ key: "standard", label: "Стандарт", hint: "W 5560 см", star: true },
{ key: "wide", label: "Широкий", hint: "W 6075 см" },
{ key: "xl", label: "XL", hint: "W 80100 см · SbS / French Door" },
],
},
{
key: "features",
title: "Особенности",
type: "multi",
options: [
{ key: "nofrost", label: "No Frost", hint: "не нужно размораживать" },
{ key: "inverter", label: "Inverter", hint: "тише и экономичнее" },
{ key: "freshzone", label: "Зона свежести", hint: "BioFresh / овощи дольше" },
{ key: "silent", label: "≤40 дБ", hint: "почти не слышно ночью" },
{ key: "smart", label: "Wi-Fi", hint: "управление с телефона" },
{ key: "ice", label: "Лёдогенератор", hint: "кубики автоматически" },
{ key: "wine", label: "Винная зона", hint: "" },
{ key: "dispenser", label: "Диспенсер воды", hint: "холодная вода / лёд через дверь" },
],
},
],
},
hob: {
primary: [
{ key: "heat", label: "Тип нагрева", options: [
{ key: "induction", label: "Индукция" },
{ key: "hi_light", label: "Hi-Light (стеклокерамика)" },
{ key: "gas", label: "Газ" },
{ key: "domino", label: "Domino (модульная)" },
]},
{ key: "width", label: "Ширина, см", options: [
{ key: "30", label: "30" }, { key: "45", label: "45" },
{ key: "60", label: "60" }, { key: "80", label: "80" }, { key: "90", label: "90" },
]},
{ key: "zones", label: "Число зон", options: [
{ key: "2", label: "2" }, { key: "3", label: "3" },
{ key: "4", label: "4" }, { key: "5", label: "5" },
]},
{ key: "color", label: "Цвет", options: [
{ key: "black", label: "Чёрный" }, { key: "white", label: "Белый" },
{ key: "frameless", label: "Без рамки" }, { key: "inox", label: "Нерж. сталь" },
]},
],
features: [
{ key: "boost", label: "PowerBoost", hint: "форсаж — кипятит за минуту" },
{ key: "flex", label: "FlexZone", hint: "объединяет зоны под большую сковороду" },
{ key: "hob2hood", label: "Hob2Hood", hint: "вытяжка автоматически следит за варочной" },
{ key: "child_lock", label: "Защита от детей", hint: "блокировка панели" },
],
},
oven: {
primary: [
{ key: "config", label: "Конфигурация", options: [
{ key: "compact_combi", label: "Компакт + СВЧ" },
{ key: "full_60", label: "Полный 60 см" },
{ key: "xl_90", label: "XL 90 см" },
{ key: "two_separate", label: "2 отдельных прибора" },
]},
{ key: "color", label: "Цвет", options: [
{ key: "black", label: "Чёрный" },
{ key: "inox", label: "Нерж. сталь" },
{ key: "white", label: "Белый" },
{ key: "blackglass", label: "Чёрное стекло" },
{ key: "anthracite", label: "Антрацит" },
]},
{ key: "cleaning", label: "Очистка", options: [
{ key: "hydro", label: "Гидролиз" },
{ key: "pyro", label: "Пиролиз" },
{ key: "eco", label: "Eco / каталитическая" },
{ key: "aqua", label: "Aqua" },
{ key: "std", label: "Стандарт" },
]},
],
features: [
{ key: "4d", label: "4D HotAir", hint: "конвекция с 4 сторон — равномерное запекание" },
{ key: "steam", label: "Пар", hint: "хлеб с румяной корочкой, мясо без пересушки" },
{ key: "probe", label: "Термощуп", hint: "готовит до точной температуры (medium / well-done)" },
{ key: "autopilot", label: "Автопилот", hint: "выбираешь блюдо — духовка сама ставит режим" },
{ key: "softclose", label: "SoftClose", hint: "дверца закрывается плавно" },
{ key: "smart", label: "Smart / Wi-Fi", hint: "следишь за приготовлением с телефона" },
],
},
dw: {
primary: [
{ key: "width", label: "Ширина, см", options: [
{ key: "45", label: "45" }, { key: "60", label: "60" },
]},
{ key: "mount", label: "Монтаж", options: [
{ key: "full_built_in", label: "Полная встройка (под фасад)" },
{ key: "partial", label: "Частичная встройка" },
{ key: "freestanding", label: "Отдельная" },
]},
{ key: "settings", label: "Комплектов", options: [
{ key: "8-9", label: "89 (для 23 человек)" },
{ key: "10-11", label: "1011 (семья 34)" },
{ key: "12-14", label: "1214 (большая семья)" },
]},
],
features: [
{ key: "aquastop", label: "AquaStop", hint: "защита от протечек — машина сама перекроет воду" },
{ key: "tray", label: "3-й лоток", hint: "отдельная полка для столовых приборов" },
{ key: "autoopen", label: "AutoOpen", hint: "приоткрывает дверь после мойки — сухая посуда" },
{ key: "silent", label: "≤44 дБ", hint: "можно мыть ночью, не слышно" },
{ key: "smart", label: "Smart / Wi-Fi", hint: "уведомление на телефон когда готово" },
],
},
hood: {
primary: [
{ key: "type", label: "Тип", options: [
{ key: "inclined", label: "Наклонная" },
{ key: "t_shape", label: "Т-образная" },
{ key: "dome", label: "Купольная" },
{ key: "built_in", label: "Встроенная" },
{ key: "telescopic", label: "Телескопическая" },
{ key: "island", label: "Островная" },
]},
{ key: "width", label: "Ширина, см", options: [
{ key: "50", label: "50" }, { key: "60", label: "60" },
{ key: "80", label: "80" }, { key: "90", label: "90" },
]},
{ key: "color", label: "Цвет", options: [
{ key: "inox", label: "Нерж. сталь" },
{ key: "black", label: "Чёрный" },
{ key: "white", label: "Белый" },
{ key: "black_glass", label: "Чёрное стекло" },
]},
{ key: "mode", label: "Режим работы", options: [
{ key: "exhaust", label: "Только отвод (вентиляция)" },
{ key: "recirc", label: "Только рециркуляция (фильтр)" },
{ key: "combi", label: "Оба режима" },
]},
],
features: [
{ key: "hi_perf", label: "Производительность 600+ м³/ч", hint: "сильно тянет — для большой кухни / wok" },
{ key: "perimeter", label: "Периметральная вытяжка", hint: "тянет с краёв — больше пара захватывает" },
{ key: "low_noise", label: "Тихая работа ≤50 дБ", hint: "не оглушает за столом" },
{ key: "smart", label: "Smart / Wi-Fi", hint: "автоматическая работа в паре с варочной" },
],
},
microwave: {
primary: [
{ key: "type", label: "Размещение", options: [
{ key: "builtin", label: "Встроенная" },
{ key: "freestanding", label: "Отдельная" },
]},
{ key: "volume", label: "Объём, л", options: [
{ key: "to20", label: "до 20" },
{ key: "20-25", label: "2025" },
{ key: "25+", label: "25+" },
]},
],
features: [
{ key: "grill", label: "Гриль", hint: "запекает корочку сверху" },
{ key: "convection", label: "Конвекция", hint: "работает как маленькая духовка" },
{ key: "inverter", label: "Инвертор", hint: "плавная мощность — не пересушивает" },
],
},
coffee: {
primary: [
{ key: "type", label: "Размещение", options: [
{ key: "builtin", label: "Встроенная" },
{ key: "freestanding", label: "Отдельная" },
]},
{ key: "tech", label: "Тип", options: [
{ key: "auto_grinder", label: "Автомат с кофемолкой" },
{ key: "capsule", label: "Капсульная" },
{ key: "manual", label: "Рожковая (бариста)" },
]},
],
features: [
{ key: "milk", label: "Капучинатор", hint: "автоматическое латте/капучино" },
{ key: "profiles", label: "Профили", hint: "у каждого свой размер/крепость" },
{ key: "smart", label: "Smart / Wi-Fi", hint: "управление с телефона" },
],
},
washer: {
primary: [
{ key: "type", label: "Размещение", options: [
{ key: "builtin", label: "Встроенная" },
{ key: "freestanding", label: "Отдельная" },
]},
{ key: "load", label: "Загрузка, кг", options: [
{ key: "to6", label: "до 6" },
{ key: "6-8", label: "68" },
{ key: "8-10", label: "810" },
{ key: "10+", label: "10+" },
]},
{ key: "depth", label: "Глубина", options: [
{ key: "slim", label: "Slim (до 45 см)" },
{ key: "standard", label: "Стандарт (60 см)" },
]},
],
features: [
{ key: "steam", label: "Пар", hint: "освежает без стирки, убивает аллергены" },
{ key: "dry", label: "Сушка", hint: "достал — и сразу в шкаф" },
{ key: "silent", label: "≤50 дБ", hint: "ночная стирка не разбудит" },
{ key: "smart", label: "Smart / Wi-Fi", hint: "запуск с телефона, уведомления" },
],
},
};
/* Бренды для каждой категории — для чипов с тирами.
Сокращённый набор; полный список можно расширить из исходного HTML. */
const PODBOR_BRANDS = {
fridge: {
premium: ["Liebherr", "Miele", "Sub-Zero", "V-ZUG"],
middle: ["Bosch", "Siemens", "Samsung", "LG"],
budget: ["Indesit", "Beko", "Hotpoint"],
},
hob: {
premium: ["Miele", "Gaggenau", "AEG"],
middle: ["Bosch", "Siemens", "Electrolux", "Hansa"],
budget: ["Hotpoint", "Beko", "Indesit"],
},
oven: {
premium: ["Miele", "Gaggenau", "Neff"],
middle: ["Bosch", "Siemens", "Electrolux", "AEG"],
budget: ["Hansa", "Beko", "Hotpoint"],
},
dw: {
premium: ["Miele", "Asko", "V-ZUG"],
middle: ["Bosch", "Siemens", "Electrolux"],
budget: ["Hansa", "Beko", "Indesit"],
},
hood: {
premium: ["Miele", "Falmec", "Faber"],
middle: ["Bosch", "Siemens", "Elica"],
budget: ["Hansa", "Hotpoint", "Maunfeld"],
},
microwave: {
premium: ["Miele", "Neff"],
middle: ["Bosch", "Siemens", "Samsung", "LG"],
budget: ["Whirlpool", "Hansa", "Beko"],
},
coffee: {
premium: ["Miele", "Jura", "De'Longhi PrimaDonna"],
middle: ["De'Longhi", "Saeco", "Bosch"],
budget: ["Krups", "Philips"],
},
washer: {
premium: ["Miele", "Asko", "V-ZUG"],
middle: ["Bosch", "Siemens", "Samsung", "LG"],
budget: ["Indesit", "Hotpoint", "Beko"],
},
};