Аппаратно-программный комплекс для поиска попутчиков
HARDWARE AND SOFTWARE COMPLEX FOR SEARCHING FOR FELLOW TRAVELLERS

Область техники
Предложенное изобретение относится к области систем обработки информации и может найти свое применение при реализации сервиса бронирования билетов на транспорт, в частности при авиаперелетах.
Уровень техники
Из уровня техники широко известен сервис бронирования билетов на транспорт, предоставляющий пользователю возможность посредством посещения web-сайта определенной компании (aeroflot.ru, rzd.ru и т.п.) по заданным критериям (дата, стоимость билета, номер свободного места в салоне) осуществить выбор и покупку билета для совершения поездки или перелета. Для обеспечения большего удобства компании-перевозчики разрабатывают мобильные приложения, посредством которых пользователь может осуществить указанные выше процедуры.
Однако общим недостатком указанных систем является низкая функциональность и информативность вследствие ограниченных возможностей по выбору критериев поиска, обработки результатов запроса и предоставления дополнительной информации и функций.
Из уровня техники известна также система для «облегчения» планирования перелетов для нескольких пассажиров (СА 2988977 А1, 15.12.2016), на базе аппаратного-программного комплекса, включающего клиентскую и серверную части. На основе запроса система устанавливает атрибуты и планировщик выполняет поиск подходящего маршрута с предоставлением его пользователю. К атрибутам в известном решении могут относиться, в частности, город отправления, город назначения и отель для первого пассажира; город отправления, город назначения, отель и бронирование автомобиля для второго пассажира; и город отправления, город назначения, дату полета, отель и город назначения обратного рейса для третьего пассажира.
Система учитывает предпочтения пассажиров, которые входят атрибуты рейса, но не предоставляет пользователю информацию относительно пассажиров, которые являются потенциальными покупателями билетов того же рейса. Система не предоставляет пользователям возможность общения между собой и не дает возможности создания персонифицированного профиля, который может быть доступен иным пассажирам. Известная система направлена на улучшение логистики, т.е. в большей степени ориентирована не на пользователя, а на снижение издержек при предоставлении услуг. Таким образом, известному решению также присуща низкая функциональность и информативность.
В качестве аналога предложенного изобретения можно указать известное решение, представляющее собой устройство автоматизированного подбора попутчиков при покупке билетов на транспорт (RU 2706468 С2, 19.11.2019). Известное устройство, по существу являющееся системой, выполнено на базе аппаратно-программного комплекса и содержит интерфейс взаимодействия покупателя с системой бронирования и процессинговый центр. Система способна принимать запрос, связанный с поездкой, причем запрос, связанный с поездкой, связан с множеством пассажиров. На основе запроса система устанавливает множество атрибутов, проводит поиск и на основе результата поиска предоставляет маршрут для каждого из множества пассажиров. Кроме того, учитывая заданные предпочтения пользователя, система производит определение в салоне для пассажира места, наиболее соответствующее его предпочтениям. Такое определение осуществляется на основе предпочтений, указанных другими пользователями.
Однако известная система также не предоставляет пользователям возможностей общения между собой и создания персонифицированного профиля, который может быть доступен иным пассажирам. Кроме того, выбор места осуществляется в автоматическом режиме и пользователь не имеет возможности отправлять или получать какую-либо дополнительную информацию от других пользователей, являющихся потенциальными покупателями билетов на данный рейс. Вместе с тем, имея указанную информацию, пассажир мог бы отказаться от бронирования билетов, выбрать более подходящее место для совместной поездки или же иметь возможность заранее запланировать свои действия по завершении поездки.
Предложенное изобретение направлено на преодоление известных недостатков уровня техники и позволяет обеспечить достижение технических результатов, заключающихся в повышении функциональности и информативности сервиса для поиска попутчиков.
Раскрытие изобретения
Для достижения указанных технических результатов предложен аппаратно-программный комплекс для поиска попутчиков, содержащий соединенные между собой каналами связи серверную и клиентскую части, причем клиентская часть представляет собой модуль приложения, расположенный на, по меньшей мере, одном устройстве пользователя, а серверная часть состоит из соединенных между собой web-сервера, API-сервера и чат-сервера, при этом web-сервер содержит менеджер модулей, множество интерфейсных модулей, первый модуль авторизации и чат-модуль; API-сервер содержит маршрутизатор, второй модуль авторизации, модули обработки авторизованных и не авторизованных запросов, модуль обработки маршрута, модуль поиска перелетов и SMS модуль, а также соответствующие модулю обработки маршрута и модулю обработки не авторизованных запросов базы данных; чат-сервер содержит модуль терминатора потоковых запросов, сессионный модуль, модуль обработки запросов, модуль базы данных и PUSH модуль; модуль приложения содержит модуль загрузки, модуль авторизации/регистрации, модуль перелетов, модуль чата, модуль внутренней регистрации данных, модуль регистрации API, модуль избранного, модуль персональных настроек, содержащий блок загрузки медиа, при этом менеджер модулей загружает необходимый модуль интерфейса посредством https-запроса, первый модуль авторизации управляет сессией пользователя, которая обеспечивается путем использования ключевой пары хеш строк-ключ сессии и ключ обновления, ключ сессии используют для получения доступа к элементам сервиса, требующих авторизации, а ключ обновления используют при обновлении ключа сессии, чат-модуль отправляет и принимает запросы от сервера по протоколу WSS, который поддерживает инициацию передачи данных не только с запроса клиента, но и с сервера в режиме реального времени, после успешной авторизации чат-модуль устанавливает соединение с чат-сервером, при этом по данному каналу происходит отправка сообщений в чат и прием сообщений со стороны сервера, а также периодический обмен служебными сообщениями для определения активности сессии клиента, а чат-сервер подключает по протоколу WSS для взаимодействия в режиме реального времени с клиентами, подключенными к системе, а также передает сообщения между клиентами, маршрутизатор предназначен для парсинга адреса запроса и перенаправляет его в соответствующий результату парсинга модуль обработки запросов API-сервера, и представляет из себя процедуру, которая выполняет функцию, предназначенную для HTTP маршрута, второй модуль авторизации проверят валидность сессионного ключа и, в зависимости от результата проверки, возвращает ошибки доступа или передачи данных в модуль обработки авторизованных запросов, который в свою очередь предоставляет данные пользователю от модуля поиска перелетов, SMS модуля и базы данных, причем модуль поиска перелетов и SMS модуль представляют из себя абстракцию над API сервисов поиска перелетов и SMS рассылки соответственно, модуль обработки маршрута включает в себя бизнес логику API сервера и осуществляет взаимодействие с базой данных, модуль терминатора потоковых запросов определяет тип запроса, данные запроса и сессионные данные, сопровождающие запрос по протоколу WSS, сессионный модуль определяет валидность сессионного ключа и возвращает соответствующий результат терминатору потоковых запросов, причем в случае валидности сессионного ключа данные и тип запроса передаются в модуль обработки запросов чат-сервера, который вызывает соответствующий обработчик, модуль PUSH представляет из себя абстракцию над API сервисом отправки PUSH уведомлений и использует чат-сервер для оповещения участников беседы для обмена сообщениями, модуль базы данных обеспечивает работу с базой данных чат-сервера, модуль загрузки отображает экрана загрузки и предназначен для инициализации сессии, причем в случае авторизованного запроса модуль загрузки загружает данные пользователя, в случае не авторизованного доступа перенаправляет на модуль авторизации/регистрации, который предназначен для перехвата запроса и добавления служебных данных, осуществления регистрации, авторизации и подтверждения номера телефона, модуль перелетов содержит блок поиска перелетов и компонент календаря перелетов, модуль чата взаимодействует с чат-сервером посредством протокола WSS, модуль избранного формирует доступа к списку друзей, при этом в оперативной памяти устройства пользователя в течение работы модуля приложения находится менеджер состояний на базе Redux, и используется при работе приложения, при этом программный модуль, управляющий загрузкой блоков кода, при помощи https-запроса загружает необходимый модуль интерфейса.
В дальнейшем разделе описания представлены сведения, показывающие предпочтительный вариант осуществления предложенного изобретения. Для специалиста будет понятно, что принцип, положенный в основу изобретения, может быть использован не только в сервисе, относящемся к авиа перелетам, но успешно может найти свое применение также и в иных информационных системах, в которых описанным в данной заявке образом возможно осуществление взаимодействия между пользователями.
Осуществление изобретения
В данном разделе показано, каким образом может быть осуществлено изобретение с достижением указанных выше технических результатов, а также иных результатов, которые будут явным образом следовать для специалиста из представленных сведений, однако явным образом не отмечены выше как технические.
Предложенный аппаратно-программный комплекс для поиска попутчиков, представляет собой комплекс средств, предназначенных для гармоничного и слаженного взаимодействия так называемых фронтэнд (англ. Frontend) и бэкэнд (англ. Backend) частей. Фронтэнд относится к интерфейсу пользователя со стороны клиента, в то время как бэкэнд является программно-аппаратной частью самого сервиса. Таким образом, в предложенном изобретении приложение физически разделено на две основные части: аппаратная часть, обрабатывающая все запросы и возвращающая результат и клиентская часть, отображающая данные в удобной для пользователя форме.
На фиг. 1 представлена обобщенная структурная схема комплекса.
Для удобства и расширения функциональности фронтэнд часть представлена в виде двух возможных интерфейсов - обеспечиваемых мобильным приложением либо посредством доступа к сервису через web-интерфейс. В качестве ОС для мобильных приложений в предпочтительном варианте рассматриваются Android и iOS. Web сервер (не показано) предоставляет web интерфейс для клиентов, работающих с системой через браузер, например, посредством стационарного ПК. На фиг. 1 также представлены входящие в состав комплекса API-сервер и чат-сервер.
Следует отметить, что разработанный комплекс в аппаратной части имеет минимальные требования к оборудованию.
Так, минимальными системными требованиями, при которых возможна работа сервиса, являются:
Процессор: Intel Xeon Е5-2420 или лучше.
Оперативная память: 64 Гб DDR4 или больше.
Жесткий диск с аппаратной поддержкой технологии RAID 6 или более надежной и объемом не мене 5 Тб.
Ниже представлены возможные действия пользователя при работе с приложением.
Перед началом использования сервиса пользователю необходимо пройти процедуру регистрации в системе.
Предпочтителен следующий порядок действий пользователя и работы мобильного приложения.
При запуске приложения модуль загрузки отображает экран загрузки и инициализирует сессию. Далее в случае авторизованного запроса (т.е. если пользователь уже ранее был зарегистрирован) модуль загрузки загружает данные пользователя.
В случае не авторизованного доступа модуль загрузки перенаправляет пользователя на модуль авторизации/регистрации.
Модуль авторизации/регистрации состоит из перехватчика запросов, который перехватывает запрос и добавляет служебные данные. Также он содержит компонент авторизации, компонент регистрации и компонент подтверждения номера телефона.
Для регистрации в системе пользователю необходимо:
- указать адрес электронной почты;
- указать имя;
- указать пароль для дальнейшего входа в систему, и подтвердить его повторным вводом;
- указать номер сотового телефона, к которому в дальнейшем будет привязана его учетная запись, после чего на данный номер придет SMS с кодом;
- подтвердить номер телефона вводом кода из SMS сообщения.
После прохождения процедуры регистрации пользователь получает доступ к своей учетной записи в приложении и может зайти в приложение с любого устройства, используя адрес электронной почты в качестве логина и пароль.
Посредством интерфейса приложения пользователь может искать авиарейсы по пункту отправления и прибытия, а также дате вылета, за что отвечает модуль перелетов, в который включены блок поиска перелетов, и компонент календаря перелетов.
Используя приложение, пользователь может подписаться на конкретный рейс, тем самым став видимым для других пользователей, также подписанных на данный рейс, т.е. такие пользователи становятся попутчиками.
Найдя интересного ему пассажира (попутчика) в системе, летящего с ним одним рейсом, пользователь может отправить ему сообщения, например, с целью знакомства. Данная функция обеспечивается модулем чата, взаимодействующим с чат-сервером бэкэнда посредством протокола WSS (WSS-тоннель). Интересующий пассажир может быть найден, например, посредством просмотра его профиля с информацией о нем и фотографий, прикрепленных к профилю.
Редактирование профиля и загрузка фотографий обеспечивается модулем персональных настроек, в составе которого содержится блок загрузки медиа. Например, пользователь может прикрепить к профилю фотографию, сделанную непосредственно своим мобильным устройством. Также в своем профиле пользователь может указать и отредактировать информацию «О себе» с целью упрощения общения с другими пользователями. Такая информация может включать, но не ограничиваясь этим: фотографии, указание тендерной принадлежности, выбор фотографии для аватарки профиля, интересы и прочее.
Также пользователь может отправить приглашение в друзья другому пользователю. После принятия приглашения, каждый из пользователей может видеть в своем списке избранного (френдлист) тех пользователей, которые приняли такое приглашение.
Пользователь имеет возможность просмотра истории рейсов, на которые подписан он или же другой пользователь, а также имеет доступ к истории сообщений чата.
Пользователь имеет возможность направить обращение в техническую поддержку при возникновении различных ошибок в работе сервиса.
В мобильном приложении также предусмотрены модуль внутренней регистрации данных и модуль регистрации API.
Также при работе приложения в оперативной памяти устройства пользователя находится менеджер состояний на базе Redux.
Следует отметить, что использованный в рамках данной заявки термин «информативность» относится не только к предоставлению пользователю дополнительной, не представленной ранее в подобных системах информации, как это показано выше, но и характеризует информацию как меру упорядоченности материальной системы. В предложенном изобретении удельная информативность источника увеличивается за счет структурирования информации и предоставления ее в таком виде пользователю.
Предложенное изобретение в обобщенном виде представлено следующими компонентами:
API-сервер (Бэкэнд-сервер), web-сервер, мобильные клиенты (Android, iOS), чат-сервер.
Бэкэнд сервер реализует доступ к API-интерфейсу для обработки данных, выполнения запросов пользователей и прочие функции, предусмотренные для работы комплекса, не входящие в предмет данного изобретения.
Web-сервер предоставляет web интерфейс для клиентов, работающих с системой через браузер.
Чат-сервер предоставляет подключение по протоколу WSS для взаимодействия в режиме реального времени с клиентами, подключенными к системе, а также отвечает за отправку сообщений между клиентами.
Мобильные клиенты предоставляют доступ клиентам к системе посредством мобильных телефонов как на базе операционной системы Android, так и на базе IOS и также позволяют отправлять и получать сообщения между клиентами системы.
Далее представлены сведения о работе каждого из указанных выше компонентов аппаратно-программного комплекса.
Работа с web-сервером осуществляется следующим образом.
На фиг. 2 представлена примерная структурная схема.
При работе с web-сервером, как уже было отмечено выше, пользователь осуществляет вход в систему посредством пары логин/пароль. После чего программный модуль, управляющий загрузкой блоков кода (первых модулей), при помощи https-запроса загружает необходимый модуль интерфейса. Таким образом, требуемый функционал загружается на устройство пользователя не целиком, а по мере возникновения необходимости. Такое решение позволяет уменьшить объем трафика, потребляемого устройством пользователя, а также снизить нагрузку на сеть и вычислительные мощности комплекса вследствие снижения объема обработки и передачи данных.
Модуль авторизации web-сервера (первый модуль авторизации в терминологии признаков формулы) выполняет функции управления сессией пользователя. Сессия пользователя обеспечивается путем использование ключевой пары хеш строк-ключ сессии и ключ обновления. Ключ сессии используется для получения доступа к элементам сервиса, требующих авторизации. Ключ обновления используется при обновлении ключа сессии. При совершении https-запроса на сервер, если срок действия ключа сессии истекает, происходит проверка ключа обновления. В случае, если срок действия ключа обновления еще не истек, модуль авторизации обновляет ключ сессии, в результате чего с сервера приходит новая пара ключей (сессии и обновления). Если срок действия ключа обновления истек, пользователь попадает на страницу авторизации с приглашением ввести логин и пароль. Ключ сессии и ключ обновления хранятся в памяти браузера клиента.
Чат модуль web-сервера реализует функционал отправки и приема сообщений из чата. Функция активируется после успешной установки сессии. Модуль чата отправляет и принимает запросы от сервера по протоколу WSS (URI-схема протокола WebSocket, WebSocket над HTTPS), который поддерживает инициацию передачи данных не только с запроса клиента, но и с сервера в режиме реального времени. Также отличительной особенностью протокола WSS является наличие шифрованного соединения, что обеспечивает повышение безопасности использования чата. Кроме того, в случае наличия HTTP прокси между клиентом и сервером, соединение через WSS является более надежным вследствие того, что HTTP прокси не будет обрезать заголовки WebSocket (что может оборвать передачу), поскольку трафик через него будет проходить в зашифрованном виде.
После успешной авторизации чат модуль устанавливает соединение с чат-сервером, которое держится в течении всего сеанса использования приложения. По данному каналу происходит отправка сообщений в чат, прием их со стороны сервера, периодический обмен служебными сообщениями для определения активности сессии клиента. Каждое сообщение от клиента так же сопровождает сессионный ключ. Отмеченные действия могут быть обеспечены посредством модулей, WSS коннектор, Чат сервис с функцией отсылки на чат сервер бэкэнда.
Архитектура web версии приложения построена согласно паттерну MVC (Model-View-Controller). Блоки кода, объединенные обслуживанием функционала, объединены в сервисы, представляющие интерфейсы для работы другим блокам и модулям приложения. Так, запросы к серверу осуществляются при помощи HTTP сервиса, которые проходят через перехватчик запросов, дополняющий запрос ключом сессии. Запросы осуществляются по протоколу HTTPS к серверу оттуда ответ возвращается на HTTP сервис который, обработав запрос, перенаправляет его в блок кода отвечающий за хранение состояния приложения и данных (модель). Данные из модели отражаются в интерфейсе пользователя.
Работа с API-сервером осуществляется следующим образом.
На фиг. 3 представлена примерная структурная схема функционирования API-сервера.
При получении запроса он направляется на программный модуль, занимающийся парсингом адреса запроса (маршрутизатор). Далее, в зависимости от адреса, данный запрос перенаправляется в соответствующий обработчик запроса. В системе обеспечено два вида маршрутов - маршруты, требующие авторизованного доступа и маршруты, не требующие авторизованного доступа. Авторизация осуществляется модулем авторизации (вторым модулем авторизации в терминологии признаков формулы) путем проверки валидности сессионного ключа (не показан). В случае его наличия и успешного прохождения валидации, система передает запрос обработчику. В случае ошибки или отсутствия ключа - возвращается ошибка доступа.
Обработчик маршрутов включает в себя бизнес логику сервера и осуществляет взаимодействие с базой данных.
Модуль поиска перелетов и SMS модуль представляет из себя абстракцию над API сервисов поиска перелетов и SMS рассылки соответственно. Такое решение используется для обеспечения меньшей связности системы и сторонних сервисов.
В случае авторизованного запроса, данные передаются на модуль обработки авторизованных запросов, предоставляющий данные от модуля (прокси) поиска перелетов посредством notion.io, а также из базы данных и SMS модуля. Сформированный ответ по обратной цепочке передается на фронтэнд пользователю.
Работа чат-сервера обеспечивается следующим образом.
На фиг. 4 представлена примерная структурная схема функционирования чат сервера.
Чат сервер взаимодействует посредством Тоннеля WSS с Терминатором потоковых запросов, далее на сессионный модуль и модуль обработки запросов.
Терминатор потоковых запросов представляет собой программный модуль, определяющий тип запроса, данные запроса и сессионные данные, сопровождающие запрос.
Сессионный модуль определяет валидность сессионного ключа и возвращает соответствующий результат терминатору потоковых запросов. В случае валидности сессионного ключа данные и тип запроса передаются в модуль обработки запросов, который вызывает соответствующий обработчик.
Модуль PUSH уведомлений представляет из себя абстракцию над API сервисов отправки Push уведомлений. Такое решение используется для обеспечения меньшей связности системы и сторонних сервисов.
Модуль базы данных, как это очевидно для специалиста, обеспечивает работу с базой данных.
Таким образом, предложенное изобретение может быть осуществлено известными из уровня техники средствами, а в результате реализации аппаратно-программного комплекса для поиска попутчиков, обеспечивается повышение функциональности и информативности сервиса для поиска попутчиков.