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

202 lines
7.0 KiB
Markdown
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.

# 📥 Импорт воронок в базу данных
Этот скрипт позволяет импортировать все существующие воронки из папки `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 файлы продолжают работать
- ✅ Импортированные воронки имеют приоритет при загрузке
- ✅ Полная обратная совместимость
## 🔄 Повторный запуск
Скрипт можно запускать несколько раз:
- **Безопасно**: не создает дубликаты
- **Умно**: импортирует только новые файлы
- **Быстро**: пропускает уже обработанные
## 📝 Логи и отчеты
Скрипт выводит подробную информацию:
- 📁 Количество найденных файлов
- 🔄 Прогресс обработки каждого файла
- ✅ Успешные импорты с деталями
- ⚠️ Предупреждения и пропуски
- ❌ Ошибки с объяснениями
- 📊 Итоговая сводка
---
**💡 Совет**: Запустите скрипт после настройки базы данных, чтобы быстро мигрировать все существующие воронки в новую админку!