Заказчик
Цифровая SaaS-платформа в сфере грузовых авиаперевозок
Предпосылки
Общие
- Быстрая диджитализация глобальной экономики и, в частности, отрасли грузоперевозок
- Перевозчики и грузовые компании, которые смогут воспользоваться новыми возможностями и технологиями, опередят конкурентов
- Cargobooking365 был создан как ответ на текущие вызовы в отрасли и направлен на занятие доли в новой нише электронного бронирования грузовых авиаперевозок
В отрасли грузовых авиаперевозок
- Бронирование грузоперевозок более комплексно, чем бронирование пассажироперевозок
- Ценообразование зависит от множества факторов, таких как маршрут, терминал аэропорта (в обоих пунктах), тип груза, его характеристики транспортировки и хранения, размеры самолета и отсека в нём и т. д.
- Отсутствие современных и общепринятых стандартов в отрасли относительно онлайн-процессов: взаимодействие и обмен данными основаны на устаревшем стандарте CargoImp, в то время как более новый CargoXML все еще мало используется
- Поэтому клиенты и авиакомпании в основном пользуются ручными расчетам, что приводит к значительным задержкам и расходам
Цели
- Обеспечить лидерство компании и долю рынка в области e-booking решений для авиа-грузоперевозок
- Диджитализировать взаимодействие с существующими клиентами, чтобы упростить процессы бронирования и коммуникации
- Использовать открытую SaaS-платформу для привлечения новых партнёров – как конечных потребителей услуг грузовых авиаперевозок, так и авиакомпаний и их агентов, осуществляющих услуги транспортировки
Задачи
- Разработать платформу, на которой смогли бы взаимодействовать клиенты, агенты и авиакомпании в рамках процесса поиска и подбора рейсов для грузовых авиаперевозок
- Разработать систему для подсчета стоимости транспортировки:
- Алгоритм должен учитывать множество параметров: маршрут, тип и параметры груза, условия приёма и хранения грузов в терминалах отправки и получения, параметры самолета, осуществляющего рейс, и его отсеков
- Система расчета стоимости должна быть реализована как отдельный микро-сервис, способный возвращать результат расчётов различным пользователям этих данных
- Реализовать модуль хранения и подбора расписаний выполняемых рейсов
- Автоматизировать бизнес-процессы подбора и бронирования рейсов
- Минимизировать телефонную и email-коммуникацию сторон (клиента, агента и перевозчика), тем самым ускорив процесс подбора и бронирования рейсов
- Реализовать модуль распознавания авианакладных (Air Waybills), чтобы сократить время обработки и генерации основных полётных документов
- Интегрировать систему с локальной ERP-системой Dynamics CRM 365 для синхронизации клиентских данных, поисковых запросов и выполняемых заявок на бронирование
Архитектура SaaS-платформы
Главной особенностью системы является её работа по модели SaaS. Это обуславливает и выбор технологий и стэка решения.
Архитектура построена на кроссплатформенных и open-source технологиях. Это позволяет относительно легко масштабировать систем по территориально-географическому признаку, а также при наращивании производительности. Система может быть запущена в наилучшей в зависимости от целей бизнеса среде — будь то облачные решения от Microsoft Azure / Amazon AWS или частные или виртуальные сервера.
Функционально решение разделено на несколько модулей:
- Основа системы – поиск и калькуляция тарифов,
- Модуль расписаний – загрузка полётных расписаний и подбор конкретных рейсов,
- Интеграционный шлюз – обеспечивает обмен ключевыми данными со сторонними системами:
- Разработанным сервисом распознавания авианакладных документов,
- CRM системой Dynamics CRM 365,
- Справочными и информационными сервисами авиационных данных в интернете.
Back-end:
Бэкенд состоит из базы данных PostgreSQL и набора API сервисов, реализующих логику приложения:
- API сервис для front-end,
- API сервис калькулятора,
- API сервис OCR распознавания авианакладных.
Все сервисы размещены в Azure облаке в виде AppService. При разработке использовалась модульная платформа для разработки программного обеспечения с открытым исходным кодом .Net Core. В качестве ORM-инструмента выступает EF Core, предоставляющий высокий уровень абстракции при работе с базами данных.
При разработке используется шаблон проектирования CQRS, позволяющий оперировать такими категориями как команды и запросы.
Основным источником данных системы является облачный Dynamics CRM 365, информация из которого подгружается по расписанию и сохраняется в PostgreSQL. Аналогично с использованием удалённых API-вызовов загружается дополнительная справочная и полётная информация из сторонних систем (IATA-коды, трекинг системы, расписания, …).
Система рассчитана на использование сразу несколькими клиентами благодаря multi-tenant архитектуре. Каждый tenant может иметь свои настройки и свой UI.
API сервис калькулятора является “мозгом” не только для портала cargobooking365, но и для функциональных модулей, запущенных на стороне Dynamics CRM 365. Сервис калькулятора является своего рода ядром двух систем и отвечает за подбор маршрутов перевозок по входных параметрам запроса. Сервис не просто линейно фильтрует данные, но и осуществляет сложные манипуляции по развертыванию групповых маршрутов, проверке габаритов груза на соответствие габаритам авиалайнеров, подбор тарифов и авиационных сборов и много другое.
Стэк технологий и сервисов
- .Net Core
- EF Core
- CQRS
- СУБД PostgreSQL
- Cognitive services Microsoft Azure (object characters recognition)
- Сервисы API для SaaS-платформы
Front-end:
Фронтэнд реализован на фреймворке React с использованием typescript. React позволяет создавать инкапсулированные компоненты с собственным состоянием, а затем объединять их в сложные пользовательские интерфейсы. TypeScript является инструментом для статической типизации и позволяет отлавливать большую часть ошибок еще до исполнения кода.
Для более простой и понятной интеграции между клиентом и сервером используется server-side type generation. Кодогенератор способен генерировать типизацию typescript на основе .net классов.
Среди используемых на фронте инструментов:
- Redux
- Redux Toolkit
- Formik
- Yup
- Axios
- react-i18next
- react-bootstrap
На фронтенде помимо всего прочего присутствует модуль, позволяющий реализовать поддержку multi-tenant. Указывая при сборке ИД определенного тенанта, на выходе он получает bundles клиента с присущими только ему стилями, изображениями и текстовками.
Стэк технологий и сервисов
- React.js
- react-bootstrap
- Formik
- NGINX
Проект был запущен весной 2020 года.
Публичный сайт сервиса https://cargobooking365.com
На платформе уже зарегистрирован первый оператор-тенант, работающий по SaaS-модели. Им стала компания FFCargo Services, представляющая услуги подбора и осуществления грузовых авиаперевозок на рынке Восточной Европы и Ближнего Востока.
Оператор платформы ведёт переговоры с рядом авиакомпаний, осуществляющих грузоперевозки, для подключения и начала работы не платформе.