Как я делал матчер правил возврата автобусных билетов, вызывая через API человека / Хабр
Мы тут автоматизируем автобусы, недавно вот с нашей помощью все билеты в России стали электронными. Рынок только-только хоть как-то приходит в ИТ, и там всё ещё очень много всего делается в амбарных книгах.
Расскажу про один простой эпизод автоматизации, который уже десятки лет назад пройден в авиации и на железной дороге, но только-только начался у нас. Итак, ситуация: есть примерно сотня разных информационных систем, которые присылают нам данные про автобусные рейсы. Это набор самописных автоматизаций разных перевозчиков и конкурирующих коммерческих продуктов. Каждая система имеет свой формат записи о том, как делается возврат билета на автобус. Чаще всего — человекочитаемая запись на русском языке, написанная для операторов и кассиров, но около 20% систем вообще не присылают данные о возврате в принципе.
Часть правил пересекаются, причём может быть несколько уровней вложенности: «Все билеты невозвратные, но на этом направлении туда возвращаем по 259-ФЗ, обратно — вот по этим условиям
Нам нужно показывать пассажиру условия возврата билета (возвратный, невозвратный, 100% возврат или нет, когда можно возвращать), использовать эти параметры для поиска, сравнения и, собственно, автоматизации возвратов.
Ну а мне нужно было понять, как несколько тысяч текстов на русском языке превратить в параметры билета, где хранить и как этим всем управлять.
Вот примеры:
Первое, что приходит в голову — это NLP-разбор. Чтобы научить нейросетевой движок NLP разбирать всё это, нужен набор правил, который сформирует корпус для обучения. Чтобы получить набор правил, нужно распарсить всё вручную и свести к неким наборам правил в едином формате.
Решение оказалось простым, как бревно. Правила возврата почти у всех не меняются годами, и в месяц приходит всего несколько новых строк. У нас есть отдел контента, который занимается тем, что собирает данные из разных источников — например, обзванивает автовокзалы, собирает данные об остановках и так далее.
Что-то из этого автоматизируется, что-то нет. То, что автоматизируется — покрывается скриптом и тестами и идёт в прод. То, что делается вручную, может быть упрощено тем, что в контент будут приходить уже подготовленные данные, то есть мы будем вызывать человека-оператора через некое API, содержащее типовую форму запроса.Распарсить всё вручную один раз и поддерживать изменения вручную оказалось дешевле, чем прикручивать и поддерживать автоматизацию, а потом следить за её правильностью. В итоге мы использовали сложные нейросети — непосредственно мозг операторов. И они показали очень высокую производительность.
Потом мы добавили хеширование правила по MD5 после очистки от нефункциональных пробелов и приведения к одному регистру — чтобы понимать, что оно поменялось. Если оно поменялось — автоматизация ставит задачу отделу контента, а отдел контента заносит новое правило в нашу систему.
Опять же, правильно использовать для хранения множества правил решения класса BRMS. Но у нас всё оказалось проще, всё множество правил свелось к вот таким матрицам:
В этой итерации решили на модификаторы забить. Во-первых, непонятно какие они бывают. Во-вторых — похоже, что они мало где используются. По крайней мере, до сих пор особой необходимости в них не возникало.
Превращается это вот в такой текст единого формата:
Поэтому мы их храним прямо в своей системе, управляющей параметрами билетов. То есть, по сути, просто добавляем в базу данных в каждый билет ссылку на правила его возврата от данной компании.
Вот так это стало выглядеть:
GDS — это источники, дальше идёт «схлопывание» рейсов (один и тот же рейс может прийти из разных источников с некоторыми изменениями, больше про этот ад есть вот здесь, например).
Вот так работает уровень матчера правил. Из каждого рейса достаётся правило возврата, по его хешу ищется соответствующее наше правило (разобранное в нужный нам вид), и если всё получилось, оно применяется:
Часто GDS не присылает для какого-то рейса правила возврата. В таком случае мы можем завести свои, «ручные», правила возврата. Например, можем применить стандартные, прописанные в федеральном законе. Кстати, что интересно, по идее, это должны быть минимальные условия для всех, но на практике они часто либо улучшаются, либо ухудшаются перевозчиками.
У перевозчиков могут быть локальные правила, как я приводил пример — «для всех рейсов так, но на рейсах Москва — Петербург — вот так». Специально для этого мы для «ручных» правил сделали параметр «приоритет». В итоге такое «ручное» правило возврата состоит из трёх частей: параметры, по которым мы понимаем, что это правило подходит (город отправления/прибытия, перевозчик, GDS), приоритет и результат (собственно, те самые интервалы с процентами удержания). Когда GDS отдаёт рейс без правил возврата, мы идём в базу с «ручными» правилами, выбираем все подходящие и берём то, у которого наибольший приоритет. Дальше рейс декорируется этими полученными правилами.
Вот так. Как я говорил, всё довольно просто, но таких ситуаций на рынке ещё море, потому что автобусный рынок только-только открывает электронные продажи, и там огромный зоопарк самописных решений, либо же вообще часто никакой автоматизации нет.
Ну а мы теперь создали единую базу правил возврата билетов для каждого известного нам официального автобусного рейса в России.
рейсов, ж/д, автобусов Туту.ру
Для правильного использования этого сайта вам необходимо включить javascript в вашем браузере!
Вы используете устаревший браузер . Пожалуйста обновите свой браузер, чтобы улучшить свой опыт.
Больше не нужно открывать десятки сайтов и приложений — в приложении Туту есть все, что нужно для путешествий
от Туту.ру
айфон iPad
БЕСПЛАТНО в App Store
О чем это?
Вам больше не нужно открывать десятки веб-сайтов и приложений — в приложении Туту есть все, что нужно для путешествий. Здесь можно купить билеты на поезд, самолет и автобус, а также снять недорогую гостиницу, хостел или квартиру. Без регистрации, за несколько минут.
Сведения о приложении
Версия
3.86.0
Рейтинг
Размер
221Mb
Жанр
Справочник по путешествиям
3 9 Январь, 4 0 9 0 0 0 0 9 0 0 0 0 4
Дата выпуска
27 ноября 2017 г.
Подробнее
Скриншоты приложения
Описание магазина приложений
Вам больше не нужно открывать десятки веб-сайтов и приложений — в приложении Туту есть все, что нужно для путешествий. Здесь можно купить билеты на поезд, самолет и автобус, а также снять недорогую гостиницу, хостел или квартиру. Без регистрации, за несколько минут.
Укажите пункт назначения и сравните цены на разные виды транспорта, чтобы выбрать лучший вариант. Сейчас в вашем телефоне:
Гостиницы и все виды размещения в России и мире. В приложении мы можем:
— Забронировать гостиницу, гостиницу, квартиру и другое жилье.
— Выберите подходящий отель в Москве, Санкт-Петербурге, Сочи, Калининграде, Казани, Анапе, Краснодаре, Симферополе, Адлере, Екатеринбурге, Нижнем Новгороде, Новосибирске и других городах России из более чем 100 тысяч вариантов.
— Получите поддержку от наших специалистов, не выходя из приложения.
Билеты на поезда и не только. В приложении вы можете:
— Читайте отзывы пассажиров, выбирайте и покупайте билеты на поезд онлайн.
— Узнать расписание поездов на полгода вперед.
— Выберите билет и сохраните его для себя, чтобы использовать позже.
— Купить билет на поезд «Сапсан», «Ласточка», «Стриж» и многие другие.
Авиабилеты проверенных перевозчиков. В приложении вы можете:
— Посмотреть актуальное расписание авиакомпаний.
— Купить дешевые авиабилеты быстро и легко.
— Купить билеты ведущих российских и зарубежных авиакомпаний: Аэрофлот, Победа, ЮТэйр, S7 Airlines, Уральские авиалинии и др.
Билеты на автобусы по России, СНГ и Европе от 5000 надежных перевозчиков. В приложении вы можете:
— Купить билеты на автобус онлайн и не стоять в очереди на автовокзале.
— Просмотр расписания автобусов по любому направлению.
— Приобретайте билеты на междугородние автобусы из Москвы, Санкт-Петербурга, Екатеринбурга, Ростова-на-Дону, Минска, Волгограда, Нижнего Новгорода, Симферополя и еще 10 тысяч городов.
— Узнайте маршрут автобуса и прочитайте отзывы пассажиров.
Туту.ру помогает путешественникам в отпуске, личных и деловых поездках с 2003 года.
Мы на связи круглосуточно. По всем вопросам звоните: 8 800 511-55-63 (звонки по России бесплатные) или пишите на [email protected]
Tutu.ru — туристический сервис №1 в России по версии Similarweb, 2020.
Путешествуйте с удовольствием!
Получите его БЕСПЛАТНО в App Store
Отказ от ответственности:
AppAdvice не владеет этим приложением и предоставляет только изображения и ссылки, содержащиеся в API поиска iTunes,
чтобы помочь нашим пользователям найти лучшие приложения для загрузки. Если вы являетесь разработчиком этого приложения и хотели бы
информация удалена, отправьте запрос на [email protected]
и ваша информация будет удалена.
124 Лучшие Альтернативы Туту.ру и Похожие Приложения для Android
Trip.com
9,0 10 000+
Trip.com 7.70.1 — приложение для Android Travel & Local, разработанное Trip.com. Изучите 200 альтернатив Trip.com. Получайте эксклюзивные туристические предложения и наслаждайтесь удостоенным наград обслуживанием клиентов!
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив Trip.com
Оподо
7,0 5 тыс.+
Opodo 4.589.0 — это приложение для Android Travel & Local, разработанное Opodo App. Изучите 200 альтернатив Opodo. Ищите, сравнивайте и бронируйте дешевые авиабилеты, отели и отдых. Лучшие предложения для путешествий!
Путешествия и местные
200 альтернатив Оподо
eDreams
8,0 10 000+
eDreams 4.589.0 — это приложение для Android, разработанное компанией eDreams App. Исследуйте 200 альтернатив eDreams. Ищите, сравнивайте и бронируйте дешевые авиабилеты, гостиницы и отдых. Лучшие предложения для путешествий!
Путешествия и местные
200 альтернатив eDreams
Экспедия
9.1 29 тыс.+
Expedia 23.5.0 — приложение для Android Travel & Local, разработанное Expedia. Изучите 200 альтернатив Expedia. Expedia входит в 10 лучших приложений для бронирования отелей, 10 лучших приложений по аренде автомобилей, 10 лучших приложений для покупки авиабилетов. Найдите дешевые предложения на авиабилеты, отели и аренду автомобилей, а также привилегии для путешествий.
Приложения для бронирования отелей Приложения для аренды автомобилей Путешествия и местное
ПОЛУЧИТЬ 200 альтернатив Expedia
Железнодорожный планировщик
6,6 701
Rail Planner 28. 0.0 – это приложение для карт и навигации для Android, разработанное Eurail B.V.. Исследуйте 200 альтернатив Rail Planner. Наслаждайтесь легким путешествием Interrail или Eurail с нашим автономным планировщиком поездок и расписанием.
Карты и навигация
ПОЛУЧИТЬ 200 альтернатив Rail Planner
Островок
9.2 7 тыс.+
Ostrovok 5.6.5 (0) – это приложение для Android Travel & Local, разработанное Emerging Travel Inc. Исследуйте 200 альтернатив Ostrovok. Ищите и бронируйте отели, апартаменты и хостелы по самым низким ценам!
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив Островку
FlixBus
9. 2 24 000+
FlixBus 9.0.6 — это приложение для Android Travel & Local, разработанное Flix SE. Изучите 200 альтернатив билетам FlixBus.Bus по непревзойденным ценам с маршрутами по США. Все на борт FlixBus!
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив FlixBus
Путешествия
8,8 1 тыс.+
Travelocity 23.5.0 — приложение для Android Travel & Local, разработанное Travelocity.com. Изучите 200 альтернатив Travelocity. Находите специальные предложения на рейсы и бронируйте отели с кодом APPONLY10 со скидкой 10%.
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив Travelocity
Трэвеллинк
8,9201
Travellink 4. 588.0 — это приложение для Android Travel & Local, разработанное Travellink Mobile. Изучите 200 альтернатив Travellink. Ищите, сравнивайте и бронируйте дешевые авиабилеты, отели и отдых. Лучшие предложения для путешествий!
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив Travellink
Омио
9,5 9К+
Omio 8.13.0 — это приложение для Android Travel & Local, разработанное Omio. Изучите 200 альтернатив Omio. Приложение для путешествий для бронирования билетов на поезда, автобусы и самолеты в Европе и США
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив Omio
Город.Путешествия
4. 6 112
City.Travel 1.8.524 — приложение для Android Travel & Local, разработанное CITYTRAVEL DMCC. Изучите 200 альтернатив City.Travel. Находите дешевые авиабилеты, бронируйте номера в отелях и авиабилеты онлайн. Путешествуйте так, как вы хотите!
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив City.Travel
Самолеты вживую
8,6 3К+
Planes Live 1.30.0 — это приложение для Android Travel & Local, разработанное Clime Weather Service. Исследуйте 200 альтернатив Planes Live. Отслеживайте статус рейса на карте радара и получайте информацию об аэропорте.
Путешествия и местные
ПОЛУЧИТЬ 200 альтернатив самолетам в прямом эфире
Почта
9. 2 235 тыс.+
Почта 14.54.0.40626 — приложение для общения на Android, разработанное Mail.Ru Group. Изучите 160 альтернатив почтовому клиенту Mail.Simple для вашего Android: поддерживает Mail.ru, Hotmail, Gmail и многое другое!
Связь Переадресация вызовов
ПОЛУЧИТЬ 160 альтернатив почте
Tripadvisor
8,8 95 тыс.+
Tripadvisor 51.0 — приложение для Android «Путешествия и места», разработанное Tripadvisor. Изучите 200 альтернатив Tripadvisor. Tripadvisor входит в 10 лучших приложений для бронирования отелей, обязательные приложения для путешествий по миру, обязательные приложения для поиска хорошего ресторана, 10 лучших приложений для вашей первой поездки в Индию.