# Календарь гидов и улучшенная система бронирования ## 📅 Новая функция: Календарь гидов В разделе "Управление гидами" добавлен интерактивный календарь, который показывает: ### Возможности календаря: - **Рабочие дни гидов** - отображение расписания по дням недели - **Выходные дни** - отпуска и нерабочие дни гидов - **Загруженность** - количество бронирований на каждый день - **Фильтрация** - возможность выбора конкретных гидов для отображения - **Навигация по месяцам** - просмотр расписания на разные периоды ### Доступ к календарю: 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 как пользовательская страница Система полностью готова к использованию и автоматически учитывает все ограничения при поиске и бронировании туров.