w-funnel/IMPORT-GUIDE.md
dev.daminik00 0fc1dc756e admin
2025-09-27 05:48:42 +02:00

7.0 KiB
Raw Blame History

📥 Импорт воронок в базу данных

Этот скрипт позволяет импортировать все существующие воронки из папки 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!

🎯 Генерация метаданных

Скрипт автоматически генерирует удобные названия и описания:

Название воронки

  1. Из meta.title (если есть)
  2. Из meta.id преобразованного в читаемый вид
    • funnel-testFunnel Test
    • ru-career-acceleratorRu Career Accelerator
  3. По умолчанию: Imported Funnel

Описание воронки

  1. Из meta.description (если есть)
  2. Автогенерация на основе:
    • Количества экранов: "Воронка с 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)

Это нормально: Скрипт не перезаписывает существующие воронки

📱 После импорта

Где найти импортированные воронки

  1. Админка: http://localhost:3000/admin
  2. Прямой доступ: http://localhost:3000/{funnel-id}
  3. Редактирование: /admin/builder/{database-id}

Что можно делать

  • Редактировать в билдере
  • Дублировать и создавать вариации
  • Просматривать статистику
  • Экспортировать обратно в JSON
  • Публиковать/архивировать

Совместимость

  • Оригинальные JSON файлы продолжают работать
  • Импортированные воронки имеют приоритет при загрузке
  • Полная обратная совместимость

🔄 Повторный запуск

Скрипт можно запускать несколько раз:

  • Безопасно: не создает дубликаты
  • Умно: импортирует только новые файлы
  • Быстро: пропускает уже обработанные

📝 Логи и отчеты

Скрипт выводит подробную информацию:

  • 📁 Количество найденных файлов
  • 🔄 Прогресс обработки каждого файла
  • Успешные импорты с деталями
  • ⚠️ Предупреждения и пропуски
  • Ошибки с объяснениями
  • 📊 Итоговая сводка

💡 Совет: Запустите скрипт после настройки базы данных, чтобы быстро мигрировать все существующие воронки в новую админку!