7.0 KiB
📥 Импорт воронок в базу данных
Этот скрипт позволяет импортировать все существующие воронки из папки public/funnels/ в базу данных MongoDB.
🚀 Быстрый старт
# 1. Убедитесь что MongoDB запущен и настроен .env.local
npm run import:funnels
📋 Требования
1. MongoDB подключение
Убедитесь что в .env.local указан правильный MONGODB_URI:
# .env.local
MONGODB_URI=mongodb://localhost:27017/witlab-funnel
# или для MongoDB Atlas:
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/witlab-funnel
2. Структура файлов
Скрипт ищет JSON файлы в папке public/funnels/. Каждый файл должен содержать валидную структуру воронки:
{
"meta": {
"id": "unique-funnel-id",
"title": "Название воронки",
"description": "Описание воронки",
"firstScreenId": "screen-1"
},
"screens": [
{
"id": "screen-1",
"template": "info",
"title": { "text": "Заголовок" }
}
]
}
📊 Что делает скрипт
✅ Проверяет и валидирует
- Подключение к MongoDB
- Структуру JSON файлов
- Наличие обязательных полей (
meta.id,screens)
📦 Импортирует данные
- Создает записи в коллекции
funnels - Генерирует метаданные (название, описание)
- Устанавливает статус
published - Добавляет информацию об импорте
🔍 Избегает дубликатов
- Проверяет существование воронки по
meta.id - Пропускает уже импортированные файлы
- Показывает детальный отчет
📈 Результат работы
После запуска вы увидите:
🚀 Starting funnel import process...
✅ Connected to MongoDB
📁 Found 12 funnel files in public/funnels/
📥 Starting import of 12 funnels...
[1/12] Processing funnel-test.json...
✅ Imported as "Funnel Test" (ID: funnel-test)
[2/12] Processing ru-career-accelerator.json...
⏭️ Skipped - already exists (ID: ru-career-accelerator)
...
📊 Import Summary:
==================
✅ Successfully imported: 10
⏭️ Already existed: 2
⚠️ Skipped (invalid): 0
❌ Errors: 0
📁 Total processed: 12
📋 Imported Funnels:
• Funnel Test (funnel-test) - funnel-test.json
• Career Accelerator (ru-career-accelerator) - ru-career-accelerator.json
...
🎉 Import process completed!
🎯 Генерация метаданных
Скрипт автоматически генерирует удобные названия и описания:
Название воронки
- Из
meta.title(если есть) - Из
meta.idпреобразованного в читаемый видfunnel-test→Funnel Testru-career-accelerator→Ru Career Accelerator
- По умолчанию:
Imported Funnel
Описание воронки
- Из
meta.description(если есть) - Автогенерация на основе:
- Количества экранов: "Воронка с 5 экранами"
- Используемых шаблонов: "Типы: info, form, list"
- Источника: "Импортирована из JSON файла"
🗃️ Структура в базе данных
Каждая импортированная воронка сохраняется как:
{
"_id": "ObjectId",
"funnelData": { /* Оригинальная структура JSON */ },
"name": "Сгенерированное название",
"description": "Сгенерированное описание",
"status": "published",
"version": 1,
"createdBy": "import-script",
"usage": { "totalViews": 0, "totalCompletions": 0 },
"createdAt": "2025-01-27T02:13:24.000Z",
"updatedAt": "2025-01-27T02:13:24.000Z",
"publishedAt": "2025-01-27T02:13:24.000Z"
}
🔧 Устранение проблем
Ошибка подключения к MongoDB
❌ Failed to connect to MongoDB: connect ECONNREFUSED 127.0.0.1:27017
Решение: Запустите MongoDB или проверьте MONGODB_URI
Файлы не найдены
📭 No funnel files found to import.
Решение: Убедитесь что JSON файлы находятся в public/funnels/
Валидационные ошибки
⚠️ Validation warnings for example.json: Missing meta.id
Решение: Проверьте структуру JSON файла
Дубликаты в базе
⏭️ Skipped - already exists (ID: funnel-test)
Это нормально: Скрипт не перезаписывает существующие воронки
📱 После импорта
Где найти импортированные воронки
- Админка:
http://localhost:3000/admin - Прямой доступ:
http://localhost:3000/{funnel-id} - Редактирование:
/admin/builder/{database-id}
Что можно делать
- ✅ Редактировать в билдере
- ✅ Дублировать и создавать вариации
- ✅ Просматривать статистику
- ✅ Экспортировать обратно в JSON
- ✅ Публиковать/архивировать
Совместимость
- ✅ Оригинальные JSON файлы продолжают работать
- ✅ Импортированные воронки имеют приоритет при загрузке
- ✅ Полная обратная совместимость
🔄 Повторный запуск
Скрипт можно запускать несколько раз:
- Безопасно: не создает дубликаты
- Умно: импортирует только новые файлы
- Быстро: пропускает уже обработанные
📝 Логи и отчеты
Скрипт выводит подробную информацию:
- 📁 Количество найденных файлов
- 🔄 Прогресс обработки каждого файла
- ✅ Успешные импорты с деталями
- ⚠️ Предупреждения и пропуски
- ❌ Ошибки с объяснениями
- 📊 Итоговая сводка
💡 Совет: Запустите скрипт после настройки базы данных, чтобы быстро мигрировать все существующие воронки в новую админку!