feat: Оптимизация навигации AdminJS в логические группы

- Объединены ресурсы в 5 логических групп: Контент сайта, Бронирования, Отзывы и рейтинги, Персонал и гиды, Администрирование
- Удалены дублирующие настройки navigation для чистой группировки
- Добавлены CSS стили для визуального отображения иерархии с отступами
- Добавлены эмодзи-иконки для каждого типа ресурсов через CSS
- Улучшена навигация с правильной вложенностью элементов
This commit is contained in:
2025-11-30 21:57:58 +09:00
parent 1e7d7c06eb
commit 13c752b93a
47 changed files with 14148 additions and 61 deletions

111
CALENDAR_GUIDE.md Normal file
View File

@@ -0,0 +1,111 @@
# Календарь гидов и улучшенная система бронирования
## 📅 Новая функция: Календарь гидов
В разделе "Управление гидами" добавлен интерактивный календарь, который показывает:
### Возможности календаря:
- **Рабочие дни гидов** - отображение расписания по дням недели
- **Выходные дни** - отпуска и нерабочие дни гидов
- **Загруженность** - количество бронирований на каждый день
- **Фильтрация** - возможность выбора конкретных гидов для отображения
- **Навигация по месяцам** - просмотр расписания на разные периоды
### Доступ к календарю:
1. Через админ панель: Управление гидами → Расписание гидов → кнопка "📅 Открыть календарь"
2. Через дашборд: главная страница админки → карточка "Календарь гидов"
3. Прямая ссылка: `/admin/pages/calendar`
### Легенда календаря:
- 🟢 **Зеленый** - рабочий день, свободен
- 🟡 **Желтый** - рабочий день, частично занят
- 🔴 **Красный** - выходной день
-**Серый** - не работает в этот день недели
## 🔄 Улучшенная система бронирования
### Что изменилось:
#### 1. Умный поиск туров
- Поиск показывает **только доступные туры** на выбранную дату
- Учитывается график работы гидов (дни недели, рабочие часы)
- Проверяются выходные дни гидов
- Учитывается текущая загруженность (до 3 групп в день на гида)
#### 2. Улучшенная форма поиска
- Добавлено поле "Направление" для поиска по локации
- Обязательное указание даты
- Выбор количества людей в группе
- Мгновенные результаты с информацией о доступности
#### 3. Проверка при бронировании
Система автоматически проверяет:
- Работает ли гид в выбранный день недели
- Нет ли у гида выходного в эту дату
- Есть ли свободные места (максимум 3 группы в день)
- Соответствует ли размер группы ограничениям тура
### API Endpoints:
#### Календарь гидов:
- `GET /api/guides` - список активных гидов
- `GET /api/guide-schedules` - расписания работы
- `GET /api/holidays` - выходные дни гидов
- `GET /api/bookings` - существующие бронирования
#### Поиск и бронирование:
- `GET /api/search-available` - поиск доступных туров с учетом расписания
- `POST /api/booking` - создание бронирования с проверкой доступности
### Параметры поиска:
```
GET /api/search-available?destination=Seoul&date=2025-12-01&people=2
```
### Пример ответа:
```json
{
"success": true,
"data": [
{
"id": 1,
"title": "Тур по Сеулу",
"guide_id": 3,
"guide_name": "Ким Минджун",
"guide_available": true,
"available_slots": 2,
"price": 50000,
"start_time": "09:00",
"end_time": "18:00"
}
]
}
```
## 🎯 Преимущества новой системы:
### Для администраторов:
- Визуальный контроль загруженности гидов
- Эффективное планирование расписания
- Быстрое выявление свободных дней
- Простое управление выходными
### Для клиентов:
- Показываются только доступные туры
- Мгновенное бронирование без ожидания
- Прозрачная информация о доступности
- Улучшенный UX поиска
### Для гидов:
- Четкое отображение рабочих дней
- Контроль максимальной загрузки
- Возможность планировать выходные
## 🔧 Техническая реализация:
- **Frontend**: Интерактивный календарь на vanilla JavaScript
- **Backend**: API с проверкой доступности в реальном времени
- **База данных**: Связь расписаний, выходных и бронирований
- **Интеграция**: Встроен в AdminJS как пользовательская страница
Система полностью готова к использованию и автоматически учитывает все ограничения при поиске и бронировании туров.