feat(ws6): SQL-скрипт создания курсов-носителей biz-brain + verify-скрипт
- scripts/create_biz_brain_courses.sql: идемпотентное создание 5 курсов (biz-brain-base, biz-brain-premium, module-caldav, module-ai-pdf, module-legacy) - scripts/verify_biz_brain_grant.sh: проверка /api/internal/grant (Нужен Дмитрий для запуска на проде) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
-- ============================================================
|
||||
-- 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";
|
||||
Reference in New Issue
Block a user