9.8 KiB
9.8 KiB
WitLab Funnel Admin - Полноценная админка с MongoDB
Что реализовано
✅ База данных MongoDB
- Подключение через Mongoose с автоматическим переподключением
- Модели для воронок с полной валидацией структуры данных
- История изменений для системы undo/redo
- Индексы для производительности поиска и фильтрации
✅ API Routes
GET /api/funnels- список воронок с пагинацией и фильтрамиPOST /api/funnels- создание новой воронкиGET /api/funnels/[id]- получение конкретной воронкиPUT /api/funnels/[id]- обновление воронкиDELETE /api/funnels/[id]- удаление воронки (только черновики)POST /api/funnels/[id]/duplicate- дублирование воронкиGET/POST /api/funnels/[id]/history- работа с историей измененийGET /api/funnels/by-funnel-id/[funnelId]- загрузка по funnel ID (для совместимости)
✅ Каталог воронок /admin
- Список всех воронок с поиском, фильтрацией и сортировкой
- Создание новых воронок с базовым шаблоном
- Дублирование существующих воронок
- Удаление черновиков (опубликованные можно только архивировать)
- Статистика использования (просмотры, завершения)
- Статусы: draft, published, archived
✅ Редактор воронок /admin/builder/[id]
- Полноценный билдер интегрированный с существующей архитектурой
- Автосохранение изменений в базу данных
- Система публикации с контролем версий
- Топ бар с информацией о воронке и кнопками действий
- Экспорт/импорт JSON для резервного копирования
✅ Система undo/redo
- История действий с глубиной до 50 шагов
- Базовые точки при сохранении в БД (после сохранения нельзя откатить)
- Несохраненные изменения отслеживаются отдельно
- Автоматическая очистка старых записей истории
✅ Интеграция с существующим кодом
- Обратная совместимость с JSON файлами
- Приоритет базы данных при загрузке воронок
- Автоматическое увеличение статистики при просмотрах
- Единый API для всех компонентов системы
Настройка окружения
1. MongoDB Connection
Создайте .env.local файл:
# MongoDB
MONGODB_URI=mongodb://localhost:27017/witlab-funnel
# или для MongoDB Atlas:
# MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/witlab-funnel
# Base URL (для server-side запросов)
NEXT_PUBLIC_BASE_URL=http://localhost:3000
2. Установка MongoDB локально
# macOS (через Homebrew)
brew install mongodb-community
brew services start mongodb-community
# Или используйте MongoDB Atlas (облако)
3. Запуск проекта
npm install
npm run dev
Использование
Создание новой воронки
- Перейдите на
/admin - Нажмите "Создать воронку"
- Автоматически откроется билдер с базовым шаблоном
- Редактируйте экраны в правом сайдбаре
- Сохраняйте изменения кнопкой "Сохранить"
- Публикуйте готовую воронку кнопкой "Опубликовать"
Редактирование существующей воронки
- В каталоге найдите нужную воронку
- Нажмите иконку "Редактировать" (карандаш)
- Внесите изменения в билдере
- Сохраните или опубликуйте
Просмотр воронки
- Нажмите иконку "Просмотр" (глаз) в каталоге
- Или перейдите на
/{funnelId}напрямую
Дублирование воронки
- Нажмите иконку "Дублировать" (копия)
- Создастся копия со статусом "Черновик"
- Можете отредактировать и опубликовать
Архитектура
Модели данных
// Основная модель воронки
interface IFunnel {
funnelData: FunnelDefinition; // JSON структура воронки
name: string; // Человеко-читаемое имя
status: 'draft' | 'published' | 'archived';
version: number; // Автоинкремент при изменениях
usage: { // Статистика
totalViews: number;
totalCompletions: number;
};
}
// История изменений
interface IFunnelHistory {
funnelId: string; // Связь с воронкой
sessionId: string; // Сессия редактирования
funnelSnapshot: FunnelDefinition; // Снимок состояния
sequenceNumber: number; // Порядок в сессии
isBaseline: boolean; // Сохранено в БД
}
API Architecture
- RESTful API с правильными HTTP методами
- Валидация данных на уровне Mongoose схем
- Обработка ошибок с понятными сообщениями
- Пагинация для больших списков
- Фильтрация и поиск по всем полям
Frontend Architecture
- Server Components для статической генерации
- Client Components для интерактивности
- Единый API клиент через fetch
- TypeScript типы для всех данных
- Error Boundaries для обработки ошибок
Безопасность
Текущие меры
- Валидация входных данных на всех уровнях
- Проверка существования ресурсов перед операциями
- Ограничения на удаление опубликованных воронок
- Санитизация пользовательского ввода
Будущие улучшения
- Аутентификация пользователей
- Авторизация по ролям
- Аудит лог действий
- Rate limiting для API
Производительность
Текущая оптимизация
- MongoDB индексы для быстрого поиска
- Пагинация вместо загрузки всех записей
- Selective loading - только нужные поля
- Connection pooling для базы данных
Мониторинг
- Логирование ошибок в консоль
- Время выполнения запросов отслеживается
- Размер истории ограничен (100 записей на сессию)
Миграция с JSON
Существующие JSON воронки продолжают работать автоматически:
- Приоритет базы данных - сначала поиск в MongoDB
- Fallback на JSON - если не найдено в базе
- Импорт из JSON - можно загрузить JSON в билдере
- Экспорт в JSON - для резервного копирования
Roadmap
Ближайшие планы
- Основная функциональность админки
- Система undo/redo
- Интеграция с существующим кодом
- Аутентификация пользователей
- Collaborative editing
- Advanced аналитика
Долгосрочные цели
- Multi-tenant архитектура
- A/B тестирование воронок
- Интеграция с внешними сервисами
- Mobile app для мониторинга
Техническая поддержка
Логи и отладка
# Проверка подключения к MongoDB
curl http://localhost:3000/api/funnels
# Просмотр логов в консоли разработчика
# MongoDB connection logs в терминале
Частые проблемы
- MongoDB not connected - проверьте MONGODB_URI в .env.local
- API errors - проверьте сетевое соединение
- Build errors - убедитесь что все зависимости установлены
Контакты
- GitHub Issues для багрепортов
- Документация в
/docs/ - Комментарии в коде для сложных частей
Полноценная админка с MongoDB готова к использованию! 🚀