Веб-інтерфейси
Система надає веб-інтерфейси на основі ролей для різних співробітників для управління VIP доступом.
Огляд
| Інтерфейс | URL | Необхідна роль | Опис |
|---|---|---|---|
| Перевірка касира | /cashier/ |
cashier, admin |
Перевірка валідності скіпасу на вході |
| Управління лижною школою | /skischool/ |
skischool, admin |
Створення та управління уроками |
| Бронювання готелю | /hotel/ |
hotel, admin |
Створення бронювань готелів з VIP доступом |
| Журнал аудиту | /audit/ |
admin, auditor |
Перегляд всіх дій операторів |
| Звіти та аналітика | /reports/ |
admin, reports_manager |
Попередній перегляд, фільтрація та експорт уроків, бронювань і проходів |
Аутентифікація
Всі інтерфейси вимагають аутентифікації. Користувачі повинні:
1. Увійти в систему на /login/
2. Бути призначені до відповідної групи (cashier/skischool/hotel/admin/reports_manager)
3. Мати активний обліковий запис
Інтерфейс касира
URL: /cashier/
Призначення: Швидка перевірка скіпасів на вхідних турнікетах
Можливості: - Перевірка скіпасів в реальному часі - Показує статус VIP доступу (✅ дозволено / ❌ заборонено) - Відображає інформацію про бронювання для валідних скіпасів - Показує періоди майбутньої валідності для зараз невалідних скіпасів - Автоматичний фокус на полі вводу після кожної перевірки для швидкої обробки
Відображається інформація:
Коли доступ ДОЗВОЛЕНО: - ✅ VIP ДОСТУП ДОЗВОЛЕНО - Номер бронювання - ID уроку (якщо застосовно) - Номер скіпасу - Час перевірки
Коли доступ ЗАБОРОНЕНО, але скіпас знайдено в системі: - ❌ ДОСТУП ЗАБОРОНЕНО - Причина заборони - Номер скіпасу - ℹ️ Інформація про скіпас: - Номер бронювання - Активний з (дата та час) - Активний до (дата та час) - Статус (Активний/Скасований/Завершений)
Послідовність використання:
1. Введіть номер скіпасу (наприклад, 1-12-223-2323)
2. Натисніть "Перевірити доступ" або натисніть Enter
3. Перегляньте результат
4. Поле вводу автоматично очищається для наступної перевірки
Інтерфейс лижної школи
URL: /skischool/
Призначення: Управління уроками лижної школи та учасниками
Можливості: - Створення нових уроків з кількома учасниками - Додавання кількох скіпасів на учасника - Перегляд списку активних уроків - Пошук та фільтрація уроків - Управління деталями уроків - Редагування вже створених уроків з вкладки "Список уроків" (кнопка ✏️ завантажує дані у форму)
Вкладки: 1. Створити урок - Деталі уроку (номер бронювання, дати, місце, інструктор) - Додавання учасників з інформацією про клієнта - Додавання кількох скіпасів на учасника
- Список уроків
- Перегляд всіх уроків
- Фільтрація за статусом, датою, номером бронювання
- Швидкий доступ до деталей уроку
Створення уроку: 1. Заповніть деталі уроку: - Номер бронювання - Дата та час початку та закінчення - Ім'я інструктора - Місце проведення - Опис 2. Додайте учасників: - Інформація про клієнта (ім'я, прізвище, телефон, email) - Натисніть "Додати учасника" 3. Додайте скіпаси для кожного учасника: - Номер скіпасу - Період валідності (необов'язково) - Натисніть "Додати скіпас" 4. Натисніть "Створити урок"
Інтерфейс готелю
URL: /hotel/
Призначення: Створення бронювань готелів з VIP доступом
Можливості: - Створення бронювань готелів - Прив'язка скіпасів до бронювань - Надання VIP доступу для гостей готелю - Перегляд існуючих бронювань - Редагування активних бронювань безпосередньо зі списку (кнопка ✏️ відкриває форму з даними)
Вкладки: 1. Створити бронювання - Інформація про гостя - Деталі готелю та номера - Дати бронювання - Скіпаси гостей
- Список бронювань
- Перегляд всіх бронювань готелів
- Фільтрація за датами, готелем, ID бронювання
- Швидкий доступ до деталей бронювання
Створення бронювання: 1. Заповніть дані гостя: - Ім'я, прізвище - Номер телефону - Email 2. Заповніть деталі бронювання: - ID готелю - ID номера - ID бронювання - Дати заїзду та виїзду 3. Додайте гостей та їх скіпаси: - Ім'я та деталі гостя - Номер скіпасу - Натисніть "Додати гостя" 4. Натисніть "Створити VIP бронювання"
Інтерфейс журналу аудиту
URL: /audit/
Роль: admin, auditor
Призначення: Моніторинг всіх дій операторів для безпеки та підзвітності
Можливості:
- Перегляд всіх дій системи з розкриттям детальних даних
- Фіксація попереднього/нового стану уроків і бронювань (учасники, скіпаси, дати)
- JSON-блоки «До/Після» для кожного оновлення дозволяють швидко побачити відмінності
- Таблиця «Змінені поля» підсвічує різницю по кожному ключу
- Кнопка 📥 Експорт в Excel, що враховує активні фільтри
- Фільтрація за:
- Користувачем
- Типом дії (створення/оновлення/видалення, перевірки, відмови, вхід/вихід)
- Діапазоном дат (з точністю до хвилини)
- Статусом (успіх/помилка/заборонено)
- IP адресою
- Номером скіпасу (пошук усіх дій з конкретним номером)
- Експорт логів
- Відстеження сесій користувачів
Логовані дії: - Вхід/вихід користувача - Перевірки скіпасів - Створення/зміна/видалення уроків (включно з учасниками та скіпасами) - Створення/зміна/видалення бронювань (включно з гостями та скіпасами) - Спроби доступу, що були заборонені - Перегляд звітів
Відображається інформація: - Часова мітка - Ім'я користувача - Тип дії - Статус - IP адреса - User agent - Деталі запиту - Цільовий об'єкт (урок, бронювання, тощо) - Внесені зміни (для оновлень)
Управління ролями
Для надання доступу користувачам:
- Перейдіть до Django Admin:
/admin/ - Перейдіть до "Groups"
- Призначте користувачів до відповідних груп:
cashier- Доступ до інтерфейсу перевірки скіпасівskischool- Доступ до управління урокамиhotel- Доступ до управління бронюваннями готелівadmin- Повний доступ, включаючи журнал аудитуauditor- Перегляд журналу аудиту та експорт
Функції безпеки
- Всі дії логуються в системі аудиту
- Відстеження сесій для кожного користувача
- Запис IP адреси та user agent
- Спроби доступу, що були заборонені, логуються
- Пароль вимагається для всіх чутливих операцій
- Захист від CSRF на всіх формах
- Контроль доступу на основі ролей
Мобільна оптимізація
Всі інтерфейси адаптивні та працюють на: - Десктопних браузерах - Планшетах - Мобільних телефонах
Рекомендується використовувати інтерфейс касира на планшетах для швидкої обробки на вхідних турнікетах.
Підтримка браузерів
- Chrome (рекомендовано)
- Firefox
- Safari
- Edge
Мінімальна роздільна здатність екрана: 320px ширини
Інтерфейс звітів
URL: /reports/
Ролі: admin, reports_manager
Призначення: єдина точка для перегляду уроків, бронювань та проходів з можливістю експортувати Excel прямо з браузера.
Структура:
- 🎿 Уроки — працює поверх GET /api/v1/lessons/, показує кількість учасників і скіпасів, дозволяє фільтрувати за датою початку та статусом
- 🏨 Бронювання — використовує GET /api/v1/bookings/, відображає готель, клієнта, скіпаси й статус бронювання
- 🎫 Проходи — використовує GET /api/v1/reports/entries/, показує останні 1000 проходів із підрахунком валідних/невалідних
Фільтри:
- Для уроків/бронювань — період дат (за замовчуванням останні 30 днів) та статус
- Для проходів — часовий діапазон та статус valid/invalid
Експорт:
- GET /api/v1/reports/export-lessons/?from=&to= — Excel з уроками та скіпасами
- GET /api/v1/reports/export-bookings/?from=&to= — Excel з бронюваннями та гостями
- GET /api/v1/reports/export-validations/?from=&to=&status= — Excel зі всіма проходами з кольоровими статусами
UX особливості: - Автоматичне підставлення діапазону дат (останній місяць) - Картки з короткою статистикою над кожною таблицею - Попередній перегляд дозволяє перевірити дані перед експортом
Детальний посібник із прикладами CURL і створенням групи reports_manager: docs/REPORTS_GUIDE.md