-- Обновление прайс-листа: убирает старую заглушку "Разработка сайтов" (от 5 000 ₽) -- и добавляет новую линейку "Разработка под ключ" + "White-label и партнёрство". -- Безопасно выполнять повторно - использует WHERE NOT EXISTS, дублей не создаст. -- Запуск: -- docker compose exec -T db psql -U topsysops topsysops < backend/scripts/2026-07-update-services.sql BEGIN; -- 1) Убираем старую заглушку "Разработка сайтов" (каскадно удалит её позицию "Лендинг") DELETE FROM service_categories WHERE slug = 'web'; -- 2) Новая категория: Разработка под ключ INSERT INTO service_categories (slug, title, description, icon, sort_order) SELECT 'development', 'Разработка под ключ', 'От быстрого MVP до продакшн-разработки и сопровождения', 'Rocket', (SELECT COALESCE(MAX(sort_order), -1) + 1 FROM service_categories) WHERE NOT EXISTS (SELECT 1 FROM service_categories WHERE slug = 'development'); INSERT INTO service_items (category_id, name, price_text, period, note, sort_order) SELECT (SELECT id FROM service_categories WHERE slug = 'development'), v.name, v.price_text, v.period, v.note, v.sort_order FROM (VALUES ('MVP «Быстрый старт»', 'от 120 000 ₽', '', 'Посадочная страница, форма/бот для заявок, простая админка - 2-3 недели', 0), ('MVP Pro', 'от 450 000 ₽', '', 'Личный кабинет с авторизацией, оплата, ИИ-ассистент - 4-6 недель', 1), ('Продакшн-разработка', 'от 1 200 000 ₽', '', 'Архитектура, тесты, DevOps, масштабирование - от 2 месяцев, точная смета после дискавери', 2), ('Discovery-воркшоп', 'от 30 000 ₽', '', 'Фиксация ТЗ и оценки перед стартом проекта - 1-2 дня', 3), ('Сопровождение проекта', 'от 40 000 ₽', '/мес', 'Ежемесячные доработки уже готовых продуктов', 4) ) AS v(name, price_text, period, note, sort_order) WHERE NOT EXISTS ( SELECT 1 FROM service_items WHERE category_id = (SELECT id FROM service_categories WHERE slug = 'development') AND name = v.name ); -- 3) Новая категория: White-label и партнёрство INSERT INTO service_categories (slug, title, description, icon, sort_order) SELECT 'partners', 'White-label и партнёрство', 'Готовые решения для других компаний и программы сотрудничества', 'Handshake', (SELECT COALESCE(MAX(sort_order), -1) + 1 FROM service_categories) WHERE NOT EXISTS (SELECT 1 FROM service_categories WHERE slug = 'partners'); INSERT INTO service_items (category_id, name, price_text, period, note, sort_order) SELECT (SELECT id FROM service_categories WHERE slug = 'partners'), v.name, v.price_text, v.period, v.note, v.sort_order FROM (VALUES ('White-label «Кабинет + ИИ-ассистент»', 'от 500 000 ₽', '', 'Личный кабинет с авторизацией и ИИ-чатом под брендом вашей компании', 0), ('IT-мониторинг сайта', 'от 10 000 ₽', '/мес', 'Аптайм, скорость загрузки, уведомления об инцидентах', 1), ('Реферальная программа', '10%', 'от суммы контракта', 'Бонус вам за рекомендацию нас новому клиенту', 2), ('Партнёрская программа', 'по договорённости', '', 'Комиссия для хостинг-провайдеров и поставщиков оборудования за рекомендации', 3) ) AS v(name, price_text, period, note, sort_order) WHERE NOT EXISTS ( SELECT 1 FROM service_items WHERE category_id = (SELECT id FROM service_categories WHERE slug = 'partners') AND name = v.name ); COMMIT;