# 📥 Импорт воронок в базу данных Этот скрипт позволяет импортировать все существующие воронки из папки `public/funnels/` в базу данных MongoDB. ## 🚀 Быстрый старт ```bash # 1. Убедитесь что MongoDB запущен и настроен .env.local npm run import:funnels ``` ## 📋 Требования ### 1. MongoDB подключение Убедитесь что в `.env.local` указан правильный `MONGODB_URI`: ```bash # .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/`. Каждый файл должен содержать валидную структуру воронки: ```json { "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! ``` ## 🎯 Генерация метаданных Скрипт автоматически генерирует удобные названия и описания: ### Название воронки 1. **Из `meta.title`** (если есть) 2. **Из `meta.id`** преобразованного в читаемый вид - `funnel-test` → `Funnel Test` - `ru-career-accelerator` → `Ru Career Accelerator` 3. **По умолчанию**: `Imported Funnel` ### Описание воронки 1. **Из `meta.description`** (если есть) 2. **Автогенерация** на основе: - Количества экранов: "Воронка с 5 экранами" - Используемых шаблонов: "Типы: info, form, list" - Источника: "Импортирована из JSON файла" ## 🗃️ Структура в базе данных Каждая импортированная воронка сохраняется как: ```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) ``` **Это нормально**: Скрипт не перезаписывает существующие воронки ## 📱 После импорта ### Где найти импортированные воронки 1. **Админка**: `http://localhost:3000/admin` 2. **Прямой доступ**: `http://localhost:3000/{funnel-id}` 3. **Редактирование**: `/admin/builder/{database-id}` ### Что можно делать - ✅ Редактировать в билдере - ✅ Дублировать и создавать вариации - ✅ Просматривать статистику - ✅ Экспортировать обратно в JSON - ✅ Публиковать/архивировать ### Совместимость - ✅ Оригинальные JSON файлы продолжают работать - ✅ Импортированные воронки имеют приоритет при загрузке - ✅ Полная обратная совместимость ## 🔄 Повторный запуск Скрипт можно запускать несколько раз: - **Безопасно**: не создает дубликаты - **Умно**: импортирует только новые файлы - **Быстро**: пропускает уже обработанные ## 📝 Логи и отчеты Скрипт выводит подробную информацию: - 📁 Количество найденных файлов - 🔄 Прогресс обработки каждого файла - ✅ Успешные импорты с деталями - ⚠️ Предупреждения и пропуски - ❌ Ошибки с объяснениями - 📊 Итоговая сводка --- **💡 Совет**: Запустите скрипт после настройки базы данных, чтобы быстро мигрировать все существующие воронки в новую админку!