Как не надо работать с часовыми поясами или Аэрофлот-фэйл

    Решился я недавно на покупку билетов Аэрофлота. Затея сама по себе подозрительная, но я решил усугубить: скачал их мобильное приложение под андроид и купил все там. Заказал билет из Барселоны на 27 февраля, вылет в 23:45, и очень удивился, когда после оплаты мне на почту свалились билеты на 28 февраля с вылетом в 23:45 и прибытием 1-го марта. Как так, не мог же я так грубо ошибиться?

    Я провел раскопки, которые показали, что ошибка именно в мобильном приложении, поехали:

    image

    На руках у нас официальная версия, попробуем оформить еще один билет на те же даты, делая скриншот на каждом шаге. Выбираем даты, возвращение 27 февраля:

    image image

    С билетом ТУДА все в порядке, он оформляется без ошибок, проблема только с ОБРАТНО, и только для ночного рейса:

    image image

    Вот здесь уже начинается проблема, дата вылета внезапно становится 28 февраля в 23:45, прибытие тоже 28 но в 6 утра, прям машина времени! К сожалению, когда я покупал свои билеты, я это проморгал, и просто перешел в бронирование и оплату:

    image image

    Когда мы готовы оплатить билеты, мы видим корректную дату вылета ОБРАТНО — 27 февраля. О возможных проблемах говорит только цена билета, которая внезапно снизилась по сравнению с предыдущим шагом.

    Мы сейчас не будем это оплачивать, ведь все только ради эксперимента, поэтому закрываем данное окно и просто переходим в раздел «Мои бронирования», чтобы посмотреть, что именно на самом деле мы сейчас оплатим. Бронь уже сформирована и видна в списке как «UQSNTG:

    image image

    И вот здесь мы внезапно обнаруживаем, что дата вылета сдвинулась на сутки! Я это обнаружил уже после оплаты, по телефону Аэрофлот был готов менять дату только с комиссией (около 2500р за билет), предложили оставить претензию на сайте. Претензию конечно оставил, прошло 4 дня без какой либо реакции, но это и не удивительно: срок рассмотрения претензий 30 дней.

    Почему это вообще произошло? 27 февраля в Барселоне зимнее время, а в момент покупки билета — летнее. На одном из шагов покупки доблестные разработчики получают дополнительный час, и дата вылета прыгает на сутки (время вылета 23:45), после чего они подставляют к найденной дате время из расписания. Это также означает, что с 29 октября бага перестанет воспроизводиться, т.к. Барселона таки перейдет на зимнее время. Самый простой способ устранить ошибку, это конечно же запретить летнее время вообще, вероятно разработка Аэрофлота пойдет именно этим путем.

    Ошибка воспроизводится и на другие даты, например с вылетом 30 октября. Этот вылет менее чем через 2 недели, а срок рассмотрения претензии те же 30 дней. Ошибка воспроизводится только в мобильном приложении для Android, для iOS я не тестировал, на сайте Аэрофлота покупка проходит корректно.

    Для сомневающихся я записал видео с экрана моего телефона:



    Для особо сомневающихся — попробуйте купить такой билет самостоятельно в своем телефоне.
    Всем спасибо за внимание, я отдельно отпишу здесь о результатах рассмотрения моей претензии в Аэрофлоте.

    Важный апдейт: Компания Аэрофлот сегодня вышла на связь и изменила дату вылета Обратно без штрафов. Пообещали „работать над приложением“.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 77
    • +1
      Удалено
      • –29
        Вот именно поэтому не стоит делать покупки через мобильный, маленький экран, всё мелко, какие-то мелочи можно не увидеть. По итогу аэрофлот останется прав, а вы попали на 2500 рублей.
        • +24
          В момент перед самой оплатой билета их мобильное приложение показало правильные даты, которые я выбрал изначально. Это подразумевает, что нажимая кнопку оплатить, именно эти даты я и ожидаю увидеть в билете. Но не увидел, даты поменялись совершенно неожиданно для покупателя, и Аэрофлот тут однозначно не прав.
          И 6 дюймов — не такой уж и маленький :)
          • +3
            Да не парьтесь, все размеры хороши =)
          • +1
            чем он оказался прав?
            • +4

              Аэрофлот не прав, поскольку на разных экранах у него разные даты. Когда автор проверял (ну, допустим) подробности заказа, стояла ПРАВИЛЬНАЯ дата. Можно на это давить.
              Просто программисты сайта, видимо, знают, что с таймзонами нужно ОЧЕНЬ аккуратно обращаться, а программисты аппликейшена — к сожалению, нет.

              • –1

                Там дело не в экране было а в баге приложения. Хотя насчёт покупок через мобильный я всё равно согласен.

                • +5
                  ЗоЗПП с вами не согласится. Покупались билеты на одну дату, а получены на другую. Можно с чистой совестью расторгать договор (без каких-либо комиссий, само собой) и требовать неустойку за каждый день просрочки (плюс стандартный моральный ущерб).
                  • –10
                    Я же не говорю, что Аэрофлот прав. Естественно они должны всё возместить, т.к. явно ошибка в приложении и покупатель в этом не виноват. Но это Аэрофлот и Россия, здесь у человека нет прав, а только обязанности. Буду очень удивлён, если автору удастся выбить возврат.
                    С ЗоЗПП вы явно страной ошиблись.
                    • +6
                      Можете очень удивляться, мне бесплатно поменяли дату
                      • 0
                        В Аэрофлоте читают Хабр?)
                        • 0

                          Вряд ли это была реакция на статью, скорее успели обработать претензию.

                          • +1
                            Ну мне баллы бонусные по претензии тоже возмещали… да, не быстро, и затребовали сканы посадочных, хотя прекрасно же и так в своих системах все данные видят, но в итоге доначислили (а то автоматически только на 1 рейс из 6 начислили мили).
                        • 0
                          В колл-центре Аэрофлота вообще делают хорошие вещи, однако это не делает их стандартные правила дружественнее, а мобильные приложения и сайты — надёжнее и удобнее.
                        • +2
                          ЗоЗПП самый человечный закон в России. И не только в России. И один из немногих, которые реально работают.
                          • –3
                            Плохая идея ругать Россию из-за бугра. Тем более из Вашего бугра.
                            • +2
                              Какая разница какая страна проживания и какое гражданство при выражении личного мнения?
                        • +3

                          Современные тенденции дизайна заключаются в том, что на своем большом мониторе при разрешении 1920x1080 на большинстве сайтов видно столько же информации сколько на экране телефона.

                          • 0
                            Я испытываю некоторый дискомфорт от того, что у моего монитора разрешение 2560х1440, а у телефона — 3880x1440. При этом монитор 27", а телефон меньше 6".
                            • 0
                              Ну 4к телефон имеет смысл только для VR.
                              • 0
                                Телефон при этом еще и батарею сильнее жрет из-за большого разрешения…
                                • 0
                                  При этом в «youtube-тесте» у них итоговый аптайм примерно одинаковый от полной батарейки.
                                  • 0
                                    4K телефоны как правило можно переключать в обычный фулл-ХД режим
                            • 0
                              Андрей, а в этом номере бронирования вы все данные ввели фейковые? А то день рождения, email и телефон выглядят уж очень правдоподобными, в отличии от номера паспорта, как и номер участника аэрофлот бонус.
                              • 0
                                Все реальное я закрыл квадратиками в видео и на скринах, номер паспорта конечно же фейковый. Если я где-то не закрыл — напишите мне в личку.
                              • 0
                                Сталкивался с подобной ошибкой в сервисе FlixBus. Там в разных интерфейсах сайта время отображалось в разных часовых поясах. Что довольно опасно особенно для времени отправки. В моем случае она смещалась на час назад. А учитывая что я ожидал автобус на промежуточной станции и он задерживался я уж было подумал что он уехал час назад :) Сообщал в поддержку но спустя месяц проблему так и не исправили.
                                • +2
                                  Такое выносить только на публику. Тогда косяки правят чуть ли не на следующий день. Но если косяки связаны с банковскими приложениями(или там где «косяк» вызовет серьезные финансовые/репутационные потери), то стоит подстраховаться и сделать это анонимно.
                                  • +1
                                    Этот «косяк» тоже влечет вполне ощутимые репутационные потери.
                                    • 0

                                      Чего уж там аэрофлоту терять? :)

                                • 0
                                  Ошибка с датой бронирования была несколько дней на сайте Airbnb — даты в календаре были сдвинуты относительно дней недели на один день! Я бронировал на последние выходные месяца, поэтому можно было не заметить некорректные даты.

                                  На сайте испанских авиалиний Vueling была проблема интерфейса: селектор избранных пассажиров оставался активным после выбора пассажира на рейс, поэтому после скролла страницы вниз к оплате, менялись выбранные пассажиры — а на дальнейших шагах фамилии пассажиров не отображаются, только их кол-во — поэтому даже перепроверить перед оплатой не получилось. Таким образом я купил билеты не на свою жену, а на отца. Претензию компания никак не удовлетворила, поведения селектора не исправили, пришлось платить по-моему 50 евро за смену пассажира.
                                  • 0
                                    вообще немного странно: аэрофлот достаточно крупная компания и что бы у них там ничего не валилось дата должна храниться с нулевым смещением и локально приводиться во время запроса. сложно представить как у них там так получилось, если не допускать, конечно, наличия эпических размеров костылей в коде и архитектуре приложения.
                                    • +4
                                      Размер и известность компании влияют на качество программных продуктов чуть менее, чем никак. Неправильная дата в билете — это мелочь. Мне вот на днях одна известная страховка прислала полный пакет чужих документов с адресом, телефоном, паспортом и данными на машину. Клиент при регистрации на сайте по ошибке указал неправильный емейл (фамилии похожи). И это отнюдь не первый такой случай.
                                      • +1
                                        дело не в том, что компания большая и из-за этого там всё должно быть норм, а в том, что компания имеющая крупную сеть распределённых по миру отделений, просто должна выработать надёжный инструмент для синхронизации времени и даты.
                                        • +2
                                          Ну да, а компания, работающая с большим количеством персональных данных, просто обязана выбрать специалистов, способных обеспечить нормальную защиту этих данных. Но это только теоретически, а на практике, увы…
                                          • 0
                                            а в той страховой компании, когда регистрируешься, как подтверждается регистрация? Просто в большинстве сайтов это как раз делается при помощи электронной почты. Если страховая, который вы платите деньги и которая очень много о вас знает, регистрирует вас без подтверждения адресов, куда потом может выслать всякие документы-не-для-чужих, то я бы пересмотрел свои с этой компанией взаимоотношения (свалил нафиг). Но при этом, если при оформлении документов, нужно отдельно указывать адрес почты, куда отправлять результаты, тот тут компания не виновата, я бы тоже не стал делать проверку вводимого адреса — это исключительно ответственность клиента.
                                            Вы полностью уверены, что документы отправляются на адрес указанный при регистрации, без подтверждения этого адреса?
                                            • +1
                                              Я сам ничего не оформлял, так что не в курсе. Я знаю только, что незнакомый мне человек оформил страховку (судя по всему, на сайте), указал неправильный емейл и на этот адрес без всяких проверок были высланы все документы и одноразовый пароль для входа в кабинет. Я, кстати, потом позвонил этому клиенту (телефон-то в данных был) и объяснил, что с адресом надо быть аккуратнее.

                                              Правильность адреса надо проверять всегда, если речь идет о закрытой информации. Клиент может ошибиться, но это не повод отправлять его данные кому попало.

                                              PS Если интересно, можете сами попробовать, как подтверждается регистрация в этой компании — это РосГосСтрах, страна должна знать имена своих героев.
                                              • +1
                                                ну как… если клиента спросили, куда отправлять, а он и сказал, то как его проверить по вашему: сравнить с адресом из регистрации и спросить, не ошибся ли он, а потом спросить не ошибся ли он подтверждая первый раз… Если бы я был разрабом в этой конторе и мне бы поставили это в вину, я бы отмазался.
                                                ЗЫ Как раз хотел похвалить вас за отсутствие адресной антирекламы, но не успел))
                                                • +1
                                                  Можно придумать много разных способов. Например, дать клиенту адрес компании и предложить отправить туда запрос на документы. Или предложить зарегистрироваться на сайте и запросить документы из личного кабинета. Или, да, сначала отправить ему письмо с просьбой подтвердить адрес какой-то не слишком личной, но известной только клиенту информацией. Например, номером полиса.

                                                  Мне, если честно, трудно представить себе ситуацию, когда все оформляется только на бумаге, а документы нужно отправить на емейл, вписанный от руки. Но даже если такое случилось, адрес подтверждать нужно.

                                                  Исключением могут быть случаи, когда адрес используется только для неприватной информации (новости, скидки и т.п.), хотя и это не слишком правильно — подписывать на всякий мусор непричастного человека.
                                        • 0

                                          Маленькая компания, большая компания, известная и неизестная. А вот на мой ИНН налоговая перезаписала другого человека. Я даже случайно оплатил его налоги, а уже после заметил. Причем в ЛК были полностью все его паспортные данные, адрес и пр. На компании можно хоть как-то повлиять. А в госучереджении я исправлял последствия их ошибки больше года. Да и до сих пор не все могут исправить.

                                          • 0
                                            Заказывал как-то в СБ подробную выписку по счету за год. Через месяц почтой выписка пришла. Но не моя.
                                            • 0
                                              Размер влияет на вероятность того, что они с этим багом уже сталкивались. Грубо говоря, приложение лучше протестировано (пользователями), чем малоизвестные.
                                              • 0
                                                То, что бага появлялась у пользователей, ещё не гарантирует, что с ней сталкивались разработчики. А то обычно пользователь нарывается на какую-то багу, обращается в компанию, а там его либо вообще игнорируют или бюрократят, либо проблему разгребают в ручном режиме менеджеры или техподдержка, а разрабы о данном инциденте вообще не узнают.
                                                • 0
                                                  Мы говорим о вероятностях.

                                                  Грубый пример: пусть вероятность словить баг 1%, вероятность того, что юзер баг зарепортит — 1%, что пробьётся через бюрократию — 1% (числа с потолка). Итого вероятность прохождения всей цепочки — один на миллион. Если у компании миллионы пользователей — есть шанс, что баг будет исправлен. Если тысячи — практически нет.

                                                  Конечно, есть ещё много других вещей, влияющих на вероятность исправления, но «количество запусков» всё же очень значимо.
                                                  • +2
                                                    Ну тут ещё накладываются то, что большой размер компании сильно коррелирует с уровнем забюрократизированности, длинной цепочки, размазыванием ответственности и переусложнённостью процедуры создания фикса.

                                                    В маленькой компании менеджер, которому пожаловался клиент, может просто упомянуть о проблеме разработчику, столкнувшись с ним в столовой.
                                                    В большой же компании путешествие багрепорта от недовольного клиента до разработчика — это целый квест. И если процессы выстроены не очень хорошо (а так обычно и бывает), то далеко не все баги пройдут этот квест до финальных титров.

                                                    В больших компаниях, ориентированных на обслуживание большого потока клиентов, на первой линии поддержки часто сидят люди не разбирающиеся в тонкостях приложения, которых работодатель отнюдь не стимулирует тщательно вникать в каждую отдельную проблему. Их заставляют чётко отрабатывать скрипт общения и не задумываться лишний раз, дабы не тратить драгоценного рабочего времени. Поэтому если скрипт общения с клиентом прописан не очень хорошо, то многие жалобы будут либо блокироваться на этом уровне, либо неправильно маршрутизироваться.
                                            • 0
                                              Чаще всего с этим и есть проблемы что даты локально приводятся — многие телефоны тупо не обновляют базу часовых поясов по несколько лет. Правильное поведение — телефон отправляет местоположение а сервер сам вычисляет локальные даты и их присылает на клиент для отображения.
                                              • 0

                                                ИМХО правильное решение это две даты со временем:


                                                1. По Гринвичу.
                                                2. По выбранной авиакомпанией точке отсчёта.
                                                  И эта информация должна быть видна на всех экранах вплоть до оплаты.
                                            • 0
                                              последний раз пытался пользоваться мобильным приложением Аэрофлота 2 года назад. Вижу, что за два года мало что изменилось, все равно без глюков не могут
                                              • +1
                                                Статья «Заблуждения программистов относительно времени» будет актуальна всегда. А теперь ещё и с полом надо быть осторожным.
                                                • 0
                                                  Ага. Больная тема. Недавно бился над кодом на js, который в начале октября час в сутки падал на тестах.
                                                  При том, что я JS не знаю, а начало октября- не самое очевидное время для падения- было весело. Оказалось, что прокралась автралийская таймзона- там как раз на зиму переход уже был :D
                                                  • 0
                                                    в начале октября… прокралась автралийская таймзона… на зиму переход
                                                    Может, на лето?
                                                    • +1
                                                      Да, спасибо. На лето! Но с точки зрения той баги было без разницы- там просто брался «2 недели назад» с помощью вычитания 14*24*… милисекунд и после перевода часов час в сутки дата оказывалась не та. Билд релиза в этот час не шёл, а нужен он был срочно.

                                                      Почитал про часовые пояса в Австралии- это ж вообще трэш и угар. Мало того, что они (что логично) переводят время в противоположную (относительно Европы) сторону, так ещё у них не вся страна часы переводит, есть UTC +9:30 и (а, что вы делаете) UTC +8:45.
                                                  • 0

                                                    Это фигня, в телевещании в NTSC кадры в секундах "високосные". А еще веселуха, когда время перевода стрелок меняют (сидел в CNN правя баги в новом продукте, а мимо чуваки с рациями и матюками в серверную пробегают. Оказалось уже ночь, а в этот год как раз сдвинули правила перехода на летнее время)


                                                    Вобщем, после подобных вещей я апплодировал стоя закону об отмене ежегодного насилования часов. Жаль, что не везде по миру

                                                    • 0

                                                      Жаль что этот закон приняли со второй попытки, причем между попытками закончилась поддержка Windows XP

                                                      • 0
                                                        в ХР можно поставить кувейт или багдад
                                                    • 0
                                                      Так же влетал с «Победой», только не с датами а сменой направлений перелета.
                                                      С начала думал, что невнимателен, но еще 3-е знакомых влетели так же.
                                                      Причем последнего предупреждал, что подозрительно дешевые билеты, поэтому проверялось все тщательно до момента оплаты.
                                                      Билеты покупались в разных местах, на сайте «Победы» и в авиасейлс.

                                                      Вот так…
                                                      • 0

                                                        В прошлом году летели из Геленджика Победой. Выбираю дату — показывпет цену. Покупаю. Оказалось купил из Краснодара.
                                                        Если у Победы нет билетов на это число — то они подставляют ближайший аэропорт. Изза невнимательности пришлось ехать до Краснодара и оттуда уже лететь.

                                                      • +4

                                                        Тут вы из-за бага пострадали, а представьте себе ситуацию: вылет в 2:30, а в 3:00 переводят часы назад на 1 час (дата не меняется). Вылет в первые 2:30 или во вторые?

                                                        • 0
                                                          вылет в 23:30 UTC
                                                          • 0

                                                            Если я правильно помню, в билетах время вылета и прилёта ставится по местному.

                                                            • 0

                                                              Ну как раз пример же привели, когда "по местному" одно и то же время встречается дважды.

                                                              • 0
                                                                Не совсем — билет в посте _может_ быть корректно и однозначно выдан с датами прилёта/вылета по времени аэропортов (время и вылета, и прилёта — однозначное). Я же говорил про ещё худшую проблему — когда дважды встречающееся местное время фигурирует в самом билете. И этого нельзя избежать при текущих правилах выдачи билетов, разве что переделать их, как предложил Drakoninarius.
                                                                • 0

                                                                  Интересен реальный механизм решения данной проблемы, вроде логично сделать паузу на вылет в аэропортах, это позволит всем успеть, с другой стороны это решение может сломать график авиакомпаний.

                                                                  • 0

                                                                    Я думаю, авиакомпании знают заранее и свой график подстраивают...

                                                          • +1
                                                            Решение очевидно: в этот час (на самом деле в два часа) не летать совсем.
                                                            (Как у РЖД при переводе в одну сторону поезда тупо час стояли, а в другую — старались догнать расписание за ночь.)
                                                            • 0

                                                              Подозреваю, что так и делается. Криво, но это меньшее из зол.

                                                          • –1
                                                            Я как-то раз разбирался со шкалами времени… Пришёл к выводу, что в компьютере время надо учитывать в шкале TAI или TT, а к ширпотребному времени UTC (да ещё с поясами!) и обратно приводить при помощи подпрограмм конверсии из библиотеки SOFA (Standard of Fundamental Astronomy). Я, правда, немножко покурочил библиотеку, добавив автоматическое вычисление leap seconds из файла с EOP (Earth Orientation Parameters), но это уже мелочи. Это единственный, известный мне, способ корректно работать со временем.
                                                            • 0
                                                              Пару месяцев назад тоже покупал билет у Аэрофлота, решил не качать мобильное приложение и воспользоваться мобильной версией сайта. На поле «Дата Рождения» нельзя выбрать год, его можно только скролить и отсчёт идёт шел с 1900 =)
                                                              И под скролить я имею в виду по месяцам…
                                                              Писал им, ничего не ответили, пришлось качать приложение для покупки билета :|
                                                              • +1
                                                                А где-нибудь вообще что-нибудь нормально сделано?
                                                                Недавно пытался купить билет на сайте «Уральских авиалиний»: сайт упорно считал меня роботом на разных этапах, предлагал капчу и после правильного ввода отсылал на начало.

                                                                Купить удалось только зайдя туда с нетбука с Виндоуз: видимо, по их мнению, Линуксом пользуются только роботы и злые хакеры.

                                                                (Пару лет назад на сайте другой авиакомпании не было https.)
                                                                • 0
                                                                  А Аэрофлот подтвердил что билет действительно был не на ту дату?

                                                                  Не могло быть так, что дата правильная, а вот косяк просто в отображении а пликухе и в почтовом уведомлении?
                                                                  • 0
                                                                    Аэрофлот на 5-й день после претензии поменял мне даты билетов, и на 9-ый день прислали письмо, что проблема с мобильным приложением подтвердилась.
                                                                  • 0
                                                                    Подобная фигня была с KLM. Билеты пришли правильные, а вот на разных экранах были и разные даты и разное время.

                                                                    Но KLM гибкие ребята, я звонил в Амстердам по скайпу и по телефону решал вопрос.
                                                                    • 0

                                                                      Таких ляпов немало. Есть и другие варианты усложнения жизни.
                                                                      А было бы так просто отдельно выводить дату и время в UTC.
                                                                      Даже простое вроде как указание на местное время для клиента с другой стороны шарика иногда создаёт весёлые квесты.
                                                                      И в контексте Австралии все ещё веселее становится…

                                                                      • 0
                                                                        Знаете, вообще это очень обидный косяк со стороны компании. Достаточно представить ситуацию, когда ты в чужой стране и на последние деньги пытаешься попасть домой… Прям фу такими быть.
                                                                        • 0
                                                                          Ошибки то у всех бывают. Гораздо хуже когда компания отказывается признавать свои ошибки, не смотря на простой алгоритм выявления проблемы(и оперативно её решить). Это уже говорит что с данной фирмой что то не так.
                                                                        • 0
                                                                          Интересное видео про время и таймзоны. Очевидно, и Вы, и они попали как раз на все эти обычные для времени штуки :)
                                                                          The Problem with Time & Timezones — Computerphile
                                                                          youtu.be/-5wpm-gesOY
                                                                          • 0

                                                                            Дата и время вылета привязываются к UTC или к местному времени в аэропорту вылета? То есть если внезапно изменится часовой пояс, номинальное время вылета (которое пишут в билетах) останется прежним или тоже изменится?

                                                                            • –1
                                                                              Молодца! Так победим!

                                                                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.