Files
lms-sb/scripts/create_biz_brain_courses.sql
T

134 lines
6.8 KiB
PL/PgSQL
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.
-- ⚠️ СПРАВОЧНЫЙ ФАЙЛ — НЕ запускать `psql -f` на проде!
-- CUID здесь синтетические (могут не пройти валидацию схемы Prisma).
-- Создавать курсы biz-brain-base/premium + module-* ТОЛЬКО через LMS Admin UI.
-- Этот SQL — справка по составу/связям курсов.
-- ============================================================
-- WS6: Создание курсов-носителей «Второй мозг для бизнеса»
-- ============================================================
-- ВАЖНО: Выполнять НА ПРОДЕ только после проверки на staging.
-- Запускать через SSH: psql <db_url> -f create_biz_brain_courses.sql
-- Идемпотентно: INSERT IGNORE по slug (уникальный ключ).
--
-- Курсы-носители (5 штук):
-- biz-brain-base — основной курс (ZIP хранилища + видео-онбординг)
-- biz-brain-premium — премиум-раздел (консультации, инструкции по расширениям)
-- module-caldav — расширение CalDAV-календарь
-- module-ai-pdf — расширение AI-разбор PDF
-- module-legacy — расширение Legacy-миграция
-- ============================================================
BEGIN;
-- Функция для генерации cuid-подобного ID (через gen_random_uuid как fallback)
-- В реальности Prisma генерирует cuid автоматически — используем это свойство.
-- Если у вас Postgres 14+: gen_random_uuid() дает UUID, но Prisma ожидает cuid.
-- Безопаснее создать через Prisma API или LMS-Admin.
-- Проверяем что slug ещё не существует перед вставкой
DO $$
BEGIN
-- biz-brain-base
IF NOT EXISTS (SELECT 1 FROM "Course" WHERE slug = 'biz-brain-base') THEN
INSERT INTO "Course" (id, slug, title, description, published, "allowAudio", "order", "createdAt", "updatedAt")
VALUES (
'clbizbrainbase0000001',
'biz-brain-base',
'Второй мозг для бизнеса — Базовый',
'Готовое хранилище Obsidian для собственника: CRM-воронка, финансовый кокпит, журнал решений, витрина команды. Разовый платёж, бессрочный доступ.',
false, -- опубликовать вручную после наполнения контентом
false,
100,
NOW(),
NOW()
);
RAISE NOTICE 'Создан курс biz-brain-base';
ELSE
RAISE NOTICE 'Курс biz-brain-base уже существует — пропуск';
END IF;
-- biz-brain-premium
IF NOT EXISTS (SELECT 1 FROM "Course" WHERE slug = 'biz-brain-premium') THEN
INSERT INTO "Course" (id, slug, title, description, published, "allowAudio", "order", "createdAt", "updatedAt")
VALUES (
'clbizbrainprem0000002',
'biz-brain-premium',
'Второй мозг для бизнеса — Премиум (инструкции и консультации)',
'Раздел для премиум-покупателей: инструкции по установке расширений, запись на 2 персональные консультации, ответы на частые вопросы.',
false,
false,
101,
NOW(),
NOW()
);
RAISE NOTICE 'Создан курс biz-brain-premium';
ELSE
RAISE NOTICE 'Курс biz-brain-premium уже существует — пропуск';
END IF;
-- module-caldav
IF NOT EXISTS (SELECT 1 FROM "Course" WHERE slug = 'module-caldav') THEN
INSERT INTO "Course" (id, slug, title, description, published, "allowAudio", "order", "createdAt", "updatedAt")
VALUES (
'clmodulecaldav00000003',
'module-caldav',
'Расширение: CalDAV-календарь',
'Двусторонняя синхронизация задач и событий Obsidian с Google Calendar / Apple Calendar через CalDAV. Плагин Full Calendar Remastered v0.13.2.',
false,
false,
200,
NOW(),
NOW()
);
RAISE NOTICE 'Создан курс module-caldav';
ELSE
RAISE NOTICE 'Курс module-caldav уже существует — пропуск';
END IF;
-- module-ai-pdf
IF NOT EXISTS (SELECT 1 FROM "Course" WHERE slug = 'module-ai-pdf') THEN
INSERT INTO "Course" (id, slug, title, description, published, "allowAudio", "order", "createdAt", "updatedAt")
VALUES (
'clmoduleaipdf000000004',
'module-ai-pdf',
'Расширение: AI-разбор PDF и исследований',
'Промпты А1/А2/А3 для структурированного разбора PDF-документов, статей и исследований с помощью AI. Включает эталонный прогон и демо-PDF.',
false,
false,
201,
NOW(),
NOW()
);
RAISE NOTICE 'Создан курс module-ai-pdf';
ELSE
RAISE NOTICE 'Курс module-ai-pdf уже существует — пропуск';
END IF;
-- module-legacy
IF NOT EXISTS (SELECT 1 FROM "Course" WHERE slug = 'module-legacy') THEN
INSERT INTO "Course" (id, slug, title, description, published, "allowAudio", "order", "createdAt", "updatedAt")
VALUES (
'clmodulelegacy00000005',
'module-legacy',
'Расширение: Legacy-миграция из Evernote / Notion',
'Пошаговые инструкции и чеклист пост-обработки для переноса данных из Evernote и Notion в хранилище «Второй мозг для бизнеса».',
false,
false,
202,
NOW(),
NOW()
);
RAISE NOTICE 'Создан курс module-legacy';
ELSE
RAISE NOTICE 'Курс module-legacy уже существует — пропуск';
END IF;
END
$$;
COMMIT;
-- Проверка результата
SELECT slug, title, published, "order" FROM "Course"
WHERE slug IN ('biz-brain-base', 'biz-brain-premium', 'module-caldav', 'module-ai-pdf', 'module-legacy')
ORDER BY "order";