СамСебеТур — это конструктор туров, позволяющий пользователям создавать индивидуальные путешествия по различным направлениям и активностям. Пользователи могут выбирать активности, локации, транспорт и варианты проживания для создания идеального тура.
- Бэкенд: FastAPI
- База данных: PostgreSQL
- Фронтенд: (На данный момент не определен)
- Телеграм-бот: aiogram
Бэкенд (FastAPI):
Основные задачи:
Обработка запросов от фронтенда.
Взаимодействие с базой данных.
Логика бизнес-процессов (выбор активности, локаций, транспортных средств, размещения и т.д.).
Аутентификация и авторизация пользователей.
Интеграция с внешними сервисами (платёжные системы, системы бронирования).
Структура проекта:
Основные компоненты:
Весификация API: формат v{номер_версии}/
API Endpoints: Эндпоинты для работы с активностями, локациями, транспортом, размещением и пользователями.
Модели данных: Определение структуры данных и взаимодействие с PostgreSQL.
Логика бизнес-процессов: Реализация алгоритмов формирования тура, расчёт стоимости и прочее.
Аутентификация и авторизация: Использование OAuth2, JWT или других механизмов.
База данных (PostgreSQL):
Схема базы данных:
Таблицы:
Users: Хранение информации о пользователях (ID, имя, email, пароль, и т.д.).
Activities: Информация об активностях (ID, название, описание, иконка, и т.д.).
Locations: Информация о локациях (ID, название, описание, связанная активность, и т.д.).
TransportTypes: Информация о транспортных средствах (ID, тип, и т.д.).
Accommodation: Информация о вариантах проживания (ID, тип, описание, цена, и т.д.).
Bookings: Данные о бронированиях (ID, пользователь, дата начала, дата окончания, и т.д.).
Trips: Полные данные о туре( ID, сегменты поездки, время старта, время финиша, и т.д.)
TripSegments: Данные о конкретном участке поездки( ID, тип транспорта, время старта, время финиша и т.д.)
Проектирование API с FastAPI:
Эндпоинты API c префиксом версии v{номер_версии}/:
/activities: Получение списка доступных активностей.
/locations: Получение списка локаций для выбранной активности.
/transport: Получение доступных вариантов транспорта.
/accommodation: Получение вариантов проживания.
/bookings: Создание и управление бронированиями.
/users: Регистрация, вход и управление пользователем.
Аутентификация и авторизация:
Реализация с использованием OAuth2 и JWT для защиты эндпоинтов и управления сессиями пользователей.
Интеграция с бэкендом:
API вызовы: Фронтенд будет взаимодействовать с бэкендом через HTTP-запросы к API эндпоинтам.
Обработка данных: Получение данных от бэкенда и отображение пользователю (списки активностей, локации, детали бронирования).
Форма бронирования: Отправка данных о выбранных опциях и пользователе на сервер для создания бронирования.
-
Функциональность:
- Интерактивный бот для формирования тура
- Возможность получения информации о текущем статусе бронирования.
- Управление настройками пользователя и предпочтениями через команды бота.
-
Интеграция:
- Подключение к API FastAPI для получения и отправки данных.
Тестирование:
Юнит-тесты: Для проверки отдельных функций и методов.
Интеграционные тесты: Для проверки взаимодействия между компонентами системы.
E2E тесты: Для проверки всего процесса от выбора активностей до завершения бронирования.
Деплой:
Контейнеризация: Использование Docker для упрощения развертывания и масштабирования.
Размещение: В облачных сервисах, таких как AWS, Azure или Heroku.