Как мы разработали приложение для бортпроводников S7 Airlines, чтобы избавить их от бумажной работы
Пока пассажиры в самолёте отдыхают, делают выбор между курицей и рыбой и наблюдают за красотой мира из иллюминатора, бортпроводники напряжённо работают, обслуживая весь рейс от взлёта до посадки. Надо уделить внимание каждому пассажиру, а к этому ещё добавляется много административной работы с документами и отчётами. За разработкой приложения-помощника к нам обратилась авиакомпания S7 Airlines, а мы создали уникальный продукт почти с 20 интеграциями и возможностью работы без интернета. В этой статье рассказываем, как нам это удалось и какие технологии использовали.
Как строится работа бортпроводников
Если вы думаете, что профессия бортпроводника наполнена сплошной романтикой и путешествиями, то вы сильно ошибаетесь. Как и в любой сфере здесь есть рутина, которую сложно заметить обычному пассажиру. У бортпроводников это бесконечные отчёты, брифы полётов и множество документов для каждого рейса.
До KOTELOV бортпроводники S7 Airlines тратили от 20 до 60 минут на заполнение всевозможных бумаг, а на рейс приходилось брать с собой около десяти килограмм важных документов. Работу усложняли внешние факторы, например, кто-то спешил и заполнил бланк непонятным почерком или просто забыл вписать данные.
Ещё одна боль экипажа — перед полётом все данные выдавали на бумажном брифинге. Если уже во время рейса появились задержки, то не всегда получалось узнать это вовремя.
Цели и вызовы проекта
Вот какие цели мы поставили перед собой:
Сократить время на ведение отчётности. Во время полёта есть множество задач, которые требуют внимательности и собранности, поэтому хорошо бы сделать так, чтобы бумажная работа занимала как можно меньше времени.
Всегда актуальная информация. У экипажа должна быть возможность в любой момент получить все данные по рейсу. При этом так, чтобы не пришлось брать на рейс стопку бумаги.
Клиентский сервис. Данные о каждом пассажире бизнес-класса должны быть под рукой, чтобы оказывать персонализированный сервис и предлагать уникальные услуги.
Аналитика. Заполнять отчёты — половина беды. Потом их надо обработать и сделать выводы, чтобы улучшить услуги. Поэтому в приложении должна быть система сбора и анализа данных.
Разработка осложняется также тем, что большую часть времени приложение станут использовать без связи или с очень плохим соединением, а данные о рейсе нужны актуальные. Поэтому около 200 МБ данных надо хранить локально. А ещё в приложение надо интегрировать 20 сторонних сервисов. Это было важное условия авиакомпании.
Надо думать как бортпроводник
Работа авиакомпания для большинства остаётся загадкой. Никто не знает, что делают бортпроводники во время полёта, кроме объявления техники безопасности и обслуживания пассажиров. Ещё меньше знают о том, что происходит в офисе. Но без этой информации сложно разработать полезное приложение, отвечающее на потребности компании. Поэтому мы поселили наших системных и бизнес-аналитиков рядом с Домодедово. Целый год они ходили в офис S7 Airlines и изучали внутренние процессы.
За это время аналитики успели пообщаться с главами различных служб, включая пассажирский сервис, логистику, безопасность, бортпроводников и маркетинг. В результате удалось определить бизнес-требования, найти проблемы и усложненные процессы.
После большого исследования мы составили требования и разработали технические задания для каждого блока бизнеса компании:
функционал библиотеки;
информативный календарь рейсов;
питание пассажиров эконом-класса, бизнес-класса и спецпитание;
блок общей информации о рейсе;
система оповещений о дефектах пассажирского судна;
отображение всевозможных грузов;
схемы аварийно-спасательного оборудования;
анкетирование пассажиров;
два вида чатов для коммуникации с service desk и центром обслуживания пассажиров;
работа с отчетами;
блок работы с пассажирами;
информация об экипаже рейса.
Представляем Cabin Crew Pad
Мы учли все требования и разработали Cabin Crew Pad — сервис для бортпроводников, который упрощает работу до рейса, во время и после него. Сервис состоит из трёх приложений:
Приложение для iPad. Оно доступно старшим бортпроводником, предлагает расширенные функции, хранит много данных о рейсе.
Приложение для Android. Им пользуются рядовые бортпроводником. Оно включает библиотеку нормативных, накладных актов и другие документы.
Портал администратора. Веб-приложение для загрузки данных, настроек и анализа отчётов.
Больше всего функций доступно в приложении для iPad, которым пользуются старшие бортпроводники. Поэтому посмотрим, что оно в себя включает:
Календарь рейсов
Календарь с запланированными рейсами с возможностью отобразить время по UTC, аэропорту базирования или месту прилёта.
Отчеты
Если раньше все отчёты надо было заполнять от руки, а после сдавать администратору, то с приложением все данные автоматически отправляются в админку сервиса. Над этой задачей пришлось попотеть, чтобы тяжёлые файлы с фотографиями не терялись пока нет связи и всегда доходили до сервера.
Библиотека
Помните про 10 килограмм бумаг, которые приходилось брать на каждый рейс? Мы их оцифровали, перевели в удобный интерфейс и добавили поиск, закладки и интерактивное оглавление. Теперь вместо стопки бумаг на борт можно брать только планшет.
Рейс
Вся информация о рейсе на одном дашборде.
Карта салона
Выводятся данные о всех пассажирах, включая опоздавших и особых, например, с животными или маломобильные. Ещё добавили поиск, чтобы не приходилось перебирать всех, кто есть на рейсе.
Меню
Можно быстро узнать предпочтения по питанию пассажиров в бизнес-классе.
Анкета и обратная связь
Встроили анкету для пассажиров — данные сразу отображаются у руководителя службы бортпроводников.
Компенсации
Если произошли неприятности по вине авиакомпании, то есть возможность прямо в приложении оформить компенсация для пассажира.
Накладные
Во время выполнения рейса экипаж расходует имущество авиакомпании. Его надо вовремя закупать, а для этого добавили возможность заполнять накладные в приложении.
Экипаж
Можно посмотреть, кто из коллег сегодня выполняет рейс, а старший бортпроводник может сменить позиции экипажа.
Чат
Добавили чат для общения с коллегами на борту или с наземными службами.
Виджет
Удобный виджет для быстрого доступа к важной информации.
Архитектура бэкенда
Основа бэкенда — PHP 7.4 с фреймворком Yii. Данные кэшируем с помощью Redis и храним в PostgreSQL. Всё это работает на сервере NGINX Unit. До конца 2024 года планируем переехать на PHP 8 или 8.1, чтобы повысить производительности и улучшить безопасность всей системы.
Также у нас есть унифицированные интеграции для работы со сторонними сервисами через REST API, включая Kafka REST и Kafka-коннекторы для надёжного обмена данными с удалёнными базами данных.
Отдельно поработали над безопасностью сервиса, чтобы данные компании были под надёжной защитой. Во-первых, всеми рабочими устройствами бортпроводников управляют с помощью системы MDM (Mobile Device Management). Если планшет потеряется, то его можно удалённо заблокировать и отформатировать.
Во-вторых, на каждом устройства установлен корпоративный VPN для шифрования всего канала связи. Кроме того, весь трафик проходит через серверы корпоративной службы безопасности, а авторизация и бэкенд стоят на инфраструктуре S7 Airlines и контролируется DPI-системой службы безопасности авиакомпании.
Для достижения 100-процентного SLA мы изначально разрабатывали сервис с большим потенциалом к масштабированию. Так, вся система работает в семи контейнерах в режиме Master-Slave в реальном времени, а каждый контейнер мониторятся системой Zabbix.
Самой важной задачей было обеспечить оффлайн-доступ к приложению. Для этого мы настроили синхронизацию по принципу диффов. Перед переходом приложения в оффлайн, сервер обеспечивает его всем объёмом данных, а после этого загружаются только изменения, чтобы не нагружать и так слабый канал связи и снизить затраты на передачу и обработку информации.
Архитектура iOS-приложения
Разработку iOS-приложения мы начали на Objective-C, но через некоторое время переехали на Swift. Это нам позволило улучшить качество кода и упростить поддержку. Для старого кода используем устаревшие архитектуру MVC, а все новые функции реализуем на MVVM. В процессе разработки в основном используем следующие фреймворки и библиотеки: SwiftKeychainWrapper, Swinject, Then, AFNetworking, Kingfisher, ReachabilitySwift, Alamofire, GRDB, SnapKit, Firebase и SwiftGen.
Также интегрировали в приложение следующие сервисы:
Продажи на борту. Пользователи могут получать доступ к данным продаж и управлять ими во время полёта.
Работа оффлайн. Чтобы любые операции с данными можно было осуществлять без подключения к сети.
API-интеграции. Например, для подключения к локальной сети на борту для обмена данными.
Архитектура Android-приложения
Приложения для Android разрабатывали на Kotlin, а архитектура основана на принципах Clean Architecture. Её основные компоненты включают Navigation, MVVM (частично MVI), Coroutines, Room, WorkManager и Services. С сетью работаем с помощью Retrofit, а зависимости внедряем через Koin. Дополнительно в проекте использовали Glide и Firebase.
Ещё в случае с Android-приложением пришлось поработать над оптимизацией. Дело в том, что iOS — унифицированная операционная система, а Android работает на множестве CPU, GPU и разных архитектурах. Чтобы всё работало быстро, применили подход Offline-first и минимизировали все блокирующие операции. Также оптимизировали карту салона и PDF-файлы, чтобы не было проблем с обработкой графики.
Что в итоге
Благодаря проделанной работе экипаж теперь эффективнее выполняет задачи. Вот некоторые показатели, которые удалось улучшить за пять лет разработки и две версии приложения:
Заполнение послерейсовых отчётов теперь занимает две минуты, а не час.
Сэкономили 60 тонн бумаги — хорошо для экипажа и экологии.
У бортпроводников всегда есть доступ к актуальной информации о рейсе, даже во время полёта.
Более 60% задач выполняются на планшете.
На 520 рейсах в день используется наш софт.
Каждый день оцифровываем 7,8 тыс. отчётов, а за всё время обработали 15 млн отчётов.
Система обслуживает около тысячи активных пользователей.